Plug-in del compositore contro gli attacchi di confusione delle dipendenze
Questo articolo fornisce informazioni sul plug-in del compositore rilasciato per gli attacchi Dependency Confusion e raccomandazioni su come evitare l’errore. Il plug-in Composer è stato introdotto insieme alla versione 2.4.3 di Adobe Commerce per proteggere i commercianti di Adobe Commerce dagli attacchi di Dependency Confusion.
Descrizione description
Ambiente
Adobe Commerce 2.4.3 e versioni future (tutti i metodi di distribuzione)
Problema
È stato rilevato un possibile caso di attacco di tipo Confusione dipendenze attivo tramite almeno una delle dipendenze dirette o indirette definite in composer.json dal plug-in del compositore magento/composer-dependency-version-audit-plugin durante l'installazione o l'aggiornamento del compositore.
Passaggi da riprodurre:
Quando si installa/aggiorna il compositore, il plugin del compositore interrompe il processo se rileva un potenziale attacco di confusione della dipendenza. In tal caso, l'installazione o l'aggiornamento del compositore non riuscirà e verrà visualizzato un messaggio di errore simile al seguente:
È stata trovata una versione x.x.x del pacchetto/nome più alta corrispondente nell'archivio pubblico packagist.org rispetto a x.x.x in private.repo. È possibile che il pacchetto pubblico sia stato rilevato da un'entità dannosa. Esaminare e aggiornare i requisiti del pacchetto in modo che corrispondano alla versione dell'archivio privato.
Causa
L'attacco Dependency Confusion permette di eseguire in remoto codice arbitrario su un server ingannando un manager di dipendenza (ad esempio, il Compositore di PHP) per scaricare un pacchetto dannoso da una sorgente pubblica invece del pacchetto originale da un archivio privato.
Un attacco di questo tipo può anche non essere rilevato se l’autore dell’attacco è in grado di mantenere la funzionalità del pacchetto originale.
Gli aggressori possono sfruttare questa vulnerabilità se un pacchetto è disponibile solo tramite archivi privati, ma non è registrato in quello pubblico. L’autore dell’attacco carica quindi un pacchetto con lo stesso nome nell’archivio pubblico e gli assegna una versione superiore a quella disponibile privatamente. Il manager delle dipendenze confronta quindi le versioni dei pacchetti disponibili sia privatamente che pubblicamente e sceglie la più alta dall’archivio pubblico. Il codice dannoso scaricato dal gestore delle dipendenze verrà quindi eseguito con gli stessi privilegi del codice dell’applicazione.
Risoluzione resolution
Consigli agli esercenti
- Considera seriamente il messaggio di errore visualizzato quando il plug-in interrompe l’installazione o l’aggiornamento del compositore e, se riconosci il pacchetto potenzialmente compromesso, contatta lo sviluppatore dell’estensione.
- È comunque possibile installare Adobe Commerce con la versione sicura del pacchetto dal Marketplace o da un altro archivio privato attendibile.
- Modificare la versione del pacchetto richiesta in
composer.jsoncon la versione esatta trovata nel Marketplace per procedere con l'installazione/aggiornamento del compositore.
Aspettative degli sviluppatori di estensioni
- Non c’è modo di sapere con certezza se il pacchetto di un plug-in, se proveniente da un archivio pubblico, sia stato compromesso o meno. Il plug-in rileverà quando una versione pubblica di un pacchetto in packagist.org ha una versione più alta di quella disponibile da un repository privato come repo.magento.com. È consigliabile che gli sviluppatori di estensioni evitino tali situazioni e non pubblichino versioni più recenti di quelle disponibili tramite repo.magento.com.
- Adobe Commerce è consapevole del fatto che il processo di revisione del Marketplace può ritardare la disponibilità del rilascio delle estensioni, ma il processo serve a mantenere i commercianti al sicuro e ad aiutare gli sviluppatori di estensioni a trovare errori accidentali che potrebbero aver saltato.