Besuchen Sie Keyfactor auf der RSA Conference™ 2024 | 6. bis 9. Mai | Erfahren Sie mehr

Code Signing ist ein wertvolles Werkzeug - wenn es sicher ist

Code-Signierung

Dieser Artikel wurde ursprünglich vom Security Magazine veröffentlicht.

Heutzutage ist so gut wie alles auf Code angewiesen. Software durchdringt praktisch jeden Aspekt unseres Lebens, von den Produkten und Maschinen, die wir täglich benutzen, bis hin zur kritischen Infrastruktur, die die Gesellschaft als Ganzes unterstützt. Es ist schwer vorstellbar, dass es ein Unternehmen, eine Regierungsbehörde, eine andere Einrichtung oder ein Gerät gibt, das nicht in irgendeiner Weise von software abhängt.

Es gab eine Zeit, in der die Endnutzer den heruntergeladenen software vertrauen konnten. Das ist leider nicht mehr der Fall. Da Hacker und andere Cyberkriminelle immer geschickter darin werden, Malware zu verbreiten, ist es selbst für IT-Fachleute schwierig zu wissen, ob das software Produkt, das sie gekauft haben, legitim ist. Ganz zu schweigen von den automatischen software Aktualisierungen durch Laptops, mobile Geräte und das Internet der Dinge (IoT).

Dank der Einführung von Continuous Integration and Continuous Delivery (CI/CD) und Tools zur Build- und Testautomatisierung arbeiten Anwendungs- und Betriebsteams schneller als je zuvor, was bedeutet, dass es weniger menschliche Augen gibt, die einen direkten Einblick in die Vorgänge in der Pipeline haben. Bösewichte haben dies erkannt und suchen nach Schwachstellen in diesen schnelllebigen und komplexen Umgebungen, indem sie bösartigen Code an praktisch jedem Punkt der software Lieferkette einschleusen oder verändern. Dabei kann es sich um alles handeln, was den Code von der Entwicklung über die CI/CD-Pipeline eines Unternehmens bis zur Bereitstellung in der Produktion beeinflusst (d. h. software Abhängigkeiten, das Quellcode-Repository eines Unternehmens oder die Kompromittierung von Build-Servern).

Hier kommt das Code Signing ins Spiel.

Authentizität, Integrität und Vertrauen: Warum Code Signing für die Sicherheit wichtig ist

Die Codesignierung ist eine kryptografische Methode, die von Entwicklern verwendet wird, um zu beweisen, dass ein Teil von software authentisch ist. Sie schützt vor verändertem Code und schafft eine Vertrauenskette. Ähnlich wie ein SSL -Zertifikat als eine Form der Authentifizierung zur Identifizierung einer Website dient, ist ein Code Signing-Zertifikat eine spezielle Klasse digitaler Zertifikate, die von Entwicklern zum Signieren von Anwendungen und software verwendet werden.

Mit einem Code-Signing-Zertifikat kann jeder Empfänger der Website software deren Legitimität überprüfen, indem er Informationen wie den Namen des Unternehmens, das die Website software entwickelt hat, bestätigt - ähnlich wie ein Führerschein in der digitalen Welt.

Sobald software mit einem Code Signing-Zertifikat signiert ist, bedeutet dies, dass jede Version von software , die diese gültige Signatur trägt, nicht von einem Dritten verändert wurde. Die Bestätigung, dass ein Werk während der Übertragung nicht verändert wurde, ist deshalb so wichtig, weil jede Veränderung des software Codes auf böswillige Aktivitäten hindeuten könnte. Der signierte Code bedeutet, dass das, was die Endbenutzer sehen und erleben, genau dem entspricht, was der Urheber von software beabsichtigt hat.

Verhinderung von Code-Kompromittierung

Das Vertrauen und die Integrität von Code Signing hängen vollständig von der Sicherheit der Signierschlüssel einer Organisation ab. In der heutigen Bedrohungslage sind die privaten Schlüssel, die mit Code Signing-Zertifikaten verbunden sind, einer der größten Diebstähle, die ein Hacker begehen kann, denn wenn er diesen Teil des Code Signing-Zertifikats in die Hände bekommt, kann er neue software erstellen, die legitim und von einer seriösen Quelle zu sein scheinen.

Ein einziger Bruch in dieser Vertrauenskette kann für ein Unternehmen zu schwerwiegenden Schäden führen. Der Prozess des raschen Widerrufs und der Neuausstellung von Zertifikaten, der Benachrichtigung der betroffenen Nutzer und der Verteilung eines neu signierten Updates ist teuer. Ganz zu schweigen davon, dass es ein langer und mühsamer Prozess sein kann, das Vertrauen von Nutzern, Geschäftspartnern und Investoren wiederherzustellen.

