Una nuova vulnerabilità è emersa nel software sviluppato dalla fondazione; anche in questo caso la violazione è di tipo RCE ed è stata per questo battezzata in modo simile alla precedente (log4shell) con riferimento alla libreria ora responsabile del trasporto di tale problema: dunque text4shell in riferimento al pacchetto Apache Commons Text.
La vulnerabilità è critica, con un punteggio CVSS 9.8, ed è stata classificata come CVE-2022-42889. Si riferisce a versioni dei pacchetti di Apache Commons Text dalla versione 1.5 alla versione 1.9.
Il difetto consente ad un attore di minaccia di sfruttare il processo di espansione dinamica delle proprietà di cui Apache Commons Text è capace per innescare l’esecuzione di codice non previsto o il contatto con server remoti (al minimo) non attendibili (per non dire di peggio).
Ancora una volta dunque (come fu per Log4J con Log4Shell) colpevoli della debolezza software riscontrata sono la capacità di espansione dinamica dei parametri. Con espressioni come “${prefix:name}”, dove prefix indica l’istanza capace di eseguire la sostituzione dinamica, anche pacchetto Apache Commons Text consente così di ottenere differenti manipolazioni dinamiche del testo. Ad esempio, con prefissi derivanti da org.apache.commons.text.lookup.StringLookup è possibile eseguire delle ricerche in differenti campi (es. con “dns” si possono risolvere record DNS, con “url” carica valori da un URL anche remoto); ma la libreria consente anche (con il prefisso “script”) di eseguire espressioni mediante la componente javax.script, cosa che apre la porta appunto alla RCE. Il pacchetto consente quindi interpolazioni molto complesse e queste hanno dimostrato tutta la loro debolezza.
Naturalmente questo è solo l’inizio della catena di attacco, ovvero l’occasione: è del tutto evidente che a questa debbano succedere altre condizioni: quindi non solo la presenza di espressioni di interpolazione, ma anche un input esterno per queste e soprattutto l’assenza di controlli, whitelist o altro vincolo di sicurezza su questo.
Tutte questi accorgimenti vanno considerate mitigazioni da applicare a programmi che non possano alterare l’elenco delle dipendenze delle componenti software, ma è del tutto evidente che la via maestra è poter aggiornare Apache Commons Text alla versione 1.10 per risolvere questo rischio. Attenzione però. Molto spesso non sarà il nostro programma a volere direttamente questa libreria, ma altre componenti, parte della catena di dipendenze: pertanto potrebbe essere molto facile esporsi inconsapevolmente a questa minaccia non comprendendo fino in fondo di essere sotto minaccia, in quanto ignari dell’uso di tale libreria da parte del nostro software.