La gravità della minaccia Log4Shell deriva da una combinazione di vari fattori di rischio. Analizziamo i più importanti:
1. La falla di sicurezza si trova nella libreria di logging
Una libreria di logging come Log4J a prima vista può sembrare relativamente innocua. Rispetto alle librerie per l’autenticazione o la crittografia, una libreria di logging è verosimilmente considerata in modo meno critico.
2. Java è uno strumento ampiamente diffuso
Un punto di forza di Java come linguaggio e ambiente è che funziona pressoché su tutte le piattaforme. La vulnerabilità Log4Shell colpisce quindi un’enorme quantità di programmi e servizi. Per di più, il linguaggio è parzialmente integrato all’interno dei sistemi embedded, quali router e dispositivi Internet of Things, tra cui sono inclusi, ad esempio, telecamere private e dispositivi smart home.
3. Sono coinvolte numerose tecnologie
Il problema relativo alla sicurezza dipende dalla concatenazione di diverse tecnologie. Anche semplicemente la combinazione di Log4J, JNDI, LDAP e sostituzioni di stringhe è in grado di creare la falla di sicurezza, aprendo la porta a possibili attacchi.
4. L’exploit si insinua in profondità
Se una falla colpisce solo il sistema vulnerabile, nel migliore dei casi il danno potrebbe rimanere localizzato. Tuttavia, ipotizziamo che una stringa di exploit venga ricevuta e registrata tramite un’interfaccia web. Probabilmente, la stringa di exploit sarà trasmessa ai sistemi sottostanti e si attiverà solo nel momento in cui verrà elaborata.
5. Le stringhe di exploit non sono facili da individuare
Data la complessità delle sostituzioni possibili, sono molti i modi per camuffare un codice dannoso. Per esempio, è possibile effettuare sostituzioni nidificate. Una stringa dalla forma ${${lower:j}ndi} non contiene direttamente la stringa jndi e non può essere filtrata automaticamente. La stringa ${jndi} viene quindi creata solo in fase di risoluzione. In più, è possibile offuscare parti del codice con la codifica Base64. Di conseguenza, la stringa ${base64:SGVsbG8gV29ybGQhCg==} verrà valutata come “Hello World!”.