Zum Inhalt

47-Tage-Zertifikate sind in Planung. Bist du bereit?

Jetzt handeln →

Wie Code Signing im Softwareentwicklungszyklus hilft

Bewährte Methoden zur Code-Signierung

Mit der zunehmenden Digitalisierung entwickeln sich auch Cyberbedrohungen rasant weiter. Sicherheit und Integrität von Software sind daher unverzichtbar. Code Signing spielt eine wichtige Rolle bei der Sicherung der Softwareauthentizität, der Verhinderung von Manipulationen und der Schaffung von Vertrauen zwischen Entwicklern und Endnutzern. Für Unternehmen reicht es jedoch nicht aus, den Code einfach nur zu signieren. Sie müssen Best Practices anwenden, um Risiken zu minimieren und eine sichere Software-Lieferkette aufrechtzuerhalten. 

Bevor wir uns mit den Best Practices befassen, wollen wir zunächst verstehen, was Code Signing ist, welche Rolle es in DevOps spielt und CI / CD-Pipelinesund wie es hilft, Cyberangriffe in der realen Welt zu verhindern. 

Was ist Code Signing und wie funktioniert es?

Codesignatur ist ein Sicherheitsmechanismus zur Überprüfung der Authentizität und Integrität von Softwarecode, Skripten oder ausführbaren Dateien. Dabei wird Software digital signiert, um zu bestätigen, dass sie aus einer vertrauenswürdigen Quelle stammt und seit der Signierung nicht verändert oder manipuliert wurde. 

Der Prozess beginnt mit dem Hashing, bei dem die Software in eine eindeutige Zeichenfolge mit fester Länge umgewandelt wird (z. B. SHA-256). Dieser Hash wird dann mit dem privaten Schlüssel des Entwicklers verschlüsselt (sicher gespeichert, oft in einem Hardware-Sicherheitsmodul, oder HSM), um eine digitale Signatur zu erstellen, die zusammen mit Metadaten wie dem Zeitstempel und den Zertifikatsdetails (öffentlicher Schlüssel) in die Software eingebettet wird.  

Wenn ein Benutzer die Software herunterlädt, entschlüsselt sein System die Signatur mit dem öffentlichen Schlüssel des Entwicklers (aus dem beigefügten Zertifikat) und vergleicht sie mit einem neu berechneten Hash der heruntergeladenen Datei. Stimmen sie überein, wird die Datei als unverändert verifiziert. 

Code-Signierungsablauf
Flussdiagramm zur Code-Signierung

Warum ist Code Signing bei der Softwareentwicklung wichtig?

Wie bereits erwähnt, spielt Code Signing eine wichtige Rolle bei der Sicherung der Softwareauthentizität und Manipulation. Wir werden im Detail untersuchen, wie wichtig Code Signing für die Softwareentwicklung ist. 

Gewährleistet die Softwareintegrität 

Codesignatur garantiert, dass die Software seit der Signierung durch den Entwickler nicht verändert wurde. Beim Signieren des Codes wird ein kryptografischer Hash generiert und mit dem privaten Schlüssel des Entwicklers verschlüsselt. Ändert sich auch nur ein einziges Byte in der Datei (durch Malware-Injektion oder Beschädigung), schlägt die Hash-Verifizierung fehl und weist den Benutzer darauf hin, dass die Software möglicherweise kompromittiert ist. Dies verhindert, dass Angreifer modifizierte Versionen legitimer Software verbreiten, und schützt sowohl Entwickler als auch Endbenutzer. 

Überprüft Authentizität und Vertrauenswürdigkeit 

Ohne Code Signing haben Benutzer keine zuverlässige Möglichkeit zu überprüfen, ob die Software von einem legitimen Herausgeber stammt oder nicht. Code Signing-Zertifikate, die von vertrauenswürdigen Zertifizierungsstellen (CAs) Die Software kann an eine verifizierte Organisation oder einen Entwickler gebunden werden. Wenn Benutzer signierte Software installieren, zeigt ihr Betriebssystem den Namen des Herausgebers an (z. B. „Microsoft Corporation“ statt „Unbekannter Herausgeber“), was das Vertrauen stärkt und Sicherheitswarnungen reduziert. Dies ist besonders wichtig für Unternehmenssoftware, Treiber und Finanzanwendungen, bei denen die Quellcodeverifizierung von entscheidender Bedeutung ist. 

