CVE-2022-42889 Text4Shell: come individuare e correggere questa vulnerabilità di Apache Commons Text?

CVE-2022-42889 Text4Shell: una vulnerabilità legata all’esecuzione di codice in modalità remota che colpisce il software Apache Commons Text.

Il 13 ottobre 2022, la Apache Foundation ha pubblicato una vulnerabilità nel codice del progetto Apache Commons Text e ha pubblicato un messaggio nella mailing list del progetto.

Apache Commons Textx messaggio

Questa vulnerabilità è molto simile alla serie di CVE Log4Shell ed è stata contrassegnata con il codice CVE-2022-42889.

Apache Commons Text è un componente software utilizzato per manipolare le stringhe di caratteri, pubblicato dalla Apache Foundation.

Viene utilizzato per verificare se una stringa ne contiene un’altra o per creare messaggi da un formato preconfigurato.

Apache Commons Text è una libreria – utilizzata su scala molto più piccola – di Log4J: mentre una ricerca su GitHub ha restituito più di 300.000 risultati per Log4J, una ricerca su Apache Commons Text restituisce meno di 20.000 voci.

Come funziona la CVE-2022-42889?

Apache Commons Text durante la manipolazione di stringhe di caratteri consente di:

  • compiere operazioni complementari, al fine di recuperare valori da fonti complementari;
  • effettuare chiamate a sistemi di terze parti, tramite protocolli come DNS (domain name management system), oppure tramite chiamate URL o l’esecuzione di script.

La vulnerabilità CVE-2022-42889/Text4Shell consiste nell’iniettare malware su un software vulnerabile, che chiederà ad Apache Commons Text di recuperare un valore da una fonte di terze parti, con DNS, o tramite l’esecuzione di script. 

Tuttavia, in questo caso, Apache Commons Text non controlla i dati da elaborare per impostazione predefinita, il che significa che è possibile eseguire codice dannoso se non è stato implementato alcun filtro nel codice dell’applicazione vulnerabile.

Come attaccare un sistema con questa vulnerabilità?

Il modo più semplice in questo caso è chiamare direttamente il prefisso desiderato, secondo la documentazione, con i prefissi:

  • ·        dns: esegue la risoluzione DNS dalla variabile inviata;
  • ·        url: effettua una chiamata all’URL inserito;
  • ·        script: esegue uno script sulla destinazione nella JVM.

Un esempio di script di attacco è quindi:

${script:javascript:java.lang.Run.Runtime.getRuntime().exec("cat /etc/shadow");}

Un hacker può quindi chiedere a un’applicazione vulnerabile di visualizzare il contenuto di un file remoto o di effettuare chiamate a sistemi terzi.

Si noti che è assolutamente necessario riuscire ad iniettare il codice dannoso in una parte dell’applicazione che utilizza l’interpolazione di stringhe di caratteri, e che questa è quindi molto meno diffusa e banale rispetto ai noti attacchi a Log4J.

Text4Shell è quindi una vulnerabilità non necessariamente banale da sfruttare e che dipende molto dal contesto di utilizzo della libreria Apache Commons Text.

Quali sono i sistemi interessati dalla CVE-2022-42889?

Le versioni di Apache Commons Text dalla 1.5 alla 1.9 inclusa sono interessate dalla Text4Shell CVE-2022-42889

Apache consiglia di aggiornare Commons Text alla versione 1.10.0 per risolvere il problema.

Aggiornamento Apache Commons Text consigliato

Come verificare la presenza di Text4Shell su un server?

Cyberwatch consiglia di scansionare l’intero disco rigido alla ricerca di file JAR relativi ad Apache Commons Text.

Di seguito un esempio di script, non esaustivo:

POUR LINUX (Bash)
## Parcourir le disque à la recherche de JAR liés à Apache Commons Text
for line in $(find / -name \*.jar 2>&1 | grep commons-text)
do
  echo "DEBUG:potential apache commons text candidate on $line"
done
 
# POUR WINDOWS (PowerShell)
## Parcourir le disque à la recherche de JAR liés à Apache Commons Text
$jar = @()
$drives = Get-PSDrive -PSProvider 'FileSystem'
foreach($drive in $drives) {
  $jar += Get-ChildItem -Path $Drive.Root -File -ErrorAction SilentlyContinue -Force -Recurse -Filter '*.jar'
}
foreach($line in $jar) {
  if($line -match 'commons-text'){
    $path = $line.FullName
    Write-Output "DEBUG:Potential apache commons text candidate on '$path'"
  }
}

Un’analisi esauriente richiederà anche il monitoraggio di componenti di terze parti che potrebbero incorporare Apache Commons Text o lo studio del contenuto dei file WAR che incorporano versioni vulnerabili (in quest’ultimo caso è possibile utilizzare i comandi unzip e jar).

I clienti di Cyberwatch possono consultare la pagina CVE-2022-42889 nell’ enciclopedia delle vulnerabilità per scoprirne tutti i dettagli e visualizzare quali asset del proprio ambiente sono interessati.

Come neutralizzare questa vulnerabilità?

L’azione prioritaria è aggiornare Apache Commons Text alla versione 1.10.0, tramite i soliti gestori di pacchetti o tramite un download diretto.

Cyberwatch Vulnerability Manager è in grado di rilevare CVE-2022-42889 e può distribuire le patch di sicurezza quando si tratta di un pacchetto di distribuzione ufficiale. (Cyberwatch usa solo le patch ufficiali rilasciate dal vendor)

Articolo originale francese scritto da Maxime ALAY-EDDINE di Cyberwatch

Non esitate a chiederci una dimostrazione tramite la pagina dedicata selezionando nel campo Scegli la soluzione => Cyberwatch VM e CM.