Categorie
Tech

Log4j qualcosa si è mosso per risolvere i bug

Tempo di lettura: 3 minuti. Naked Security diffonde un tutorial per scoprire se si è vulnerabili e come provare a risolverli

Tempo di lettura: 3 minuti.

Log4j è uno dei numerosi progetti software della Apache Software Foundation (più di 350 al momento) ed è una libreria di programmazione che i programmatori Java possono utilizzare per gestire i file di log nei loro prodotti.

I file di log sono una parte vitale dello sviluppo, del debug, della registrazione, del monitoraggio dei programmi e, in molti settori industriali, della conformità alle normative.

Purtroppo, non tutto il testo registrato, anche se inviato da un utente esterno, ad esempio come nome utente in un modulo di login, viene trattato alla lettera.

Se si indicava il proprio nome come MYNAME, veniva registrato proprio così, come stringa di testo MYNAME, ma qualsiasi testo racchiuso in caratteri ${…} veniva trattato come un comando da eseguire per il logger, che poteva causare la cosiddetta RCE, abbreviazione di remote code execution.

Recentemente abbiamo assistito a un bug simile, chiamato Follina, che ha colpito Microsoft Windows.

In quel caso, i caratteri problematici erano $(…), con parentesi tonde che sostituivano quelle grigie, ma con lo stesso tipo di effetto collaterale.

Nel bug di Follina, un URL che conteneva un nome di directory con la stringa SOMETEXT veniva trattato esattamente come era stato scritto, ma qualsiasi testo avvolto in $(…) veniva eseguito come un comando Powershell, causando ancora una volta un rischio di esecuzione di codice remoto.

Altri problemi con le parentesi

Il bug CVE-2022-33980, che non ha ancora un nome accattivante, è un errore molto simile nel toolkit Apache Commons Configuration.

Il nome è un po’ impegnativo: Apache Commons è un altro progetto Apache che fornisce numerose utility Java (sottoprogetti, se volete) che forniscono un’ampia gamma di pratici strumenti di programmazione.

Uno di questi è Commons Configuration, che consente alle applicazioni Java di lavorare con file di configurazione di una vasta gamma di formati diversi, tra cui XML, INI, plist e molti altri.

Come dice il progetto stesso, “la libreria software Commons Configuration fornisce un’interfaccia di configurazione generica che consente a un’applicazione Java di leggere i dati di configurazione da una varietà di fonti“.

Sfortunatamente, anche questo software tratta il testo avvolto in ${…} in modo speciale.

Invece di usare il testo letteralmente, avviene la seguente “rielaborazione” speciale, definita in modo piuttosto confuso nel gergo come interpolazione:

  • ${script:STRING} esegue STRING come script Java e utilizza l’output del codice.
  • ${dns:STRING} cerca STRING usando il DNS.
  • ${url:STRING} legge l’URL STRING e da lì recupera il testo da utilizzare.
  • In altre parole, i dati di configurazione intrappolati potrebbero, in teoria, essere usati per eseguire codice dannoso, per far trapelare i dati tramite le ricerche DNS o per recuperare le impostazioni di configurazione da un sito web illegale.

Cosa fare?

Secondo il team di Commons Configuration, questo bug di “interpolazione” è stato introdotto nella versione 2.4 (rilasciata alla fine del 2018) e corretto nella versione 2.8.0 (rilasciata il 2022-07-05, ovvero martedì di questa settimana).

Tutti gli aggiornamenti che risalgono alla versione 2.2 del 2017 sono elencati come “minor release”, quindi si presume che l’aggiornamento da una qualsiasi delle versioni vulnerabili 2.4, 2.5, 2.6 o 2.7 alla versione più recente non dovrebbe essere controverso.

Quindi, se avete del software Java che utilizza la libreria Apache Commons Configuration, aggiornate il prima possibile!

Oh, e se siete programmatori…

…che la chiamiate “sostituzione di comandi”, “riscrittura dal vivo”, “rielaborazione” o “interpolazione”, usatela con parsimonia e non attivatela di default per i dati di cui non abbiate già verificato l’attendibilità.

Sono vulnerabile?

Un modo rapido per verificare la presenza di una libreria Commons Configuration potenzialmente vulnerabile su un computer è quello di cercare nomi di file della forma commons-configuration2-*.jar, dove * è un carattere jolly che indica “qualsiasi testo consentito qui”.

Su Linux/Unix, provare:

$ find / -type f -name ‘commons-configuration2-*.jar’
Su Windows, provare:

DIR C:\commons-configuration2-*.jar /S
Le versioni vulnerabili hanno i nomi:

commons-configuration2-2.4.jar
commons-configuration2-2.5.jar
commons-configuration2-2.6.jar
commons-configurazione2-2.7.jar
Le versioni precedenti o successive non presentano il bug.

L’ultima versione patchata è:

commons-configuration2-2.8.0.jar

Se si trovano file con nomi come questo:

commons-configuration-1.9.jar
… si tratta della vecchia versione (versione 1) della libreria, che non presenta questo bug.


FONTE: https://nakedsecurity.sophos.com/2022/07/08/apache-commons-configuration-toolkit-patches-log4shell-like-bug/

Pronto a supportare l'informazione libera?

Iscriviti alla nostra newsletter // Seguici gratuitamente su Google News
Exit mobile version