Avatud sisuhaldussüsteemi Plone arendajad, mis on kirjutatud Pythonis ja JavaScriptis/NodeJS-is, teatasid juhtumist, mille tulemuseks oli pahavara koodi lisamine projekti git-repositooriumisse GitHubis. Algselt tuvastati repositooriumis kolm muudatust, mis ilmusid 7. jaanuaril (1, 2, 3), lisades pahavara koodi projekti JavaScripti failidesse (1, 2, 3). Juhtumi analüüs näitas, et pahavara koodi integreerimine toimus ühe arendaja konto kompromiteerimise tõttu, kelle juurdepääsutokeni hõivasid kurjategijad pärast pahavara käivitamist tema süsteemis.
14. jaanuaril blokeeriti kompromiteeritud konto ning projekti arendajatele soovitati analüüsida 1. kuni 14. jaanuari commit'e. 27. jaanuaril selgus, et tähelepanekutega ei piirdunud vaid üksikute commit'idega ning rünnak oli tabanud viit projekti repot (plone/volto, plone/mockup, plone/plone.app.mosaic, plone/critical-css-cli, plone/plonetheme.barceloneta), kuhu oli märkamatult integreeritud pahavara kood. Repo puhul plone.app.mosaic õnnestus ründajatel asendada master haru. Rünnak toimus kaks kuud pärast arendaja pääsme tokeni haaramist.
Muudatuste integreerimiseks kasutasid ründajad tavapäraste commit'ide asemel operatsiooni „force push“ (git push koos „—force“ valikuga), mis võimaldab sundida haru välistes repodes oma sisuga asendama ja seega kirjutada muutuste ajalugu ümber (asendamise järel kuvatakse ajalugu ründaja üleslaaditud harust). Taolise harude asendamise vältimiseks tulevikus on Plone arendajad lisanud GitHubi reeglid, mis blokeerivad „force push“ operatsioonid põhiharude ja siltide jaoks.
Plone.app.mosaic'i hoidlas, et takistada rünnaku jälgimist, paigaldasid ründajad master-haru ulguda hävitava commit'i, millel oli vale kuupäev — 18. detsember, arvates, et kuritarvituskoodi otsing keskendub muudatustele, mis lisati pärast nende esimest aktiivsust hoidlas. Kahjulik muudatus esitati vale commit'is kui uue testversiooni arendamise algus, kuid peale versiooni numbri muutmise metadatades (4.0.0a1-st 4.0.0a2.dev0-le) lisati koostamise ajal kutsutud javascript-faili prettier.config.js kahjulik kood. Muudatuste terminalis vaatamisel varjamiseks lisati kood ühte ritta legitiimse operatsiooniga ja nihutati nähtamatuks kasutades tühikuid. GitHub'i liideses ei olnud see kood ka vaikimisi nähtav ja nõudis nupu „Load Diff” vajutamist.

Rünnak suunati rohkem projekti arendajate kui kasutajate vastu. Kuritegelikud muudatused ei jõudnud väljaande juurde. Kahjulik kood aktiveerus kogumisel, laadis sisse kõrgendatud privileegide ekspluateerimise tööriistad, seadis automaatse käivituse oma protsesside kutsumise kaudu käivitusskriptidest ja võimaldas kaugjuhtimist. serveriga. Lisaks sellele tegi installitud kahjulik komponent konfidentsiaalsete andmete otsingut ja edastamist, nagu juurdepääsutokenid, brauseriprofiilid ja krüptovaluutakottide klahvid.
Allikas: opennet.ru
