Full Stack Blues: Udforskning af sårbarheder i MEAN Stack
Full stack-udvikling er i højsædet i disse dage, og med god grund: udviklere med både front-end webudviklingsfærdigheder og back-end/server-kodningsevner tilbyder helt klart væsentligt mere værdi til deres respektive organisationer. Evnen til at krydse hele stakken kompetent gør det også nemmere at interagere og samarbejde med drift og sikkerhed - et vigtigt princip i DevOps-kulturen.
Når det er sagt, kræver full stack-tilgangen - på trods af dens fordele - at udviklere gør kritiske overvejelser, som de ikke ville have gjort tidligere, især når det kommer til sikkerhed og test. Tidligere kunne dedikerede DBA'er eller systemadministratorer f.eks. have til opgave at validere databasesikkerhed eller hærde underliggende systemer. For full stack-udviklere er disse opgaver nu åbne spil - efterfølgende er et overordnet skift i tankegangen mod sikkerhed nødvendigt for sikker udvikling og levering af software kontinuerligt.
Dyb eksponering i alle lag af stakken sætter full stack-udviklere på forsædet for at opretholde applikationens sikkerhedsstilling. Det er derfor afgørende, at risici og sikkerhedsmæssige konsekvenser af hver enkelt teknologi forstås fuldt ud. Som et repræsentativt eksempel er MEAN-stakken en populær fuld stack-ramme, der er strømlinet til ydeevne: MongoDB, Express.JS, Angular.JS og Node.JS. Da alle lag i stakken er skrevet i JavaScript, behøver udviklere kun at skrive programkode - forside mod bagside, klient til server - i JavaScript. Og da disse udviklere nu også er på krogen for at levere sikre webapplikationer, skal de også adressere sårbarheder og validere alle lag af applikationen for sikkerhed. Men hvor sårbart er hvert lag over for at blive kompromitteret? Lad os tage et overfladisk kig inde i MEAN-stakken for at finde ud af det.
MongoDB
MongoDB er en JavaScript-venlig, dokumentorienteret NoSQL-database, der konkurrerer med folk som Cassandra og HBase. Generelt kan MongoDB til de fleste formål i vid udstrækning bruges på samme måde som MySQL. Tjek vores MongoDB vs. MySQL sammenligning for en komplet sammenligning af de to teknologier.
En almindelig misforståelse er, at MongoDB er immun over for SQL-injektionsangreb. Selvom det er rigtigt, at MongoDB ikke er modtagelig for misbrug af SQL-sprog, kan dets JSON-dokumenter stadig ændres for at opnå de samme ondsindede resultater. Desuden har MongoDB haft sin egen andel af sårbarheder - for eksempel giver en nyligt opdaget udbredt sårbarhed hackere mulighed for at gå ned i databaseapplikationen eksternt. Derudover afslører gennemgang af Common Vulnerabilities and Exposures (CVE)-databasen et væld af sikkerhedseksponeringer og sårbarheder for MongoDB.
Express.JS
Express.JS er en web- og mobilapplikationsramme på serversiden til Node.JS, svarende til hvad Ruby-on-Rails eller Sinatra er for Ruby-sproget. Rammen bygger på Node.JS til at levere standardkomponenter til at strømline udviklingen, og er faktisk den mest udbredte Node.js framework i dag. Desværre er rammen sårbar over for forskellige injektions- og cross-site-angreb og er modtagelig for alle Node.js's underliggende sårbarheder. Express.JS-webstedet vedligeholder en opdateret liste over sårbarheder og rettelser pr. version.
Angular.JS
Angular.js er udviklet og vedligeholdt af Google og er en front-end MVC-ramme, der muliggør modulær udvikling på klientsiden med minimal kode. Rammen er sårbar over for forskellige scripting-angreb på tværs af websteder - en komplet liste over Angular.js sårbarheder er tilgængelig på Mustache Securitys projekthjem på Google Code.
Node.JS
Det vigtigere og sværere spørgsmål er ikke hvorfor, men hvordan - det vil sige, hvordan kan virksomheder ikke bare overleve, men trives i et landskab af digitale trusler?
Node.js muliggør opbygning af webapplikationer med omfattende server- og netværksfunktioner og muliggør tovejskommunikation i realtid mellem klienten og serveren. Baseret på Googles V8 Javascript-motor er Node.js populær til at skabe HTTP-webservere på farten. Node.js er uden tvivl den definerende komponent i MEAN-stakken, og den er ikke uden sine egne sårbarheder - den arver ikke kun alle JavaScript-relaterede sårbarheder, men får også nogle nye angrebsvektorer, mens den udføres på serversiden. CVE-databasen indeholder også en omfattende liste over Node.JS sårbarheder.
Kort sagt kan full stack-udvikling være legemliggørelsen af DevOps, men det kræver ikke desto mindre streng overholdelse af sikker applikationsudviklingspraksis. MEAN-stakken, og enhver stak for den sags skyld - det være sig LAMP eller .NET - kræver ordentlig kontrol for at sikre, at sikkerheden bages i alle faser af udviklingen. Til dette formål leverer UpGuard omfattende sårbarhedsvurdering og overvågning af webapplikationer, databaser, servere - uanset hvilken stack der er i brug, kan vores platform scanne og validere hvert lag.
Kilder
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