Discussione Articolo Text4Shell, bug critico nella libreria Apache Commons Text

Stato
Discussione chiusa ad ulteriori risposte.

0xbro

Super Moderatore
24 Febbraio 2017
4,461
179
3,763
1,825
Sulla scia di Log4Shell e Spring4Shell, è stata scoperta da poco Text4Shell, la nuova remote command execution che impatta la libreria Apache Commons Text e permette di eseguire codice arbitrario.​
cdn-1666260375164-png.66027

Text4Shell, nuova RCE nella libreria Apache Commons Text​

Tempo di lettura stimato: 6 min​




Alvaro Munoz, noto ricercatore di sicurezza informatica, ha recentemente scoperto una nuova vulnerabilità nella libreria Apache Commons Text che permette di eseguire codice arbitrario, classificata con la CVE-2022-42889 e soprannominata comunemente Text4Shell (vista la similitudine con le precedenti Log4Shell e Spring4Shell).​


La vulnerabilità ha ottenuto uno score di 9,8 (su un massimo di 10 - scopri come calcolare la gravità di una vulnerabilità informatica) e consente di eseguire codice arbitrario, ma nonostante ciò la probabilità che venga exploitata, se messa a paragone con Log4Shell, è molto più bassa. Ciò è dovuto al fatto che è molto più raro che venga parsato tramite questa libreria dell'input passato direttamente dall'utente.

"The vulnerable StringSubstitutor (ref) interpolator is considerably less widely used than the vulnerable string substitution in Log4j and the nature of such an interpolator means that getting crafted input to the vulnerable object is less likely than merely interacting with such a crafted string as in Log4Shell” spiegano i ricercatori di Rapid7 all'interno del loro articolo (CVE-2022-42889: Keep Calm and Stop Saying "4Shell") riguardo tale vulnerabilità. Fare hype attorno a queste falle è controproducente, non serve a nulla, se non a creare caos e inutili allarmismi. La natura stessa della vulnerabilità mostra come, a differenza di Log4Shell, è raro che un'applicazione utilizzi il componente vulnerabile di Commons Text per elaborare input non attendibili e potenzialmente dannosi.

La stesso team di security dell'Apache foundation conferma quanto già stato detto (ref):
“This issue is different from Log4Shell (CVE-2021-44228) because in Log4Shell, string interpolation was possible from the log message body, which commonly contains untrusted input. In the Apache Common Text issue, the relevant method is explicitly intended and clearly documented to perform string interpolation, so it is much less likely that applications would inadvertently pass in untrusted input without proper validation”.


Le versioni di Apache Common Text impattate dal bug vanno dalla 1.5 alla 1.9, per cui per rimediare la vulnerabilità è sufficiente aggiornare la libreria alla versione 1.10, già rilasciata assieme alla responsible disclosure di Alvaro.

Per il dettaglio tecnico della falla, Alvaro dice:
“The Apache Commons Text code appears to be based on the Log4j code, as both of them enable interpolation of multiple Lookup sources. Log4j enabled JNDI lookups [while] Apache Commons Text and Apache Commons Configuration allows script lookups. [...] The StringSubstitutor when used with the default interpolators (StringSubstitutor.createInterpolator()) will perform string lookups that may lead to arbitrary code execution. [...] In particular, if untrusted data flows into the StringSubstitutor.replace() or StringSubstitutor.replaceIn() methods, an attacker will be able to use the ScriptStringLookup to trigger arbitrary code execution.”
Dai PoC creati ad hoc per testare questa CVE si può evincere effettivamente la similitudine tra Log4Shell e Text4Shell:
cdn-1666265742341-png.66029

Gli sviluppatori del progetto Apache inoltre aggiungono (ref):
“These lookups are: – “script” – execute expressions using the JVM script execution engine (javax.script) – “dns” – resolve dns records – “url” – load values from urls, including from remote servers Applications using the interpolation defaults in the affected versions may be vulnerable to remote code execution or unintentional contact with remote servers if untrusted configuration values are used".


Ulteriori risorse​




Made with ❤ for Inforge

 
Una cosa non ho capito, dato che Apache è un cross-platform tool, e quindi compatibile con ogni OS, è possibile che l'exploit sia mitigato dal fatto che magari Apache stia girando su un target che ha un OS di uso meno comune, come Macintosh?
 
Una cosa non ho capito, dato che Apache è un cross-platform tool, e quindi compatibile con ogni OS, è possibile che l'exploit sia mitigato dal fatto che magari Apache stia girando su un target che ha un OS di uso meno comune, come Macintosh?
No, da quel che ho capito non in questo caso, il problema risiede proprio nel parser di Apache Commons Text che è comune per tutte le piattaforme. L'unica differenza sarebbe nel payload da utilizzare per eseguire codice (non ricordo se su Mac, Chromebook e simili sia presente netcat di default), però poco cambia, la vulnerabilità è presente ovunque, è solo necessario fare altre azioni.
Poi suppongo che questa libreria sia utilizzata principalmente su apparati server, per cui credo che le casistiche più comuni siano OS windows e linux, però mai dire mai ahah
 
  • Mi piace
Reazioni: Netcat
No, da quel che ho capito non in questo caso, il problema risiede proprio nel parser di Apache Commons Text che è comune per tutte le piattaforme. L'unica differenza sarebbe nel payload da utilizzare per eseguire codice (non ricordo se su Mac, Chromebook e simili sia presente netcat di default), però poco cambia, la vulnerabilità è presente ovunque, è solo necessario fare altre azioni.
Poi suppongo che questa libreria sia utilizzata principalmente su apparati server, per cui credo che le casistiche più comuni siano OS windows e linux, però mai dire mai ahah
Netcat ci sta sempre di default, il punto è che non è il netcat tradizionale, in questo che è installato manca la flag -e, --exec, che è quella che fa fare la reverse shell, nel caso la reverse credo di possa fare sempre con bash vero?
 
  • Mi piace
Reazioni: Netcat
Netcat ci sta sempre di default, il punto è che non è il netcat tradizionale, in questo che è installato manca la flag -e, --exec, che è quella che fa fare la reverse shell, nel caso la reverse credo di possa fare sempre con bash vero?
Sì esatto, nei casi più standard sì, altrimenti ti scarichi direttamente una reverse shell compilata e la esegui, o ancora meglio installi una webshell (se c'è Apache ci sarà anche un web server con un sito, credo)
 
Come ci si poteva aspettare, sono stati rilevati dei tentativi di exploitation "in the wild" di questa vulnerabilità:
 
Stato
Discussione chiusa ad ulteriori risposte.