100.000 installazioni di Maven a rischio compromissione.


Apache Maven è uno strumento per la gestione dei progetti software basati su Java e build automation. Per funzionalità è similare ad Apache Ant, ma basato su concetti differenti. Può essere usato anche in progetti scritti in C#, Ruby, Scala e altri linguaggi.


L'ultima versione di Maven, la 3.8.1, contiene una correzione della vulnerabilità di sicurezza CVE-2021-26291 (Severity 9.1) che è stata rilevata e segnalata dal ricercatore Jonathan Leitschuh, la quale colpisce oltre 100.000 installazioni, secondo i team di ricerca di WhiteSource.



La vulnerabilità (seguita dalla PoC realizzata da Cédric Champeau), potrebbe provocare un attacco di man-in-the-middle (MitM) causato dal POM (l'unità di lavoro fondamentale in Maven, un file XML che contiene informazioni sul progetto) in Maven Central con repository personalizzati che fanno riferimento a un URL su HTTP, anziché su HTTPS.


Una delle tante configurazioni nei file pom.xml è un elenco di dipendenze che devono essere risolte.


Maven li gestisce nel seguente ordine:

  1. Verificando i file settings.xml (Globale e Utente) per qualsiasi configurazione di sistema e/o utente;

  2. Verifica se il pacchetto esiste nel repository locale, una directory sulla macchina che esegue Maven;

  3. Verifica se il pacchetto viene trovato, l'impostazione predefinita successiva è controllare il Maven Central Repository;

  4. Se Maven Central non è disponibile, il prossimo posto da controllare sarà un repository interno o esterno che può essere raggiunto e scaricato tramite HTTP. Ciò include qualsiasi risorsa privata dei manutentori, come i propri server o macchine: qui sta il problema.

Jonathan aveva precedentemente svolto ricerche in quest'area e aveva scoperto che migliaia di progetti OSS basati su Gradle e Maven si affidavano a HTTP anziché a HTTPS per risolvere le loro dipendenze.


Il rischio

L'utilizzo di HTTP invece di HTTPS potrebbe potenzialmente portare a un attacco man-in-the-middle. Un attacco MitM si verifica quando gli aggressori si inseriscono nelle reti degli utenti sfruttando le connessioni non sicure per accedere ad informazioni private e manometterle.


Ad esempio, quando utilizzi il wifi della tua caffetteria, se la connessione tra il tuo dispositivo e il server non è sicura, un aggressore MitM potrebbe nascondersi lì per poter intercettare informazioni utili.


Gli aggressori potrebbero sfruttare il problema di Maven, inserendosi nella rete degli utenti, per interrompere e fallire la connessioni al Maven Central Repository, causando un downgrade in HTTP. Inoltre potrebbero inserire dei pacchetti dannosi per eseguire il proprio codice sul computer dell'utente durante lo sviluppo e persino nell'ambiente dell'applicazione.