Neben dem Diebstahl von Schlüsseln gibt es weitere häufige Schwachstellen wie Signierverletzungen und internen Missbrauch. Hacker können bösartigen Code auch ohne Diebstahl der entsprechenden privaten Schlüssel signieren lassen, wenn sie sich Zugang zu einem Entwicklerarbeitsplatz verschaffen können, der freien Zugang zu den Schlüsseln für die Codesignierung hat. Sobald dies geschehen ist, können sie einfach ihre software zur Signatur und Freigabe einreichen. Wenn ein Entwickler offenen Zugriff auf den entsprechenden Code-Signierschlüssel hat und diesen versehentlich missbraucht oder verlegt, kann er Hackern die Möglichkeit geben, den Betrieb zu infiltrieren.

Wenn die Sicherheitsteams diese Schwachstellen erkannt und verstanden haben, können sie eine Reihe von Maßnahmen ergreifen, um sich dagegen zu schützen und mehr Vertrauen in die Lieferkette software zu schaffen.

1. Balance Entwickler Zugang

Die häufigste Herausforderung für Unternehmen besteht darin, das Code Signing so zu implementieren, dass es sowohl den Anforderungen der Entwickler als auch denen der IT-Sicherheitsteams gerecht wird. Wenn man den Entwicklern zu viel Zugang gewährt, kann der Prozess anfällig für Angriffe werden. Ein zu geringer Zugriff hingegen führt zu Reibungsverlusten im Entwicklungsprozess und birgt die Gefahr, dass die Teams die Sicherheitsrichtlinien umgehen. Um das richtige Gleichgewicht zu finden, ist ein umfassender Schutz für private Code-Signierungsschlüssel erforderlich, damit sie an einem sicheren Ort aufbewahrt werden und nur eingeschränkten Benutzern zugänglich sind.

2. Verbesserte Sichtbarkeit und Kontrolle für Sicherheitsteams

Oft fehlt den Sicherheitsteams der Einblick in und die Kontrolle über Signierprozesse. Der Einsatz von Technologien, die Transparenz und Kontrolle zentralisieren und es den Sicherheitsteams erleichtern, alles zu überprüfen, kann einen großen Beitrag zur Bewältigung dieser Herausforderung leisten. Mit der richtigen Technologie können Sicherheitsteams Code Signing-Aktivitäten nachverfolgen und überwachen, ein Audit-Protokoll für Code Signing-Zertifikate und Signing-Versuche erstellen und Richtlinien dafür zentralisieren und standardisieren, wer Code signieren darf.

3. Integration von Code-Signierungsaktivitäten in die Entwicklungsprozesse

Der beste Weg, um zu verhindern, dass Entwickler Sicherheitsrichtlinien umgehen oder sich versehentlich einem Risiko aussetzen, ist die Integration von Code Signing-Aktivitäten in ihre bestehenden DevOps-Prozesse. Dazu gehört die Integration von Signing-Tools in DevOps-Tools, die Aktivierung von Remote-Signing-Funktionen für verteilte Teams und die Einführung von Prüfungen und Verifizierungen, die vor dem Signieren von Code erfolgen müssen.

4. Kontinuierliche Bewertung der Code-Signatur-Aktivitäten

Code Signing ist ein fortlaufender Prozess. Zertifikate laufen irgendwann ab, Schlüssel und Algorithmen können mit der Zeit schwächer werden, und Bedrohungen entwickeln sich weiter. Die genaue Überwachung aller Code-Signing-Aktivitäten, die Prüfung der gesamten Schlüsselnutzung und die Einbeziehung von Code-Signing-Zertifikaten in umfassendere PKI-Zertifikatsverwaltungsaktivitäten helfen den Sicherheitsteams nicht nur, Bedrohungen früher zu erkennen, sondern stellen auch sicher, dass alle Kontrollen, die zum Schutz eines Code-Signing-Zertifikats eingerichtet wurden, im Laufe der Zeit ordnungsgemäß aufrechterhalten werden.

In unserer software-gesteuerten Welt ist Vertrauen alles. Die Zusammenarbeit der Sicherheits- und Entwicklungsteams eines Unternehmens zum Schutz der digitalen Zertifikate und Schlüssel, die für die Code-Signierung verwendet werden, ist der Schlüssel zur Gewährleistung, dass software sicher und vertrauenswürdig bleibt. Damit wird die Code-Signierung zu einem wichtigen Bestandteil einer sicheren software Lieferkette.