- Cos’è Java?
- Perché Java è stato inizialmente creato?
- I principali framework Java e le loro minacce alla sicurezza:
- Struts
- Spring MVC
- Google Web Toolkit (GWT)
- Hibernate
- OWASP ESAPI
- Java Server Faces (JSF)
- JSP
- Vulnerabilità della sicurezza Java
- Vulnerabilità di sicurezza Java ad alto rischio:
- Securing your Java
Cos’è Java?
Originariamente rilasciato nel maggio 1995, Java è il linguaggio di programmazione più popolare al mondo con oltre il 95% di tutti i desktop aziendali che utilizzano Java. Jave è progettato per permettere agli sviluppatori di “scrivere una volta, eseguire ovunque” (WORA), il che significa che il codice scritto in Java è in grado di funzionare su tutte le piattaforme con supporto Java senza bisogno di ulteriori ricompilazioni.
Java è un linguaggio di programmazione generale concorrente, basato su classi e orientato agli oggetti che è celebrato per essere veloce, sicuro e affidabile e può essere trovato ovunque, dai siti web più popolari ai dispositivi mobili e dalle console di gioco ai centri dati aziendali e oltre. Rilasciato sotto la GNU General Public License, Java è scaricabile gratuitamente.
Java è influenzato da numerosi linguaggi di programmazione tra cui C++, C#, Eiffel, Mesa, Modula-3, Objective-C e altri e ha giocato un ruolo importante nello sviluppo di molti linguaggi di programmazione popolari come Groovy, Hack, Haxe, Kotlin, PHP, Python, Scala e altri. In tutto il mondo, ci sono oltre 9 milioni di sviluppatori Java che, se si unissero e formassero un paese, sarebbero il 95° paese più grande del mondo per popolazione, o, se creassero una città, sarebbe il 20° più grande del mondo.
Perché Java è stato inizialmente creato?
Nei primi anni ’90, estendere la potenza del calcolo in rete alla vita quotidiana era considerata una visione radicale e un gruppo di ingegneri della Sun Microsystem, noto come il “Green Team”, guidato da James Gosling, cercò di realizzare questa visione inaugurando la prossima ondata nell’informatica attraverso l’unione di dispositivi consumer e computer con la creazione di Java. Questo team di ingegneri Sun era leggermente in anticipo sui tempi, in quanto i loro sforzi si concentravano inizialmente sulla televisione interattiva e il linguaggio di questo progetto era originariamente chiamato Oak, come l’albero fuori dall’ufficio di Gosling, prima di essere rinominato in Java dopo il caffè Java.
Mentre Java era in anticipo quando si trattava di televisione interattiva, è emerso nello stesso momento in cui Internet stava iniziando a decollare ed era un abbinamento perfetto per questa tecnologia emergente. Nel 1995 fu annunciato che il browser internet Netscape Navigator avrebbe incorporato la tecnologia Java e da allora i principali browser web hanno incorporato la capacità di eseguire applet Java.
Come la maggior parte dei linguaggi di codifica, lo sviluppo di Java è stato guidato da una serie di principi che hanno influenzato la creazione e il continuo sviluppo di Java:
- Deve essere “semplice, orientato agli oggetti e familiare”.
- Deve essere “robusto e sicuro”.
- Deve essere “indipendente dall’architettura e portatile”.
- Deve essere eseguito con “alte prestazioni”.
- Deve essere “interpretato, threaded e dinamico”.
I principali framework Java e le loro minacce alla sicurezza:
Struts
Struts è un framework open-source gratuito e basato su azioni, Model-view-controller (MVC) usato per sviluppare applicazioni web Java EE. Rilasciato nel maggio 2000, Struts è stato scritto da Craig McClanahan e donato alla Apache Foundation, l’obiettivo principale dietro Struts è la separazione del modello (logica dell’applicazione che interagisce con un database) dalla vista (pagine HTML presentate al client) e il controller (istanza che passa le informazioni tra vista e modello).
Una delle maggiori preoccupazioni per la sicurezza delle applicazioni costruite usando Struts è l’esecuzione di codice remoto. Nel 2010, Struts2, un popolare framework Struts è stato scaricato oltre 1 milione di volte da oltre 18.000 organizzazioni e includeva una classe unica di debolezza che permetteva
a parti malintenzionate di eseguire codice arbitrario su qualsiasi applicazione web Struts2.
Spring MVC
Spring MVC è un framework per applicazioni Spring scritto dagli sviluppatori Spring come risposta a quelli che vedevano come difetti di progettazione in altri framework popolari, come la separazione insufficiente tra i livelli di presentazione e di gestione delle richieste, e tra il livello di gestione delle richieste e il modello. Come Struts, Spring MVC è anche un framework basato su azioni. Nel 2011, Spring MVC, insieme a Struts, è stato considerato una delle librerie vulnerabili più scaricate a causa di CVE-2012-3451, questa versione è stata scaricata oltre 18 milioni di volte tra il 2011-2012 da oltre 43.000 organizzazioni
Google Web Toolkit (GWT)
Come un set di strumenti open source che permettono agli sviluppatori di creare e mantenere complesse applicazioni front-end JavaScript in Java, Google Web Toolkit (GWT) è gratuito e utilizzato sia da Google che da migliaia di sviluppatori in tutto il mondo. GWT è stato progettato per permettere lo sviluppo produttivo di applicazioni web ad alte prestazioni senza che il programmatore debba avere una conoscenza avanzata delle stranezze del browser, XMLHttpRequest e JavaScript. A causa del fatto che GWT produce codice JavaScript, le applicazioni GWT devono essere protette contro tutte le minacce che affrontano le applicazioni JavaScript.
Hibernate
Hibernate ORM, conosciuto semplicemente come Hibernate, è un framework di mappatura oggetti-relazionale per il linguaggio Java. Progettato per la mappatura delle classi Java alle tabelle del database e la mappatura dai tipi di dati Java ai tipi di dati SQL. Le applicazioni che contengono Hibernate possono essere minacciate da iniezioni SQL se le query SQL, o HQL, sono generate dalla concatenazione di stringhe. Un modo per proteggersi da queste è l’uso di parametri nominati in qualsiasi SQL o HQL.
OWASP ESAPI
OWASP ESAPI, l’OWASP Enterprise Security API, è una libreria gratuita, open source, di controllo della sicurezza delle applicazioni web che rende più semplice per gli sviluppatori scrivere applicazioni a basso rischio mentre le librerie ESAPI sono progettate per rendere più facile per i programmatori aggiungere retroattivamente la sicurezza nelle applicazioni esistenti.
Java Server Faces (JSF)
Formalizzato come standard attraverso il Java Community Process, Java Server Faces (JSF) è una specifica Java per costruire interfacce utente basate su componenti per applicazioni web. Secondo OWASP “JSF non implementa il proprio modello di sicurezza, ma si basa sulla sicurezza standard JEE. Questo significa che sia il modello di sicurezza dell’application server, JAAS o altre implementazioni ACL possono essere utilizzate con il framework JSF senza alcuno sforzo di integrazione”. Una preoccupazione per la sicurezza delle applicazioni che implementano JSF è il controllo degli accessi e i problemi di autorizzazione.
JSP
JavaServer Pages (JSP) è costruito sopra l’API Servlet e permette l’incorporazione di codice Java che viene compilato e poi eseguito quando viene ricevuta una richiesta. Una minaccia comune al codice JSP è il cross-site scripting (XSS).
Vulnerabilità della sicurezza Java
Mentre la piattaforma Java include numerose caratteristiche progettate per migliorare la sicurezza delle applicazioni Java, è fondamentale per gli sviluppatori assicurarsi che il loro codice Java sia privo di vulnerabilità nelle prime fasi del ciclo di vita dello sviluppo del software. Evitare gli errori di sicurezza di Java come non limitare l’accesso alle classi e alle variabili, non finalizzare le classi, fare affidamento sugli scoop dei pacchetti e altri è il miglior punto di partenza per rendere sicuro il codice Java, è anche importante per gli sviluppatori familiarizzare con le minacce di sicurezza comuni che affrontano il codice Java, così come i framework Java. Per ulteriori informazioni sulla sicurezza del codice Java durante lo sviluppo, leggi 9 errori di sicurezza che ogni sviluppatore Java deve evitare qui.
Vulnerabilità di sicurezza Java ad alto rischio:
Con oltre il 95% di tutti i desktop aziendali nel mondo che utilizzano Java, ci sono gravi conseguenze quando le vulnerabilità nel codice Java arrivano alla produzione e vengono sfruttate da parti malintenzionate. La seguente è una lista di alcune delle minacce ad alto rischio per le applicazioni scritte in Java:
- Iniezioni di codice
- Iniezioni di comandi
- Iniezione di stringhe di connessione
- Iniezione diLDAP
- Reflected XSS
- Resource Injection
- Second Order SQL Injection
- SQL Injection
- Stored XSS
- XPath Injection
Securing your Java
CxSAST di Checkmarx, una soluzione di analisi statica del codice, si distingue tra le soluzioni di test Java non solo come la soluzione che manterrà il vostro codice Java libero da problemi di sicurezza e conformità, ma anche come lo strumento che contribuirà al progresso della vostra organizzazione quando si tratta di maturità della sicurezza delle applicazioni.
CxSAST funziona con gli strumenti che i vostri sviluppatori stanno già utilizzando, poiché si integra perfettamente con la maggior parte dei programmi di sviluppo comuni disponibili in ogni fase dell’SDLC. Le caratteristiche di CxSAST come la scansione incrementale del codice e la migliore posizione di correzione lo rendono ideale per qualsiasi ambiente di sviluppo continuo di integrazione continua (CICD).
Quando le vulnerabilità vengono rilevate nel codice Java, CxSAST non solo identificherà la migliore posizione di correzione, ma offrirà anche risorse allo sviluppatore per capire come funziona il vettore di attacco, nonché consigli di rimedio che li aiuteranno a garantire che simili errori siano evitati in futuro.