Ein inzwischen behobener kritischer Sicherheitsfehler in Google Cloud Platform (GCP) Composer hätte es ermöglichen können, mithilfe einer Lieferkettenangriffstechnik namens Abhängigkeitsverwirrung Remotecode auf Cloud-Servern auszuführen.

Die Sicherheitslücke wurde von Tenable Research mit dem Codenamen CloudImposer versehen.

„Die Sicherheitslücke hätte es einem Angreifer ermöglichen können, eine interne Softwareabhängigkeit zu kapern, die Google auf jedem Google Cloud Composer Pipeline-Orchestrierungstool vorinstalliert“, sagte Sicherheitsforscher Liv Matan in einem Bericht, der The Hacker News zur Verfügung gestellt wurde.

Abhängigkeitsverwirrung (auch bekannt als Substitutionsangriff), die erstmals im Februar 2021 von dem Sicherheitsforscher Alex Birsan dokumentiert wurde, bezieht sich auf eine Art von Kompromittierung der Softwarelieferkette, bei der ein Paketmanager dazu gebracht wird, ein bösartiges Paket aus einem öffentlichen Repository anstelle der beabsichtigten Datei mit demselben Namen aus einem internen Repository zu beziehen.

Ein Angreifer könnte also einen groß angelegten Lieferkettenangriff starten, indem er ein gefälschtes Paket mit demselben Namen wie ein intern von Unternehmen entwickeltes Paket und einer höheren Versionsnummer in einem öffentlichen Paket-Repository veröffentlicht.

Dies führt wiederum dazu, dass der Paketmanager unwissentlich das bösartige Paket aus dem öffentlichen Repository anstelle des privaten Repositorys herunterlädt und die vorhandene Paketabhängigkeit effektiv durch sein betrügerisches Gegenstück ersetzt.

Das von Tenable identifizierte Problem ist insofern ähnlich, als es missbraucht werden könnte, um ein bösartiges Paket mit dem Namen „google-cloud-datacatalog-lineage-producer-client“ in das Python Package Index (PyPI)-Repository hochzuladen, das dann auf allen Composer-Instanzen mit erhöhten Rechten vorinstalliert werden könnte.

Während Cloud Composer erfordert, dass das betreffende Paket eine feste Version hat (d. h. Version 0.1.0), stellte Tenable fest, dass die Verwendung des Arguments „–extra-index-url“ während eines „pip install“-Befehls das Abrufen des Pakets aus der öffentlichen Registrierung priorisiert, wodurch die Tür für Abhängigkeitsverwirrung geöffnet wird.

Mit diesem Privileg bewaffnet, könnten Angreifer Code ausführen, Anmeldeinformationen für Dienstkonten extrahieren und sich lateral in der Umgebung des Opfers zu anderen GCP-Diensten bewegen.

Nach der verantwortungsvollen Offenlegung am 18. Januar 2024 wurde das Problem im Mai 2024 von Google behoben, indem sichergestellt wurde, dass das Paket nur noch aus einem privaten Repository installiert wird. Außerdem wurde die zusätzliche Vorsichtsmaßnahme hinzugefügt, die Prüfsumme des Pakets zu überprüfen, um seine Integrität zu bestätigen und sicherzustellen, dass es nicht manipuliert wurde.

Die Python Packaging Authority (PyPA) ist sich der Risiken, die vom Argument „–extra-index-url“ ausgehen, angeblich seit mindestens März 2018 bewusst und forderte die Benutzer auf, in Fällen, in denen das interne Paket bezogen werden muss, auf die Verwendung von PyPI zu verzichten.

„Es wird erwartet, dass Pakete bis auf Name und Version eindeutig sind, daher werden zwei Wheels mit demselben Paketnamen und derselben Version von pip als nicht unterscheidbar behandelt“, bemerkte ein PyPA-Mitglied damals. „Dies ist ein bewusstes Merkmal der Paketmetadaten und wird sich wahrscheinlich nicht ändern.“

Google empfiehlt im Rahmen seiner Fehlerbehebung nun auch, dass Entwickler das Argument „–index-url“ anstelle des Arguments „–extra-index-url“ verwenden und dass GCP-Kunden ein Artifact Registry Virtual Repository verwenden, wenn mehrere Repositories benötigt werden.