Gli amministratori del repository di pacchetti Packagist hanno rivelato notizie su un attacco che ha compromesso il controllo di account di mantenimento di 14 librerie PHP, tra cui pacchetti popolari come instantiator (526 milioni di installazioni totali, 8 milioni 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 su di lui in cerca di lavoro nel campo della sicurezza informatica. Per apportare questa 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 modificato da acmephp/acmephp a neskafe3v1/acmephp.
A quanto pare, l'attacco non è stato effettuato per compiere azioni malevole, ma come dimostrazione dell'inadeguatezza di un uso disinvolto delle credenziali ripetute su diversi siti. L'attaccante, però, a differenza della prassi consolidata degli "hacketici etici", non ha avvertito in anticipo gli sviluppatori delle librerie e gli amministratori del repository riguardo all'esperimento in corso. Successivamente, l'attaccante ha dichiarato che, una volta ottenuto un lavoro, pubblicherà un rapporto dettagliato sui metodi utilizzati nell'attacco.
Secondo i dati pubblicati dagli amministratori di Packagist, tutte le account che gestivano i pacchetti compromessi utilizzavano password facilmente indovinabili senza abilitare l'autenticazione a due fattori. Si sostiene che nelle account violate siano state utilizzate password utilizzate non solo in Packagist, ma anche in altri servizi, le cui banche dati di password erano state precedentemente compromesse e rese pubbliche. Un'opzione per ottenere accesso potrebbe anche essere stata l'acquisizione dell'email dei proprietari degli account, che erano collegate a domini scaduti.
Pacchetti compromessi:
- acmephp/acmephp (124.860 installazioni totali)
- 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