Nicht verifizierter Herausgeber vs. verifizierter Herausgeber

Ausgestellt von vertrauenswürdigen Zertifizierungsstellen (CAs), diese Zertifikate gibt es in verschiedenen Typen, je nach dem Grad der Validierung und des Vertrauens, den sie bieten. 

  1. Individuell validierte (IV) Zertifikate: IV-Zertifikate wurden für einzelne Entwickler entwickelt und verifizieren die Identität der Person anhand offizieller Dokumente. Sie eignen sich zwar für persönliche oder kleine Projekte, bieten aber grundlegendes Vertrauen, können aber auf bestimmten Systemen dennoch Warnungen auslösen.
  2.  Organisationsvalidierte (OV) Zertifikate: Wird an rechtmäßig registrierte Organisationen nach Überprüfung ihrer Geschäftsnachweise ausgestellt. OV-Zertifikate zeigen den Firmennamen in der digitalen Signatur an und bieten ein mittleres Maß an Vertrauen für die Verteilung interner und öffentlicher Software. 
  3. Extended Validation (EV)-Zertifikate: EV-Zertifikate sind Zertifikate mit der höchsten Sicherheitsstufe und erfordern eine gründliche Geschäfts- und Identitätsprüfung. Sie bieten sofortige Reputationsvorteile, unterdrücken Sicherheitswarnungen und zeigen den Namen des verifizierten Herausgebers bei der Installation deutlich an – ideal für öffentliche, Unternehmens- und sicherheitsrelevante Software. 

Verhindert Malware und Angriffe auf die Lieferkette 

Cyberkriminelle verbreiten Malware häufig, indem sie sich als legitime Software ausgeben oder schädlichen Code in Updates einschleusen. Code Signing mindert dieses Risiko, indem es sicherstellt, dass nur ordnungsgemäß signierter und verifizierter Code ausgeführt wird. Versucht ein Angreifer, eine signierte ausführbare Datei zu verändern, wird die digitale Signatur zerstört und das System blockiert sie. Dies ist besonders wichtig in Sicherheit der Lieferkette, Angreifer nutzen Softwareanbieter, um trojanisierte Updates zu verbreiten, wie beispielsweise beim SolarWinds-Angriff. Code Signing dient als Schutz vor solchen Bedrohungen. 

Ermöglicht sichere Software-Updates

Software-Updates sind ein häufiger Angriffsvektor, bei dem Hacker unsignierte Updates verwenden, um Malware zu verbreiten. Code Signing stellt sicher, dass nur der ursprüngliche Herausgeber Updates zulässt. Wenn eine Anwendung nach Updates sucht, überprüft sie vor der Installation die digitale Signatur. Dies trägt dazu bei, Man-in-the-Middle (MITM) Angriffe und nicht autorisierte Änderungen. 

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Warum beweisen die jüngsten Cyberangriffe, dass sichere Code-Signierung unerlässlich ist?

Zahlreiche aufsehenerregende Cyberangriffe zeigen, wie Angreifer Schwachstellen in Software-Lieferketten ausnutzen, wodurch die Codesignierung noch wichtiger wird. In den letzten Jahren gab es einen steilen Anstieg von rund 742 % bei der nächsten Generation von Codesignatoren. Angriffe auf die Software-Lieferkette

Angriffe auf die Software-Lieferkette der nächsten Generation
Angriffe auf die Software-Lieferkette

Nachfolgend finden Sie einige reale Cyberangriffe und die Lehren, die wir in den letzten Jahren daraus gezogen haben. 

3CX-Lieferkettenangriff (März 2023) 

Der 3CX-Lieferkettenangriff im Jahr 2023 führte zu einem deutlichen Anstieg der Kompromittierungen der Software-Lieferkette. Angreifer drangen in das Build-System des Unternehmens ein, um bösartige Updates zu installieren, die mit den legitimen Zertifikaten von 3CX digital signiert waren. Dieser ausgeklügelte Angriff wurde nordkoreanischen, staatlich geförderten Akteuren zugeschrieben und betraf über 600,000 Organisationen weltweit durch trojanisierte Versionen der 3CX-Desktop-App.  

