Full Stack Blues: Utforska sårbarheter i MEAN Stack


Fullstack-utveckling är på modet nuförtiden, och av goda skäl: utvecklare med både front-end webbutvecklingsfärdigheter och back-end/server-kodningsförmåga erbjuder helt klart betydligt mer värde till sina respektive organisationer. Möjligheten att gå igenom hela stacken på ett kompetent sätt gör det också enklare att interagera och samarbeta med drift och säkerhet - en viktig grundsats i DevOps-kulturen.

Med det sagt kräver fullstack-metoden - trots dess fördelar - att utvecklare gör kritiska överväganden som de inte skulle ha gjort tidigare, särskilt när det gäller säkerhet och testning. Tidigare kunde till exempel dedikerade DBA:er eller systemadministratörer ha till uppgift att validera databassäkerhet eller härda underliggande system. För fullstack-utvecklare är dessa uppgifter nu öppna - följaktligen är det nödvändigt med en övergripande förändring i tankesättet mot säkerhet för att kontinuerligt utveckla och leverera programvara på ett säkert sätt.

Att ha djup exponering i alla lager av stacken sätter fullstackutvecklare i framsätet för att upprätthålla applikationens säkerhetsställning. Det är därför viktigt att riskerna och säkerhetskonsekvenserna av varje ingående teknik är helt förstådda. Som ett representativt exempel är MEAN-stacken ett populärt ramverk för full stack som är strömlinjeformat för prestanda: MongoDB, Express.JS, Angular.JS och Node.JS. Eftersom alla lager i stacken är skrivna i JavaScript behöver utvecklare bara skriva programkod - framifrån och bak, från klient till server - i JavaScript. Och eftersom dessa utvecklare nu också är på kroken för att leverera säkra webbapplikationer, måste de också ta itu med sårbarheter och validera alla lager i applikationen för säkerhet. Men hur sårbart är varje lager för att komprometteras? Låt oss ta en hastig titt inuti MEAN-stacken för att ta reda på det.

MongoDB (på engelska)

MongoDB är en JavaScript-vänlig, dokumentorienterad NoSQL-databas som konkurrerar med sådana som Cassandra och HBase. I allmänhet, för de flesta ändamål, kan MongoDB i stort sett användas på samma sätt som MySQL. Kolla in vår jämförelse mellan MongoDB och MySQL för en fullständig jämförelse av de två teknikerna.

En vanlig missuppfattning är att MongoDB är immun mot attacker av SQL-injektionstyp. Även om det är sant att MongoDB inte är mottagligt för missbruk av SQL-språk, kan dess JSON-dokument fortfarande ändras för att uppnå samma skadliga resultat. Dessutom har MongoDB haft sin egen andel av sårbarheter - till exempel ger en nyligen upptäckt utbredd sårbarhet hackare möjlighet att krascha databasapplikationen på distans. Dessutom avslöjar en genomläsning av CVE-databasen (Common Vulnerabilities and Exposures) en mängd säkerhetsexponeringar och sårbarheter för MongoDB.

Express.JS

Express.JS är ett ramverk för webb- och mobilapplikationer på serversidan för Node.JS, liknande vad Ruby-on-Rails eller Sinatra är för Ruby-språket. Ramverket bygger på Node.JS att tillhandahålla standardkomponenter för att effektivisera utvecklingen, och är i själva verket det mest använda Node.js ramverket idag. Tyvärr är ramverket sårbart för olika injektions- och cross-site-attacker och är mottagligt för alla Node.js:s underliggande sårbarheter. Den Express.JS webbplatsen har en uppdaterad lista över sårbarheter och korrigeringar per version.

Angular.JS

Angular.js är utvecklat och underhållet av Google och är ett frontend-MVC-ramverk som möjliggör modulär utveckling på klientsidan med minimal kod. Ramverket är sårbart för olika serveröverskridande skriptattacker - en fullständig lista över Angular.js sårbarheter finns tillgänglig på Mustache Securitys projekthem på Google Code.

Node.JS

Den viktigare och svårare frågan är inte varför, utan hur - det vill säga hur kan företag inte bara överleva, utan frodas i ett landskap av digitala hot?

Node.js gör det möjligt att bygga webbapplikationer med omfattande server- och nätverksfunktioner och möjliggör tvåvägskommunikation i realtid mellan klient och server. Baserat på Googles V8 Javascript-motor är Node.js populär för att skapa HTTP-webbservrar i farten. Förmodligen den definierande komponenten i MEAN-stacken, Node.js är inte utan sina egna sårbarheter - den ärver inte bara alla JavaScript-relaterade sårbarheter, utan får också några nya attackvektorer när den körs på serversidan. CVE-databasen innehåller också en omfattande lista över Node.JS sårbarheter.

Kort sagt, fullstackutveckling kan vara förkroppsligandet av DevOps, men det kräver ändå strikt efterlevnad av säkra applikationsutvecklingsmetoder. MEAN-stacken, och alla stackar för den delen - oavsett om det är LAMP eller .NET - kräver ordentliga kontroller för att säkerställa att säkerheten är inbyggd i alla utvecklingsfaser. För detta ändamål tillhandahåller UpGuard omfattande sårbarhetsbedömning och övervakning för webbapplikationer, databaser, servrar - oavsett vilken stack som används kan vår plattform skanna och validera varje lager.

Källor

https://blog.websecurify.com/2014/08/hacking-nodejs-and-mongodb.html

https://www.cvedetails.com/product/22804/Nodejs-Nodejs.html?vendor_id=12113

https://code.google.com/archive/p/mustache-security/wikis/AngularJS.wiki

https://expressjs.com/en/advanced/security-updates.html

https://web.archive.org/web/20160518123231/http://blog.fortinet.com/post/widespread-mongodb-denial-of-service-vulnerability-discovered