Code-Signing-Attacken: Wenn Angreifer die Sicherheitstools in den Griff bekommen

Code Signing soll sicherstellen, dass niemand den Code manipuliert hat. Daher gefährden Code-Signing-Attacken die gesamte Softwarelieferkette.

In Pocket speichern vorlesen Druckansicht 10 Kommentare lesen

(Bild: evkaz/Shutterstock.com)

Lesezeit: 12 Min.
Von
  • Dave Roche
Inhaltsverzeichnis

Softwarelieferketten sind für moderne Wirtschaftsprozesse von zentraler Bedeutung. Da digitale Verbindungen immer kürzer und Entwicklungszyklen immer schneller werden, muss jedes Glied in der Lieferkette vertrauenswürdig sein, um sicheren Programmcode erstellen und übertragen zu können. Als grundlegender Prozess stellt Code Signing sicher, dass niemand den Code manipuliert hat.

Zum Signieren ihres Programmcodes generieren Developer ein Schlüsselpaar aus privatem und öffentlichem Schlüssel. Die Zertifikatsignierungsanforderung (CSR, Certificate Signing Request) mit den Identitätsinformationen des Unternehmens und einer Kopie des öffentlichen Schlüssels gehen – signiert mit dem privaten Schlüssel – an eine Zertifizierungsstelle (CA). Diese authentifiziert die Identität des Entwicklers oder der Entwicklerin und sendet ein gültiges Code-Signing-Zertifikat mit dem enthaltenen öffentlichen Schlüssel zurück.

Developer setzen ihren privaten Schlüssel zum Signieren des Codes ein, und User verwenden das mit dem öffentlichen Schlüssel versehene Zertifikat, um die Identität des Urhebers und letztlich die Vertrauenswürdigkeit des Codes authentifizieren zu können. Dieser Prozess ist die Basis gegenseitigen Vertrauens in der Softwarelieferkette.

Deshalb haben Code-Signing-Attacken tiefgreifende und weitreichende Auswirkungen, wenn Angreifer unberechtigten Zugriff auf wertvolle Software-Assets bekommen. Nach einem erfolgreichen Einbruch verfügen Hacker über wirkungsvolle Werkzeuge, um nicht nur die direkt betroffenen User, sondern auch nachgelagerte Organisationen und Einzelpersonen zu schädigen, die dem kompromittierten Opfer vertrauen. Ein anschauliches Beispiel für das Ausmaß von Code-Signing-Attacken ist der Computerwurm Stuxnet. Ausgangspunkt war der erfolgreiche Diebstahl von digitalen Zertifikaten bei mehreren Unternehmen aus Taiwan. Damit konnten die Angreifer ihre SCADA-Malware tarnen, um sie in kritische Infrastrukturen im Iran einzuschleusen. Im Ergebnis gelang es, Steuerungssysteme von Industrieanlagen zu sabotieren und außergewöhnliche Störungen im iranischen Atomprogramm herbeizuführen.

Aus der Sicht von Angreifern lohnt es sich, Signaturschlüssel und Zertifikate in den Blick zu nehmen. Damit können Hacker bösartigen Code als vertrauenswürdig ausgeben und als vermeintliches Update eines vertrauenswürdigen Partners in bestehende Supply-Chain-Prozesse einschleusen. Vor kurzem richtete ein Angriff auf Nvidia verheerende Schäden in der gesamten Lieferkette an, als der Grafikkartenriese im Februar 2022 zur Zielscheibe der Lapsus$-Gruppe wurde. Die Hackergruppe erbeutete zahlreiche Informationen, darunter Passwörter der Mitarbeiter und Interna zu Nvidias Technologien. Die wertvollste Beute der kriminellen Angreifer waren zwei abgelaufene Code-Signing-Zertifikate und die dazugehörigen Privatschlüssel.

Einen Monat später entdeckten Sicherheitsforscher Binärdateien mit Schadcode, die mit den geraubten Zertifikaten signiert waren und sich als vertrauenswürdige Nvidia-Programme ausgaben. In Wirklichkeit enthielten die Dateien neben Mimikatz-Lateral-Movement-Tools auch Cobalt Strike Beacons sowie Remote Access Trojaner (RATs).

Das eigentlich legitime Sicherheitstool Cobalt Strike verschafft Bedrohungsakteuren Zugang zu Zielorganisationen. Mit Mimikatz lassen sich Anmeldedaten direkt aus dem Arbeitsspeicher auslesen. So konnte sich Lapsus$ über eine VPN- Verbindung im Mobile-Device-Management (MDM) einloggen und Zugangsdaten sowie proprietäre Informationen entwenden und veröffentlichen.

Obwohl beide Zertifikate abgelaufen waren, konnten sie die Microsoft-Sicherheitssysteme täuschen, um Zugriff auf Windows zu erhalten. Der Angriff zielte dem Anschein nach auf Nvidia, aber eventuell war der Grafikkartenhersteller nur indirekt ins Visier geraten, um weitreichendere Effekte zu erreichen. Der Fall verdeutlicht, wie schwerwiegend sich Code-Signing-Angriffe auswirken und wie weit sie sich durch Einbeziehung weiterer Akteure und Organisationen einer IT-Landschaft oder Lieferkette ausbreiten können.

Der Angriff auf Nvidia sorgte für weltweites Aufsehen, ist aber nur ein Beispiel unter vielen vergleichbaren Fällen. Laut einer aktuellen Studie von VirusTotal treten Code-Signing-Angriffe weitaus häufiger auf als allgemein erwartet. Der Report "Deception at Scale: How Malware Abuses Trust" förderte zutage, dass Google Clouds Online-Dienst seit 2021 mehr als eine Million Samples signierter Malware entdeckt hatte. Fast 90 Prozent der Samples waren mit noch gültigen Zertifikaten signiert, als VirusTotal sie aufspürte. Die häufigsten Zertifikatsarten, die zum Signieren der Malware verwendet wurden, stammten von bekannten Unternehmen wie Skype, Adobe und VLC.

Unterschiedliche Fehler beim Implementieren von Code Signing ermöglichen solche Angriffe. Viele vergessen, dass es in Fragen der IT-Sicherheit nicht nur darum geht, die richtigen IT-Werkzeuge zu besitzen, sondern diese auch sicherheitskonform einzusetzen. Beispiel SolarWinds: Mehrere Regierungsabteilungen und große Privatunternehmen waren von der Cyberattacke auf Software für das IT- und Netzwerkmanagement betroffen.

Die Angreifer mussten keine Code-Signing-Zertifikate oder -Schlüssel stehlen, sondern fügten bösartigen Code bereits während des Build-Prozesses in SolarWinds-Software ein, die das Unternehmen am Ende der Entwicklung selbst signiert hatte. Die Angreifer profitierten dabei von einer unsicher implementierten Software-Lieferkette. Solche Fehler führen im weiteren Verlauf oft zu größeren Risiken. Code Signing allein reicht nicht aus, sondern der Prozess des digitalen Signierens muss in geschützte Software-Supply-Chain-Prozesse eingebunden sein.