Der Vorfall deckte kritische Sicherheitslücken im Build-System auf und verdeutlichte, dass selbst ordnungsgemäß signierten Software-Updates nicht blind vertraut werden kann. Er unterstreicht die Notwendigkeit einer mehrstufigen Überprüfung der Softwareintegrität, die präzise Kontrollen der Build-Umgebungen und eine kontinuierliche Überwachung auf abnormales Verhalten signierter Anwendungen umfasst. 

Neben Kontrollen und Überwachung benötigen wir über die Code-Signierung hinaus mehrere Schutzebenen. Dazu gehören unter anderem: 

Scannen nach Software-Sicherheitslücken

Software-Schwachstellenscanner sind Tools, die Anwendungen, Code und Softwareumgebungen automatisch auf bekannte Sicherheitslücken überprüfen. Diese Scanner identifizieren Probleme wie veraltete Bibliotheken, Fehlkonfigurationen, unsichere Codemuster und öffentlich bekannte Schwachstellen (CVEs). Durch das Scannen von Software vor der Veröffentlichung und während regelmäßiger Updates können Entwickler Sicherheitsprobleme frühzeitig erkennen und beheben und so das Risiko verringern, dass Angreifer sie später ausnutzen. Schwachstellenscans sind ein wichtiger Bestandteil moderner DevSecOps-Praktiken und gewährleisten kontinuierliche Sicherheit während des gesamten Software-Lebenszyklus. 

Software-Stückliste (SBOM)

Eine SBOM (Software Bill of Materials) ist eine detaillierte Liste aller in einer Softwareanwendung verwendeten Komponenten, Bibliotheken und Abhängigkeiten. Sie funktioniert wie eine Zutatenliste für Software und erleichtert die Nachverfolgung des Programminhalts. Durch die Pflege einer SBOM können Unternehmen schnell erkennen, ob die von ihnen verwendeten Drittanbieter- oder Open-Source-Komponenten bekannte Schwachstellen, veraltete Bibliotheken oder Lizenzrisiken aufweisen. Sie spielt eine entscheidende Rolle bei der Verbesserung der Softwaresicherheit, insbesondere bei der Verwaltung und Reduzierung von Risiken in der Software-Lieferkette. 

MOVEit Transfer-Ausnutzung (Juni 2023) 

Der MOVEit-Angriff der Ransomware-Gruppe Cl0p zeigte, wie Schwachstellen in der Lieferkette den Code-Signing-Schutz umgehen können. Zwar handelte es sich nicht um einen direkten Code-Signing-Verstoß, doch die massenhafte Ausnutzung dieser weit verbreiteten Dateiübertragungslösung ermöglichte es Angreifern, Software-Updates und Patches während der Übertragung abzufangen.  

Dadurch entstand ein Szenario, in dem ordnungsgemäß signierte Software während der Auslieferung durch schädliche Versionen ersetzt werden konnte. Der Vorfall zeigte, dass Code Signing allein nicht ausreicht – Unternehmen müssen zusätzlich die Integrität der Vertriebskanäle überprüfen und eine Prüfsummenvalidierung implementieren, um sicherzustellen, dass signierte Pakete nach der Signierung unverändert bleiben. 

Vorfall bei Applied Materials (Februar 2023) 

Bei dem Angriff des Halbleiterriesen wurden gestohlene Zugangsdaten verwendet, um auf sensible Systeme zuzugreifen, möglicherweise auch auf die Code-Signatur-Infrastruktur. Obwohl die genauen Details nicht bekannt gegeben wurden, zeigte der Angriff, wie Social Engineering und der Diebstahl von Zugangsdaten selbst starke Code-Signatur-Schutzmechanismen umgehen können.  

Dieser Fall unterstreicht auch die Risiken der Integration von Code Signing in automatisierte CI/CD-Pipelines ohne angemessene Sicherheitskontrollen. Automatisierung steigert zwar die Entwicklungsgeschwindigkeit und -effizienz, kann aber auch die Gefährdung erhöhen, wenn sie nicht sicher verwaltet wird. Wenn Signaturprozesse in Pipelines integriert sind, können Angreifer, die Build-Server oder CI/CD-Umgebungen kompromittieren, potenziell schädlichen Code einschleusen und ihn automatisch signieren lassen, ohne dass Warnmeldungen ausgelöst werden. 

