Ricerca nel sito web

Full Stack Blues: Esplorazione delle vulnerabilità nello stack MEAN


Lo sviluppo full stack è di gran moda al giorno d'oggi, e per una buona ragione: gli sviluppatori con competenze di sviluppo web front-end e abilità di codifica back-end/server offrono chiaramente un valore sostanzialmente maggiore alle rispettive organizzazioni. La capacità di attraversare l'intero stack con competenza rende inoltre più semplice l'interazione e la cooperazione con le operazioni e la sicurezza, un principio chiave della cultura DevOps.

Detto questo, l'approccio full stack, nonostante i suoi meriti, richiede agli sviluppatori di fare considerazioni critiche che in precedenza non avrebbero fatto, soprattutto quando si tratta di sicurezza e test. Ad esempio, in passato gli amministratori di database o di sistema dedicati potevano essere incaricati di convalidare la sicurezza del database o di rafforzare i sistemi sottostanti. Per gli sviluppatori full stack, queste attività sono ora aperte e di conseguenza, è necessario un cambiamento generale di mentalità verso la sicurezza per sviluppare e distribuire software in modo sicuro e continuo.

Avere un'esposizione approfondita a tutti i livelli dello stack mette gli sviluppatori full stack in prima linea per mantenere il livello di sicurezza dell'applicazione. È quindi fondamentale che i rischi e le implicazioni per la sicurezza di ciascuna tecnologia costituente siano pienamente compresi. Come esempio rappresentativo, lo stack MEAN è un popolare framework full stack ottimizzato per le prestazioni: MongoDB, Express.JS, Angular.JS e Node.JS. Poiché tutti i livelli dello stack sono scritti in JavaScript, gli sviluppatori devono solo scrivere il codice dell'applicazione, dall'inizio alla fine, dal client al server, in JavaScript. E poiché questi sviluppatori sono ora anche in grado di fornire applicazioni Web sicure, devono anche affrontare le vulnerabilità e convalidare tutti i livelli dell'applicazione per la sicurezza. Ma quanto è vulnerabile ogni livello alla compromissione? Diamo un'occhiata superficiale all'interno dello stack MEAN per scoprirlo.

MongoDB

MongoDB è un database NoSQL orientato ai documenti compatibile con JavaScript e che compete con artisti del calibro di Cassandra e HBase. In generale, per la maggior parte degli scopi, MongoDB può essere utilizzato in gran parte allo stesso modo di MySQL. Dai un'occhiata al nostro confronto tra MongoDB e MySQL per un confronto completo tra le due tecnologie.

Un malinteso comune è che MongoDB sia immune agli attacchi di tipo SQL injection. Sebbene sia vero che MongoDB non è suscettibile agli abusi del linguaggio SQL, i suoi documenti JSON possono comunque essere modificati per ottenere gli stessi risultati dannosi. Inoltre, MongoDB ha avuto la sua parte di vulnerabilità: ad esempio, una vulnerabilità diffusa scoperta di recente offre agli hacker la possibilità di mandare in crash l'applicazione del database da remoto. Inoltre, l'analisi del database CVE (Common Vulnerabilities and Exposures) rivela una serie di esposizioni e vulnerabilità di sicurezza per MongoDB.

Express.JS

Express.JS è un framework di applicazioni web e mobili lato server per Node.JS, simile a quello che Ruby-on-Rails o Sinatra sono per il linguaggio Ruby. Il framework si basa su Node.JS per fornire componenti standard per semplificare lo sviluppo ed è infatti il framework Node.js più utilizzato oggi. Sfortunatamente, il framework è vulnerabile a vari attacchi injection e cross-site ed è suscettibile a tutte le vulnerabilità sottostanti di Node.js. Il sito Express.JS mantiene un elenco aggiornato di vulnerabilità e correzioni per versione.

Angular.JS

Sviluppato e gestito da Google, Angular.js è un framework MVC front-end che consente lo sviluppo modulare lato client con un codice minimo. Il framework è vulnerabile a vari attacchi di cross-site scripting: un elenco completo di Angular.js vulnerabilità è disponibile nella home page del progetto di Mustache Security su Google Code.

Node.JS

La domanda più importante e difficile non è perché, ma come, ovvero come possono le aziende non solo sopravvivere, ma prosperare in un panorama di minacce digitali?

Node.js consente la creazione di applicazioni Web con funzionalità di rete e lato server estese e consente comunicazioni bidirezionali in tempo reale tra client e server. Basato sul motore Javascript V8 di Google, Node.js è popolare per la creazione di server web HTTP al volo. Probabilmente il componente che definisce lo stack MEAN, Node.js non è privo di vulnerabilità: non solo eredita tutte le vulnerabilità relative a JavaScript, ma ottiene anche alcuni nuovi vettori di attacco durante l'esecuzione sul lato server. Il database CVE ospita anche un elenco completo di Node.JS vulnerabilità.

In breve, lo sviluppo full stack può essere l'incarnazione di DevOps, ma richiede comunque una stretta aderenza alle pratiche di sviluppo delle applicazioni sicure. Lo stack MEAN e qualsiasi altro stack, sia esso LAMP o .NET, richiede controlli adeguati per garantire che la sicurezza sia integrata in tutte le fasi dello sviluppo. A tal fine, UpGuard fornisce una valutazione e un monitoraggio completi delle vulnerabilità per applicazioni web, database e server: indipendentemente dallo stack in uso, la nostra piattaforma è in grado di scansionare e convalidare ogni livello.

Fonti

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

Articoli correlati