Gli amministratori del repository di pacchetti Packagist hanno rivelato dettagli su un attacco che ha portato al controllo delle credenziali di mantenitori di 14 librerie PHP, tra cui pacchetti popolari come instantiator (526 milioni di installazioni totali, 8 milioni di installazioni al mese, 323 pacchetti dipendenti), sql-formatter (94 milioni di installazioni totali, 800 mila al mese, 109 pacchetti dipendenti), doctrine-cache-bundle (73 milioni di installazioni totali, 500 mila al mese, 348 pacchetti dipendenti) e rcode-detector-decoder (20 milioni di installazioni totali, 400 mila al mese, 66 pacchetti dipendenti).
Dopo la compromissione degli account, l'attaccante ha modificato il file composer.json, aggiungendo nel campo della descrizione del progetto informazioni sul fatto che sta cercando un lavoro nel campo della sicurezza informatica. Per apportare la modifica al file composer.json, l'attaccante ha sostituito gli URL dei repository originali con link a fork modificati (in Packagist vengono forniti solo i metadati con i link ai progetti sviluppati su GitHub; durante l'installazione con il comando «composer install» o «composer update», i pacchetti vengono scaricati direttamente da GitHub). Ad esempio, per il pacchetto acmephp, il repository associato è stato cambiato da acmephp/acmephp a neskafe3v1/acmephp.
A quanto pare, l'attacco non è stato eseguito per scopi malevoli, ma come dimostrazione dell'assoluta inaccettabilità di un uso disinvolto di credenziali ripetute su diversi siti. Tuttavia, l'attaccante, contrariamente alla prassi consolidata degli "hacker etici", non ha informato in anticipo sviluppatori di librerie e amministratori del repository riguardo all'esperimento in corso. In seguito, l'attaccante ha dichiarato che, una volta ottenuto un lavoro, pubblicherà un rapporto dettagliato sui metodi utilizzati nell'attacco.
Dai dati pubblicati dagli amministratori di Packagist, risulta che tutte le credenziali che gestivano i pacchetti compromessi utilizzavano password facilmente individuabili senza attivare l'autenticazione a due fattori. Si sostiene che le password delle credenziali compromesse siano state riutilizzate non solo su Packagist, ma anche su altri servizi, le cui banche dati di password erano state precedentemente compromesse e rese pubbliche. Un'altra modalità di accesso potrebbe essere stata attraverso il furto di email dei proprietari delle credenziali, collegate a domini scaduti.
Pacchetti compromessi:
- acmephp/acmephp (124.860 installazioni in totale)
- acmephp/core (419.258)
- acmephp/ssl (531.692)
- doctrine/doctrine-cache-bundle (73.490.057)
- doctrine/doctrine-module (5.516.721)
- doctrine/doctrine-mongo-odm-module (516.441)
- doctrine/doctrine-orm-module (5.103.306)
- doctrine/instantiator (526.809.061)
- growthbook/growthbook (97.568
- jdorn/file-system-cache (32.660)
- jdorn/sql-formatter (94.593.846)
- khanamiryan/qrcode-detector-decoder (20.421.500)
- object-calisthenics/phpcs-calisthenics-rules (2.196.380)
- tga/simhash-php, tgalopin/simhashphp (30.555)
Fonte: opennet.ru