Um dies zu verhindern, müssen Unternehmen Code-Signatur-Vorgänge als äußerst vertrauenswürdige Vorgänge behandeln. Das bedeutet, dass sie eine Multi-Faktor-Authentifizierung implementieren, den Zugriff auf Signatur-Anmeldeinformationen beschränken, Hardware-Sicherheitsmodule (HSMs) oder Cloud-basierte Schlüsselverwaltungslösungen verwenden und vor jeder Signierung manuelle Genehmigungsschritte oder Richtlinienprüfungen durchführen. Die Automatisierung sollte durch strenge Zugriffskontrollen und Überwachung ergänzt werden, um sicherzustellen, dass die Sicherheit nicht der Geschwindigkeit geopfert wird.  

SolarWinds-Angriff (Dezember 2020) 

Der SolarWinds-Angriff Bei dem Angriff handelte es sich um einen ausgeklügelten Angriff auf die Lieferkette, bei dem vom russischen Staat gesponserte Hacker die Softwareentwicklungssysteme des Unternehmens infiltrierten und heimlich Schadcode in legitime Updates für die IT-Überwachungsplattform Orion von SolarWinds einfügten. Diese manipulierten Updates wurden mit gültigen Zertifikaten von SolarWinds digital signiert und anschließend an rund 18,000 Kunden, darunter Regierungsbehörden und Großunternehmen, verteilt. So konnten die Angreifer ihre Opfer über einen sehr langen Zeitraum ausspionieren. 

Durch die Nutzung vertrauenswürdiger Update-Mechanismen und den Missbrauch von Code Signing deckte der Angriff kritische Schwachstellen in der Sicherheit der Software-Lieferkette auf und bewies, dass selbst ordnungsgemäß signierte Software als Waffe eingesetzt werden kann, wenn die Build-Umgebungen kompromittiert sind. Code Signing allein reicht daher nicht aus – ist die Build-Umgebung kompromittiert, kann selbst signierte Software schädlich sein. Um solchen Risiken entgegenzuwirken, setzt die Branche zunehmend auf reproduzierbare Builds als wirksame Abwehrmaßnahme. 

A reproduzierbarer Aufbau stellt sicher, dass bei jeder Kompilierung des Quellcodes die gleiche Binärausgabe erzeugt wird. Dadurch lässt sich überprüfen, ob das erstellte Ergebnis genau dem entspricht, was beabsichtigt war. Dieser Prozess wird oft kombiniert mit Hash-Validierung vor und nach dem Build, wobei vor dem Build ein Hash des Quellcodes aufgezeichnet und der Hash der Binärdatei nach dem Build überprüft wird. Jede Abweichung zwischen der erwarteten und der tatsächlichen Ausgabe kann auf Manipulationen oder nicht autorisierte Änderungen hinweisen. Reproduzierbare Builds und Hash-Validierung tragen dazu bei, Kompromittierungen während des Builds zu erkennen und der Software-Lieferkette zusätzliches Vertrauen und Transparenz zu verleihen. 

Einige Best Practices bei der Code-Signierung zur Sicherung der Software-Lieferkette

Wie bereits erwähnt, Codesignatur Praktiken können Schwachstellen schaffen, die Anwendungen anfällig für Supply-Chain-Angriffe, Malware-Injektionen und unbefugte Änderungen machen. Die Implementierung hochwertiger Best Practices für Code-Signing hilft Unternehmen, Vertrauen zu wahren, Manipulationen zu verhindern und Endbenutzer vor bösartigen Bedrohungen zu schützen. Wir besprechen nun einige der Best Practices für Code-Signing, die für eine sichere Softwareentwicklung implementiert werden müssen. 

Sichere Speicherung privater Schlüssel im HSM 

