Domenica il server
git.php.net è stato violato con
l'inserimento di codice maligno dannoso in due commit, firmati con i nomi dei due sviluppatori e manutentori del server, Rasmus Lerdorf e Nikita Popov. L'intento era quello di scatenare un attacco alla supply chain con una tecnica molto simile a quella impiegata con
Solar Winds: infettare decine di migliaia di server. PHP, infatti, è il linguaggio di programmazione lato server
usato nel 79 percento dei siti web online in tutto il mondo.
Però questa volta è andata male. Può essere che l'attacco sia stato meno raffinato di quello contro Solar Winds. Oppure che dopo quanto accaduto l'attenzione sia comprensibilmente più alta verso qualsiasi minima modifica del codice. Sta di fatto che i commit dannosi sono stati inseriti con il pretesto del "fix typo", ossia cercando di farli passare come secondarie correzioni tipografiche.
Invece che lasciare passare inosservata la modifica, i responsabili hanno controllato per bene. Secondo la ricostruzione dei colleghi di BleepingComputer, si è scoperto che la linea 370 che era stata aggiunta chiamava la funzione zend_eval_
string. Si tratta di un
codice che installa una backdoor in modo da poter eseguire facilmente del codice da remoto (RCE) su qualunque sito web fosse stato importato il codice rimaneggiato.
Nikita Popov ha scoperto il primo commit un paio d'ore dopo che è era stato creato. Era firmato come se fosse stato generato dall'altro gestore del sito, Rasmus Lerdorf e la riga di codice eseguiva codice PHP dall'interno dell'intestazione HTTP
useragent, se la stringa iniziava con "zerodium". Quest'ultimo è il nome di un'azienda di cybersecurity del tutto estranea ai fatti.
Gli insegnamenti di questo incidente
Tutto si è concluso per il meglio. Tuttavia questo episodio è l'ennesima riconferma di quanto sia semplice firmare un commit a nome di qualcun altro e caricarlo su un server Git remoto. Alla luce dell'accaduto i gestori di
server git.php.net hanno
annunciato il
trasferimento di tutto il materiale su GitHub perché "
mantenere la nostra infrastruttura Git è un rischio non necessario", ha
scritto Popov in un post ufficiale.
Il cambio di rotta comporta che d'ora in poi tutti coloro che sono interessati a contribuire al progetto PHP dovranno essere registrati su GitHub, il che comporta
l'attivazione dell'autenticazione a due fattori (2FA) sul proprio account GitHub.
In ogni caso quanto accaduto è meritevole di indagini, che sono tuttora in corso. Quello che c'è da capire è se la pubblicazione del codice malevolo sia avvenuta a seguito di una compromissione del server oppure dell'account Git di una delle persone autorizzate. Intanto i programmatori stanno passando al setaccio ogni riga di codice per sincerarsi che i due commit scoperti domenica siano gli unici malevoli presenti e che non sia stato distribuito alcun codice dannoso in precedenza.
Il rischio sembrerebbe scongiurato dal fatto che le modifiche riguardavano lo sviluppo di PHP 8.1, che dovrebbe essere rilasciato alla fine dell'anno.