Traduzione in Google Translate del post del forum francese:
Un ricercatore di pseudo-sicurezza ha recuperato un vecchio repository Git per un plugin utilizzato dal forum e lo ha dirottato per visualizzare semplicemente questo messaggio.
Il repository in questione (GitHub - discoursehosting/discourse-migratepassword: A touch of security) è stato ispezionato e non è presente codice dannoso (è semplicemente una prova di concetto).
Questo repository aveva effettivamente cambiato il suo URL (ora è disponibile su GitHub - communiteq/discourse-migratepassword: Support migrated password hashes) e l’utente ha semplicemente ricreato il repository discoursehosting/discourse-migratepassword, che in precedenza reindirizzava a communiteq/discourse-migratepassword, per inserire lì codice non correlato. Stavamo utilizzando il vecchio URL, motivo per cui siamo stati interessati.
Se è vero, okay… Ho cambiato l’URL del plugin in communiteq e al momento sto ricostruendo. Ma devo approfondire (dato che non sono un programmatore, non posso essere sicuro al 100%).
Questa è una vulnerabilità di Github in una classe di exploit chiamata “Repojacking”.
Consigliamo a tutti di controllare gli URL dei propri plugin Github e di rinominare ogni singola istanza di discoursehosting in communiteq
Background:
Abbiamo dovuto rinominare la nostra azienda da Discoursehosting a Communiteq nel 2019.
Se ciò accade, Github reindirizza automaticamente gli URL ai repository di Github nella loro nuova posizione, finché qualcuno non crea un repository con lo stesso nome. A quel punto il nuovo repository avrà la precedenza.
Github contrassegnava tali repository come “ritirati” e proibiva la creazione di un repository con lo stesso nome.
Un precedente exploit è descritto qui. Apparentemente quella correzione non è più efficace.
Abbiamo presentato una segnalazione di abuso a Github e cercheremo di rimuovere questo repository con tutti i mezzi disponibili.
Al momento il plugin compromesso mostra solo un messaggio e lascia un file innocuo in /tmp.
Quindi non è successo nulla di grave - per ora. È importante cambiare l’URL del tuo plugin prima di ricostruire.
Per mitigare il potenziale impatto per gli utenti dell’installazione standard, abbiamo aggiunto del codice per rilevare github.com/discoursehosting/ e interrompere qualsiasi ricostruzione/aggiornamento.
---
ERRORE: Il file di configurazione containers/app.yml contiene riferimenti a un'organizzazione GitHub compromessa: github.com/discoursehosting
Si prega di rimuovere qualsiasi riferimento a questa organizzazione dal file di configurazione.
Per maggiori informazioni, vedere https://meta.discourse.org/t/374703/6
---
Voglio scusarmi sinceramente per l’interruzione causata dalle mie azioni riguardo al repository dei plugin. Nel tentativo di evidenziare un problema di sicurezza, ho commesso gravi errori che hanno violato il codice di condotta.
Andando avanti, mi assicurerò che le mie azioni aderiscano alle pratiche di divulgazione responsabile e apprezzo l’opportunità di imparare da questo.
Ancora una volta, mi dispiace sinceramente per l’interruzione causata.
La cosa successiva, non così responsabile, è stata non contattarmi o CDCK privatamente quando hai ceduto l’handle, perché nelle ultime tre ore qualcun altro avrebbe potuto vedere il tuo post e registrarlo.
In sostanza, dovresti presumere che nulla sia sicuro, il che non funziona bene.
Solo pochi giorni fa è emerso che uno degli sviluppatori dietro alcuni account NPM di pacchetti ESLint Prettier è stato compromesso e ha pubblicato nuove versioni compromesse di alcuni pacchetti popolari:
Questi pacchetti sono stati quindi referenziati in altri pacchetti, poiché molti sostengono che si dovrebbe sempre aggiornare alle ultime versioni.
Dopo aver visto questa discussione, ho suggerito una funzionalità per introdurre la convalida della firma di plugin/componenti tematici durante l’aggiornamento: Plugin and theme component signing
Ciò non fermerebbe una chiave compromessa, ma almeno renderebbe una parte della catena di approvvigionamento più affidabile. Alla fine, è ancora possibile che vengano richiamate librerie di terze parti compromesse. Le dipendenze aggiuntive non sono realmente visibili.
Non sono sicuro che funzioni ancora. Avevo un plugin che puntava all’URL compromesso di GitHub e il messaggio di errore durante la ricostruzione diceva solo che non era stato possibile recuperare il repository, con ulteriori dettagli su una versione di gem o qualcosa di simile. (Non posso incollare le informazioni esatte poiché sono troppo indietro nel mio scrollback a causa di tutto il resto del rumore durante le build successive.)
Sembra che l’URL/repository non esista più, il che è un bene (almeno finché qualcun altro non lo ricrea), ma il messaggio di errore avrebbe fatto risparmiare molto tempo.