Die Grundlage der sicheren Code-Signierung liegt im Schutz privater Schlüssel vor Diebstahl oder Missbrauch. Hardware-Sicherheitsmodule (HSMs) bieten ein Höchstmaß an Schutz, indem sie Schlüssel auf spezieller, manipulationssicherer Hardware speichern, die selbst bei einer Kompromittierung eines Servers eine Extraktion verhindert. Diese Geräte erzwingen strenge Zugriffskontrollen, um sicherzustellen, dass Schlüssel nur für kryptografische Operationen verwendet, aber niemals im Klartext offengelegt werden.  

Organisationen, die mit sensibler Software arbeiten, sollten FIPS 140-2 Level 3-zertifizierte HSMs, da sie nicht nur Schlüssel sichern, sondern auch alle kryptografischen Operationen intern durchführen und so die Risiken von Memory-Scraping-Angriffen eliminieren. Dieser Ansatz erscheint nach Vorfällen wie dem SolarWinds-Angriff, bei dem kompromittierte Build-Systeme durch HSM-geschützte Schlüssel hätten vermieden werden können, noch wichtiger. 

Erzwingen Sie Multi-Faktor-Authentifizierung und Genehmigungs-Workflows 

Während HSMs Schlüssel technisch schützen, verhindern Verfahrenskontrollen die unbefugte Nutzung. Die Implementierung Multi-Faktor-Authentifizierung (MFA) für den Zugriff auf Signatursysteme stellt sicher, dass gestohlene Anmeldeinformationen allein keine Signaturvorgänge auslösen können.  

Noch wichtiger ist, dass die Einrichtung von Genehmigungsworkflows mit mehreren Personen, bei denen für kritische Releases die Autorisierung durch mehrere vertrauenswürdige Teammitglieder erforderlich ist, Verantwortlichkeit schafft und Risiken sowohl durch Insider-Bedrohungen als auch durch die Gefährdung von Anmeldeinformationen verringert.  

Diese Kontrollen sollten direkt in CI/CD-Pipelines integriert werden, mit klaren Prüfprotokollen, die zeigen, wer jedes Signierungsereignis genehmigt hat. Nach dem Angriff auf JetBrains TeamCity erkannten Unternehmen beispielsweise, dass Angreifer durch automatisiertes Signieren ohne menschliche Aufsicht Schadcode frei signieren konnten, sobald sie in Build-Systeme eingedrungen waren. 

Implementieren Sie ein umfassendes Zertifikatslebenszyklusmanagement

Effektive Code-Signierung erfordert ein aktives Management der Zertifikate, das über die Erstausstellung hinausgeht. Unternehmen sollten kurzlebige Zertifikate ausstellen, die automatisch nach Wochen statt Jahren ablaufen, und Zertifikate bei Anzeichen einer Kompromittierung sofort widerrufen. OCSP/CRL Kontrollen und systematisches Rotieren der Schlüssel, um die Belichtungsfenster zu begrenzen.

Der MOVEit-Angriff hat gezeigt, wie lange gültige Zertifikate bei Auftreten von Schwachstellen zu einer Belastung für Unternehmen werden können. Moderne Ansätze wie Zertifikatstransparenzprotokolle und automatisierte Überwachungstools können helfen, verdächtige Zertifikatsnutzungsmuster zu erkennen, bevor sie zu Sicherheitsverletzungen führen. Für Unternehmen gewährleistet die Integration dieser Praktiken in die bestehende PKI-Infrastruktur eine einheitliche Richtliniendurchsetzung in allen Entwicklungsteams. 

Gewährleisten Sie sichere Signaturzugriffskontrollen und -durchsetzung 

Die Implementierung von rollenbasierter Zugriffskontrolle (RBAC, Least-Privilege) für die Code-Signierung ist unerlässlich, um Risiken in der Lieferkette zu minimieren. Die Produktionssignierung sollte durch eine obligatorische Multi-Faktor-Authentifizierung auf autorisierte Release-Ingenieure beschränkt sein, während Entwickler in der Testumgebung eingeschränkte Berechtigungen erhalten.  

