È stata identificata una vulnerabilità in Composer che compromette il repository PHP di Packagist

Pochi giorni fa si è diffusa la notizia che è stata identificata una vulnerabilità critica en il gestore delle dipendenze di Compositore (CVE-2021-29472) che consente di eseguire comandi arbitrari sul sistema durante l'elaborazione di un pacchetto con un valore URL appositamente formato che determina la direzione per scaricare il codice sorgente.

Il problema si manifesta nei componenti GitDriver, SvnDriver e HgDriver utilizzato con i sistemi di controllo del codice sorgente Git, Subversion e Mercurial. La vulnerabilità è stata risolta nelle versioni Composer 1.10.22 e 2.0.13.

In particolare, il repository di pacchetti Packagist predefinito di Composer, che contiene 306.000 pacchetti per sviluppatori PHP e offre oltre 1.400 miliardi di download al mese, è particolarmente interessato.

Nell'ecosistema PHP, Composer è lo strumento principale per la gestione e l'installazione delle dipendenze software. I team di sviluppo di tutto il mondo lo utilizzano per semplificare il processo di aggiornamento e garantire che le applicazioni vengano eseguite senza sforzo in tutti gli ambienti e le versioni.

L'esperimento ha mostrato che se c'erano informazioni sul problema, gli aggressori potevano prendere il controllo dell'infrastruttura Packagist e intercettare le credenziali dei manutentori o reindirizzare il download dei pacchetti a un server di terze parti, organizzando la consegna delle varianti del pacchetto con modifiche. utenti malintenzionati per sostituire una backdoor durante l'installazione delle dipendenze.

Il pericolo per gli utenti finali è limitato a causa del fatto che il contenuto di composer.json è solitamente definito dall'utente e i collegamenti alla fonte vengono passati quando si accede a repository di terze parti, che di solito sono affidabili. Il colpo principale è caduto sul repository Packagist.org e sul servizio Private Packagist, che chiama Composer con il trasferimento dei dati ricevuti dagli utenti. Gli aggressori possono eseguire il proprio codice sui server Packagist rilasciando un pacchetto appositamente predisposto.

Il team di Packagist ha risolto la vulnerabilità entro 12 ore dalla notifica di vulnerabilità. I ricercatori hanno informato privatamente gli sviluppatori di Packagist il 22 aprile e il problema è stato risolto lo stesso giorno. Un aggiornamento pubblico di Composer con una correzione per la vulnerabilità è stato rilasciato il 27 aprile e i dettagli sono stati rivelati il ​​28 aprile. Un controllo dei log sui server di Packagist non ha rivelato alcuna attività sospetta associata alla vulnerabilità.

Gli errori di inserimento di argomenti sono una classe di errori davvero interessante che viene spesso trascurata durante le revisioni del codice e completamente trascurata nelle interazioni della scatola nera.

Il problema è causato da un errore nel codice di convalida dell'URL nel file root composer.json e nei collegamenti per il download del codice sorgente. Il bug è presente nel codice da novembre 2011. Packagist utilizza livelli speciali per gestire i download del codice senza essere vincolato a uno specifico sistema di controllo del codice sorgente, che viene eseguito chiamando "fromShellCommandline" con argomenti della riga di comando.

Il cuore del problema è che il metodo ProcessExecutor ha consentito di specificare eventuali parametri di chiamata aggiuntivi nell'URL. Tale fuga mancava nei driver GitDriver.php, SvnDriver.php e HgDriver.php. L'attacco GitDriver.php è stato ostacolato dal fatto che il comando "git ls-remote" non supportava la specifica di argomenti aggiuntivi dopo il percorso.

Un attacco a HgDriver.php è stato possibile passando il parametro "–config" all'utility "hq", che permette di organizzare l'esecuzione di qualsiasi comando manipolando la configurazione "alias.identify".

Inviando un pacchetto di prova con un URL simile a Packagist, i ricercatori si sono assicurati che, dopo la sua pubblicazione, il loro server avesse ricevuto una richiesta HTTP da uno dei server Packagist su AWS che conteneva un elenco dei file nella directory corrente.

Va notato che i manutentori non hanno identificato alcun segno di precedente sfruttamento di questa vulnerabilità nell'istanza pubblica del packagist.

Infine, se sei interessato a saperne di più, puoi consultare i dettagli nel seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.