Utviklerne av Plone, et åpen kildekode-system for innholdsadministrasjon skrevet i Python og JavaScript/NodeJS, annonserte en hendelse der skadelig kode ble lagt til prosjektets GitHub-repository. I utgangspunktet ble tre endringer (1, 2, 3) oppdaget i repositoriet 7. januar, som la til skadelig kode i prosjektets JavaScript-filer (1, 2, 3). En undersøkelse av hendelsen avdekket at den skadelige koden ble satt inn via en kompromittert konto tilhørende en av utviklerne, hvis tilgangstoken ble fanget av angripere etter at skadelig programvare ble lansert på systemet deres.
14. januar ble den kompromitterte kontoen blokkert, og prosjektutviklere ble rådet til å analysere commits fra 1. til 14. januar. 27. januar ble det oppdaget at angrepet ikke var begrenset til de observerte commitsene, og at fem prosjektrepositorier (plone/volto, plone/mockup, plone/plone.app.mosaic, plone/critical-css-cli, plone/plonetheme.barceloneta) i hemmelighet ble injisert med skadelig kode. I tilfellet med plone.app.mosaic-repositoriet lyktes angriperne med å erstatte mastergrenen. Angrepet skjedde to måneder etter at utviklerens tilgangstoken ble kapret.
For å integrere endringer, i stedet for vanlige commits, brukte angriperne en "force push"-operasjon (git push med alternativet "--force"), som lar dem tvangsutskifte en gren i et eksternt repository med sitt eget innhold og dermed omskrive endringshistorikken (etter utskiftingen vises historikken fra grenen lastet inn av angriperen). For å forhindre slik grenerstatning i fremtiden har Plone-utviklere inkludert regler i GitHub som blokkerer "force push"-operasjoner for mastergrener og tagger.
For å hindre deteksjon av kompromitteringen i plone.app.mosaic-depotet, la angriperne inn en ondsinnet commit i master-grenen med en fiktiv dato 18. desember, i den tro at søkeområdet for ondsinnet kode ville fokusere på endringer som ble lagt til etter deres første aktivitet i depotet. Den ondsinnede endringen ble presentert i den innsatte commiten som starten på en ny testutgivelse, men i tillegg til å endre versjonsnummeret i metadataene (fra 4.0.0a1 til 4.0.0a2.dev0), ble ondsinnet kode lagt til i JavaScript-filen prettier.config.js som ble kalt under byggeprosessen. For å skjule endringen når den ble vist i terminalen, ble koden lagt til på samme linje som den legitime operasjonen og forskjøvet fra det synlige området ved hjelp av mellomrom. I GitHub-grensesnittet ble heller ikke denne koden vist som standard og krevde at man klikket på "Load Diff"-knappen.

Angrepet var mer rettet mot prosjektets utviklere enn brukerne. De ondsinnede endringene var ikke inkludert i utgivelsen. Den ondsinnede koden ble aktivert under byggingen, lastet inn utnyttelser for privilegiumsøkning, konfigurerte autokjøring ved å kalle prosessene fra oppstartsskript og tillot fjernkontroll. serverI tillegg søkte og sendte den installerte skadelige komponenten etter konfidensielle data, som tilgangstokener, nettleserprofiler og kryptolommeboknøkler.
Kilde: opennet.ru
