Ontwikkelaars van het open-source contentmanagementsysteem Plone, geschreven in Python en JavaScript/NodeJS, hebben een incident aangekondigd waarbij kwaadaardige code aan de git-repository van het project op GitHub is toegevoegd. Aanvankelijk werden er op 7 januari drie wijzigingen in de repository ontdekt die kwaadaardige code aan de JavaScript-bestanden van het project toevoegden. Analyse van het incident heeft aangetoond dat de integratie van de kwaadaardige code het gevolg was van de compromittering van het account van een van de ontwikkelaars, wiens toegangstoken door kwaadwillenden was onderschept nadat schadelijke software op zijn systeem was uitgevoerd.
Op 14 januari werd het gecompromitteerde account geblokkeerd en werd de ontwikkelaars van het project aangeraden om de commits van 1 tot 14 januari te analyseren. Op 27 januari werd ontdekt dat de opgemerkte commits niet de enige waren en dat de aanval vijf repositories van het project had getroffen, waaronder plone/volto, plone/mockup, plone/plone.app.mosaic, plone/critical-css-cli en plone/plonetheme.barceloneta, waar kwaadaardige code onopgemerkt was geĆÆntegreerd. In het geval van de repository plone.app.mosaic was het de aanvallers gelukt om de master-tak te vervangen. De aanval vond plaats twee maanden nadat het toegangstoken van de ontwikkelaar was onderschept.
Voor de integratie van wijziging gebruikten de aanvallers in plaats van gewone commits de actie 'force push' (git push met de optie '--force'), waarmee ze gedwongen de tak in de externe repository met hun inhoud konden vervangen en zo de wijziginggeschiedenis konden herschrijven (na vervanging wordt de geschiedenis van de tak weergegeven, geüpload door de aanvallers). Om soortgelijke takvervangen in de toekomst te voorkomen, hebben de ontwikkelaars van Plone regels op GitHub ingevoerd die 'force push'-acties voor hoofd- en tag-takken blokkeren.
In de repository plone.app.mosaic hebben aanvallers een kwaadaardige commit in de master-tak geplaatst, met een valse datum ā 18 december, in de hoop dat het zoekgebied voor kwaadaardige code zich zou richten op de wijzigingen die na hun eerste activiteit in de repository zijn aangebracht. De kwaadaardige wijziging werd in de besmette commit gepresenteerd als het begin van de ontwikkeling van een nieuwe testversie, maar naast het wijzigen van het versienummer in de metadata (van 4.0.0a1 naar 4.0.0a2.dev0) werd kwaadaardige code toegevoegd aan het JavaScript-bestand prettier.config.js dat werd aangeroepen tijdens het buildproces. Om de wijziging in de terminal moeilijker zichtbaar te maken, werd de code op ƩƩn regel toegevoegd met een legitieme operatie en verschoven uit het zicht met behulp van spaties. In de GitHub-interface werd deze code ook standaard niet weergegeven en was een klik op de knop 'Load Diff' vereist.

De aanval was meer gericht op de ontwikkelaars van het project dan op de gebruikers. De kwaadaardige wijzigingen zijn niet in de release opgenomen. De kwaadaardige code werd geactiveerd tijdens de build, laadde exploits voor privilege-escalatie, configureerde autorun door zijn processen aan te roepen vanuit opstartscripts en stelde op afstand beheer mogelijk. serverBovendien zocht de geĆÆnstalleerde kwaadaardige component naar en verzond vertrouwelijke gegevens, zoals toegangstokens, browserprofielen en sleutels van cryptowallets.
Bron: opennet.ru