Die automatisierte Richtliniendurchsetzung muss risikoreiche Aktionen wie das Massensignieren ungewöhnlicher Dateitypen blockieren und alle Aktivitäten zur Überprüfung protokollieren. Moderne Lösungen integrieren diese Kontrollen direkt in CI/CD-Pipelines und kombinieren technische Einschränkungen mit Workflow-Genehmigungen. Dieser mehrschichtige Ansatz stellt in Kombination mit HSM-geschützten Schlüsseln sicher, dass gestohlene Anmeldeinformationen allein Signiervorgänge nicht gefährden können, wie die Sicherheitsverbesserungen nach SolarWinds zeigen. Regelmäßige Zugriffsüberprüfungen gewährleisten sowohl die Sicherheit als auch die Betriebseffizienz. 

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Etablierung einer kontinuierlichen Überwachung und Reaktion auf Vorfälle 

Effektive Sicherheit beim Code Signing erfordert eine Echtzeitüberwachung aller Signieraktivitäten durch zentrale Protokollierung und Warnmeldungen. Sicherheitsteams sollten auf Anomalien wie Massensignieranfragen, das Signieren ungewöhnlicher Dateitypen oder Signierereignisse an unerwarteten Orten achten.  

Integration mit SIEM (Sicherheitsinformations- und Ereignismanagement) Systeme ermöglichen die Korrelation mit anderen Sicherheitsereignissen und erleichtern so die Erkennung koordinierter Angriffe. Ebenso wichtig sind vorbereitete Reaktionspläne für Vorfälle, da sie wichtige Schritte für die Schlüsselrotation beschreiben. Widerruf des Zertifikatsund Softwarerückruf im Falle von Verstößen.  

Der Okta-Datenleck hat gezeigt, wie eine verzögerte Reaktion auf die Gefährdung von Anmeldeinformationen den Schaden exponentiell steigern kann. Daher sind schnelle Erkennungs- und Eindämmungsfunktionen für die Signaturinfrastruktur von entscheidender Bedeutung. 

Die Rolle von Encryption Consulting bei der Verbesserung der Softwaresicherheit durch Code Signing 

Encryption Consulting stärkt die Softwaresicherheit durch CodeSign Secure Lösung, die bewährte Code-Signatur-Praktiken durchsetzt, um nachweisbares Vertrauen in die Softwareintegrität aufzubauen. Die Plattform automatisiert sichere Signatur-Workflows mithilfe von HSM-geschützte Schlüssel, kryptografische Validierung und granulare Zugriffskontrollen, alle eng in CI/CD-Pipelines integriert, um sicherzustellen, dass die Sicherheit die Entwicklung nicht verlangsamt. 

Über die Signatur hinaus verfolgt CodeSign Secure einen mehrschichtigen Ansatz zur Sicherung der gesamten Software-Lieferkette. Dies umfasst die Unterstützung von reproduzierbare Builds und Hash-Validierung vor/nach dem Build zur Erkennung von Manipulationen während des Build-Prozesses, der Generierung und Verwaltung von Software-Stücklisten (SBOMs) zur Verfolgung von Risiken auf Komponentenebene und nahtlose Integration mit Schwachstellenscannern zur Identifizierung bekannter Bedrohungen vor der Veröffentlichung des Codes. 

Durch die Kombination von Automatisierung auf Unternehmensebene mit umfassender Sicherheitskompetenz unterstützt Encryption Consulting Unternehmen dabei, konform zu bleiben, Angriffe auf die Lieferkette zu verhindern und Code Signing in eine strategische Verteidigungsebene zu verwandeln, die sowohl ihre Software als auch ihre Marke in der heutigen risikoreichen digitalen Umgebung schützt. 

Fazit 

Code Signing ist entscheidend für den Schutz der Software-Lieferkette vor Manipulationen, Malware und unbefugten Änderungen. Angriffe in der Praxis haben gezeigt, dass kompromittierte Signierungsprozesse zu verheerenden Sicherheitsverletzungen führen können. Dies unterstreicht die Bedeutung sicherer Code Signing für die Wahrung von Vertrauen und Compliance.  

Durch die Implementierung fortschrittlicher Verfahren wie HSM-geschützter Schlüssel, granularer Zugriffskontrollen und automatisierter Richtliniendurchsetzung können Unternehmen die Softwareintegrität während des gesamten Softwareentwicklungszyklus von der Entwicklung bis zur Bereitstellung sicherstellen.