Die Entwickler des freien Content-Management-Systems Plone, das in Python und JavaScript/NodeJS geschrieben ist, haben einen Vorfall gemeldet, bei dem schadhafter Code in das Git-Repository des Projekts auf GitHub eingefĂŒgt wurde. UrsprĂŒnglich wurden im Repository drei ĂnderungsstĂ€nde entdeckt, die am 7. Januar erschienen (1, 2, 3) und schadhafter Code in den JavaScript-Dateien des Projekts hinzugefĂŒgt haben (1, 2, 3). Eine Analyse des Vorfalls ergab, dass die Integration des schadhaften Codes das Ergebnis der Kompromittierung eines Entwicklerkontos war, dessen Zugangstoken von Angreifern erbeutet wurde, nachdem schadhafter Code in seinem System ausgefĂŒhrt worden war.
Am 14. Januar wurde das kompromittierte Konto gesperrt, und den Entwicklern des Projekts wurde empfohlen, die Commits vom 1. bis 14. Januar zu ĂŒberprĂŒfen. Am 27. Januar wurde festgestellt, dass die entdeckten Commits nicht die einzigen waren, und der Angriff betraf fĂŒnf Repositories des Projekts (plone/volto, plone/mockup, plone/plone.app.mosaic, plone/critical-css-cli, plone/plonetheme.barceloneta), in die unbemerkt schadhafter Code integriert wurde. Im Fall des Repositories plone.app.mosaic gelang es den Angreifern, den Master-Branch zu ersetzen. Der Angriff wurde zwei Monate nach dem Diebstahl des Zugangstokens des Entwicklers durchgefĂŒhrt.
Um Ănderungen einzufĂŒgen, nutzten die Angreifer anstelle gewöhnlicher Commits die Operation âforce pushâ (git push mit der Option ââforceâ), die es ermöglicht, einen Branch im externen Repository mit ihrem Inhalt zwangsweise zu ersetzen und somit die Ănderungs-Historie neu zu schreiben (nach dem Ersetzen wird die Historie des vom Angreifer hochgeladenen Branchs angezeigt). Um eine derartige Branch-Verschiebung in Zukunft zu verhindern, haben die Entwickler von Plone Regeln in GitHub aktiviert, die âforce pushâ-Operationen fĂŒr die Haupt-Branches und Tags blockieren.
Im Repository plone.app.mosaic haben die Angreifer einen schĂ€dlichen Commit in den Master-Branch eingefĂŒgt, um die Erkennung der Kompromittierung zu erschweren. Dieser hatte ein gefĂ€lschtes Datum â den 18. Dezember â in der Annahme, dass der Suchbereich nach schĂ€dlichem Code sich auf die Ănderungen konzentrieren wĂŒrde, die nach ihrer ersten AktivitĂ€t im Repository hinzugefĂŒgt wurden. Die schĂ€dliche Ănderung wurde in dem eingefĂŒgten Commit als Beginn der Entwicklung einer neuen Testversion prĂ€sentiert, aber zusĂ€tzlich zur Ănderung der Versionsnummer in den Metadaten (von 4.0.0a1 auf 4.0.0a2.dev0) wurde schĂ€dlicher Code in die beim Build-Prozess aufgerufene JavaScript-Datei prettier.config.js eingefĂŒgt. Um bei der Anzeige der Ănderungen im Terminal verborgen zu bleiben, wurde der Code in einer Zeile zusammen mit einer legitimen Operation hinzugefĂŒgt und mit Leerzeichen aus dem sichtbaren Bereich verschoben. In der GitHub-OberflĂ€che wurde dieser Code ebenfalls standardmĂ€Ăig nicht angezeigt und erforderte das DrĂŒcken der SchaltflĂ€che âLoad Diffâ.

Der Angriff war vielmehr auf die Entwickler des Projekts als auf die Benutzer ausgerichtet. Die schĂ€dlichen Ănderungen wurden nicht in die Veröffentlichung aufgenommen. Der schĂ€dliche Code wurde wĂ€hrend des Builds aktiviert, lud Exploits zur Erhöhung der Berechtigungen, richtete Autostart ĂŒber den Aufruf seiner Prozesse aus Startskripten ein und erlaubte eine Fernsteuerung. ServerDarĂŒber hinaus fĂŒhrte die installierte schĂ€dliche Komponente die Suche und den Versand vertraulicher Daten durch, wie z. B. Zugangstokens, Browserprofile und SchlĂŒssel fĂŒr Kryptowallets.
Quelle: opennet.ru
