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

Was ist Code Signing? Die endgültige Roadmap für sicheres Code Signing

Die meisten software und Firmware-Entwickler erkennen die Bedeutung der Code-Signierung. Es fällt ihnen jedoch schwer, sie effektiv und sicher zu implementieren. In diesem Leitfaden werden häufige Bedrohungen und Pannen bei Code Signing-Vorgängen untersucht. Anschließend wird Schritt für Schritt erläutert, wie Sie die Anforderungen Ihrer Entwickler und Ihres Sicherheitsteams erfüllen können - alles an einem Ort.

Illustration von Personen, die an vernetzten Geräten arbeiten

Was ist Code Signing?

Wir leben in einer Welt, die auf Code basiert. Software durchdringt praktisch jeden Aspekt unseres Lebens, von den Dingen, die wir jeden Tag benutzen, bis hin zur kritischen Infrastruktur unserer Gesellschaft. Es ist schwer vorstellbar, dass es heute ein Unternehmen gibt, das nicht in irgendeiner Weise von software abhängt. Während IoT weiter wächst, wird software immer mehr in unsere physische Welt eingebettet.

Es gab eine Zeit, in der die Benutzer den heruntergeladenen software vertrauen konnten, aber das ist heute bei weitem nicht mehr der Fall. Da Hacker immer geschickter darin werden, Malware zu verbreiten, ist es selbst für IT-Fachleute schwierig zu erkennen, ob software oder das von ihnen gekaufte Produkt legitim ist. Hier kommt das Code Signing ins Spiel.

Die Codesignierung ist eine kryptografische Methode, mit der Entwickler nachweisen können, dass ein Teil von software authentisch ist. Durch das digitale Signieren von Anwendungen, software oder eingebetteter Firmware mit einem privaten Schlüssel wird den Endbenutzern der Nachweis erbracht, dass der Code aus einer vertrauenswürdigen und legitimen Quelle stammt und dass er seit seiner Veröffentlichung nicht verändert wurde.

"Wenn Sie einen Code signieren, geben Sie damit zu verstehen, dass software von Ihrer Organisation stammt und dass Sie dahinter stehen." Ted Shorter | CTO & Mitbegründer, Keyfactor

Wie Code Signing verwendet wird

Unternehmens-IT

IT-Teams in Unternehmen müssen sicherstellen, dass alle internen Skripte oder Dienstprogramme, die im gesamten Unternehmen eingesetzt werden, signiert sind, um Manipulationen durch interne Benutzer oder externe Bedrohungen zu verhindern.

IoT Hersteller

Im aufstrebenden Internet der Dinge (IoT) ist die Codesignierung die effektivste Methode, um die Integrität von Geräten von der Aktivierung über Firmware- und software -Updates zu gewährleisten.

Mobile App-Entwickler

Beliebte App-Stores von Microsoft, Google und Apple verlangen, dass mobile Apps signiert werden, bevor sie eingereicht und zum Kauf angeboten werden können.

Software Anbieter

Die Entwickler von software sind oft verpflichtet, den Code zu signieren, um die Installation zu unterstützen. Betriebssysteme wie Windows und macOS warnen Benutzer, wenn software oder Treiber nicht signiert sind.

Warum die Sicherheit von Code Signing wichtig ist

Code Signing ohne Sicherung Ihrer privaten Schlüssel kann Sie einem größeren Risiko aussetzen als gar kein Code Signing. Angreifer versuchen, diese Schlüssel zu kompromittieren, um bösartigen Code zu signieren und an Ihre Kunden zu verteilen - getarnt als legitime software oder Firmware.

Illustration der städtischen Gebäude

Schlüsseldiebstahl

Wenn die privaten Schlüssel, die mit Ihren Code Signing-Zertifikaten verbunden sind, kompromittiert werden, ist das Spiel vorbei. Gestohlene Code Signing-Schlüssel sind der Hauptgewinn für Hacker - sie werden entweder verkauft oder zur Erstellung signierter Malware verwendet, die anscheinend von Ihren Entwicklern veröffentlicht wurde.

Verletzung der Unterschriftspflicht

Hacker brauchen Ihre Schlüssel nicht, um Malware zu signieren. Wenn Build-Server oder Entwickler-Workstations mit ungehindertem Zugang zu Code-Signierungssystemen angegriffen werden, kann ein Angreifer einfach Malware zum Signieren einreichen und unentdeckt verteilen.

Interner Mißbrauch

Entwickler sind auf Code spezialisiert, nicht auf Sicherheit. Code Signing-Schlüssel und -Zertifikate können von Entwicklern leicht missbraucht oder verlegt werden, wodurch es für potenzielle Angreifer viel einfacher wird, die Integrität Ihrer Code Signing-Vorgänge zu untergraben.

Die Auswirkungen von Code Compromise

Software Verleger, Gerätehersteller und interne Entwicklungsteams haben sich für Code Signing entschieden, um ihr geistiges Eigentum, ihre Unternehmensmarke und ihre Endbenutzer zu schützen. Das Vertrauen und die Integrität von Code Signing hängen jedoch vollständig von der Sicherheit Ihrer Schlüssel ab.

Ein einziger Bruch in dieser "Vertrauenskette" kann Ihr gesamtes Unternehmen zum Stillstand bringen. Die Bemühungen, Zertifikate schnell zu widerrufen und neu auszustellen, Kunden zu benachrichtigen und ein neu signiertes Update herauszugeben, sind teuer. Dies führt zu Umsatzeinbußen und zu den Kosten für die Wiederherstellung des Vertrauens bei Ihren Benutzern, Partnern und Investoren.

"In den letzten zwei Jahren gab es in Unternehmen durchschnittlich 4 Vorfälle, bei denen Code Signing-Schlüssel und Zertifikate missbraucht wurden. Die durchschnittlichen Kosten für diese Vorfälle betrugen 15 Millionen US-Dollar." - Ponemon Report 2019, Die Auswirkungen von ungesicherten digitalen Identitäten

Kennen Sie Ihre Risiken

Die jüngsten Code-Signing-Angriffe machen deutlich, wie wichtig das Management von Reputationsrisiken ist. Unabhängig davon, ob Sie software nutzen oder verkaufen, müssen alle Unternehmensleiter in das Vertrauen investieren, das mit ihrer digitalen Marke verbunden ist - und dasselbe von ihren Anbietern erwarten.

Illustration von Gebäuden, von denen eines eine Ausschreibung hat

Adobe-Verletzung

Berichtet: 2012

BREACH

Hacker drangen in einen Build-Server ein, der Zugriff auf das Adobe Code Signing System hatte. Nach dem Eindringen nutzten die Hacker den Server, um Malware mit einem gültigen Code Signing-Zertifikat zu signieren. Adobe reagierte mit dem Entzug des Zertifikats, was sich auf drei seiner Anwendungen und Millionen von Nutzern auswirkte.

Bit9 Vorfall

Berichtet: 2013

THEFT

Bit9 erhielt Berichte von seinen Kunden, dass Malware in ihren Netzwerken entdeckt wurde - Malware, die mit dem Bit9-eigenen Code Signing-Zertifikat digital signiert war. Später stellte sich heraus, dass Hacker eine virtuelle Maschine infiltriert und ein Zertifikat gestohlen hatten, um die Malware zu signieren und an mindestens drei Bit9-Kunden zu verteilen.

D-Link Leck

Berichtet: 2015

MISUSE

Hacker müssen nicht immer ein gültiges Code Signing-Zertifikat stehlen, vor allem dann nicht, wenn Hersteller es unwissentlich selbst veröffentlichen. Im Jahr 2015 veröffentlichten die Entwickler des Netzwerkgeräteherstellers D-Link versehentlich vier private Code-Signierungsschlüssel in der Firmware open-source . Es wurde keine bekannte Malware mit diesen Schlüsseln signiert, aber D-Link wurde für den Vorfall heftig kritisiert.

Saugnapf APT

Berichtet: 2016

THEFT

Eine in China ansässige APT-Gruppe (Advanced Persistent Threat), bekannt als Suckfly, stahl Code-Signatur-Zertifikate von mindestens neun verschiedenen Unternehmen in Südkorea. Die Gruppe nutzte diese Zertifikate dann zwei Jahre lang zum Signieren von Hacktools und Malware in einer gezielten Kampagne gegen Unternehmen in Indien.

D-Link (erneut)

Berichtet: 2018

THEFT

Die in Taiwan ansässigen Technologieunternehmen D-Link und Changing Information Technology wurden von einer anderen APT-Gruppe mit dem Namen BlackTech angegriffen. Mindestens zwei Code Signing-Zertifikate wurden gestohlen und zum Signieren von Windows-Malware namens PLEAD verwendet, die Passwörter stiehlt, die in die Webbrowser der infizierten Computer eingegeben werden.

ShadowHammer

Berichtet: 2019

BREACH

ASUS - ein bekannter Hersteller von Laptops und Mobiltelefonen - hat mindestens fünf Monate lang unwissentlich Malware an Tausende seiner Kunden verteilt. Dieser ausgeklügelte software Angriff auf die Lieferkette wurde als "Operation ShadowHammer" bekannt. Die Hacker kompromittierten zwei ASUS Code Signing-Zertifikate und verbreiteten signierte Malware über das ASUS Live Update Utility, wodurch sie Hintertüren in mindestens eine Million Geräte einbauten.

"Wir haben gesehen, dass die Updates vom Live Update ASUS-Server heruntergeladen wurden. Es handelte sich um trojanisierte oder bösartige Updates, die von ASUS signiert waren." - Hacker haben ASUS Software Updates gekapert, um Backdoors auf Tausenden von Computern zu installieren

Hindernisse auf dem Weg zum Erfolg

Die gute Nachricht ist, dass die meisten unabhängigen software Anbieter (ISVs) und Gerätehersteller die Bedeutung von Code Signing erkannt haben. Die größte Herausforderung besteht darin, sie so zu implementieren, dass sie sowohl den Anforderungen der Entwickler als auch denen der IT-Sicherheitsteams gerecht wird.

Geschwindigkeit vs. Sicherheit

Sicherheits- und PKI-Teams würden es vorziehen, private Schlüssel zu isolieren und zu sperren, aber Entwickler benötigen schnellen Zugriff, um Code zu signieren und ihn in die Produktion zu überführen. Das größte Problem besteht darin, Schutzmaßnahmen zu implementieren, die den Missbrauch von Schlüsseln und Zertifikaten verhindern, ohne die Produktivität Ihrer Entwickler zu beeinträchtigen.

Anspruchsvolle Bedrohungen

Software Angriffe auf die Lieferkette werden immer häufiger und raffinierter. Hacker, Cyber-Kriminelle und sogar staatlich geförderte Angriffe gefährden die Sicherheit und Integrität Ihrer software . Da die Kosten für Code-Signing-Zertifikate auf dem Untergrundmarkt weiter steigen, haben einige Angreifer einen direkteren Ansatz gewählt.

DevOps & Agile Entwicklung

DevOps-Praktiken haben die IT-Welt im Sturm erobert. Schnelle und häufige inkrementelle software Builds sind das Gebot der Stunde. Alle Änderungen am Software Entwicklungslebenszyklus (SDLC) können mehr Risiken mit sich bringen, als sie verhindern sollen. Die Sicherheit muss sich an bestehende DevOps-Workflows und Signierprozesse anpassen.

Verteilte Entwicklungsteams

Heutige Entwicklungsteams arbeiten an weltweit verteilten Standorten zusammen. Wenn ein entferntes Team Code signieren muss, besteht die einfache Lösung darin, ein Signierzertifikat zu erwerben. Einmal gekaufte Zertifikate bleiben oft in der Reichweite von Hackern und außerhalb des Zugriffs Ihres Sicherheitsteams auf verteilten Entwickler-Workstations oder Build-Servern.

Der Fahrplan zum sicheren Signieren von Code

Genug der Theorie. Kommen wir nun zu den vier praktischen Schritten, die Ihr Unternehmen unternehmen kann, um diese Herausforderungen zu meistern, und die richtige Lösung, die Sie dabei unterstützt

01 | Private Schlüssel sichern

Private Schlüssel, die Entwickler zum Signieren von Code verwenden, sind für Hacker von unschätzbarem Wert. Sobald sie kompromittiert sind, können diese Schlüssel verwendet werden, um praktisch jeden Code zu signieren und ihn an Tausende von Benutzern zu verteilen. Diese Art von Angriffen wird immer häufiger, da die Hacker versuchen, Malware-Erkennungstools zu umgehen.

Illustration der durch Verschlüsselung geschützten Server

Keine Branche und kein Unternehmen ist davor gefeit. Vertrauenswürdige Anbieter im Bereich Sicherheit und hardware wie Bit9 (jetzt Carbon Black) und D-Link sind hartnäckigen Angreifern zum Opfer gefallen. Diese Angreifer haben sich erfolgreich durch ihr Netzwerk geschlängelt, um Code-Signierungsschlüssel zu finden und zu kompromittieren und sie gegen ihre eigenen Kunden einzusetzen.

Die Last, den Code zu signieren, liegt oft bei den Entwicklern, die sich auf das Schreiben von Code spezialisiert haben und nicht auf die Sicherung von Schlüsseln. Infolgedessen landen die Schlüssel an ungesicherten Netzwerkorten wie Entwickler-Workstations, Build-Servern und wer weiß, wo sonst noch. IT-Sicherheitsteams wissen oft nicht genau, wie viele Code Signing-Zertifikate sie haben oder wo sie gespeichert sind.

Vollständige Bestandsaufnahme Ihrer Landschaft

Digitale Zertifikate und Schlüssel, die für die Code-Signierung verwendet werden, sind ein wertvolles Gut, doch 71 % der Unternehmen wissen nicht genau, wie viele sie besitzen. Beginnen Sie zunächst mit einer Bestandsaufnahme, wie viele Code Signing-Schlüssel Sie haben, wo sie sich befinden und wie sie gespeichert sind.

Zentralisierte Verwaltung von Schlüsseln und Zertifikaten

Lokales Code Signing schafft Sicherheitssilos und erhöht die Kosten. Eine zentralisierte, serverseitige Lösung kann die Verwaltung vereinfachen, die Sicherheit verbessern und den Bedarf an einem separaten Code Signing-Zertifikat für jeden Entwickler oder Buildstream beseitigen.

Speichern von privaten Schlüsseln in einem zertifizierten HSM

Hardware Sicherheitsmodule (HSM) sind der effektivste Weg, um sicherzustellen, dass Ihre privaten Schlüssel unter Ihrer Kontrolle bleiben. Die Schlüssel können im HSM gespeichert oder generiert werden und zum Signieren von Code an jedem beliebigen Ort verwendet werden, ohne dass Sie das hardware verlassen müssen.

Wählen Sie eine flexible Lösung

Wählen Sie eine Lösung, die einfach zu implementieren und zu skalieren ist, wenn die Nachfrage nach Code Signing steigt. Cloud-HSM-Dienste bieten alle Vorteile der Sicherheit auf hardware-Level, aber ohne die Vorabkosten, die manuelle Einrichtung und die laufende Wartung von dedizierten hardware HSMs.

02 | Sichere Signiervorgänge

Wenn ein Hacker in Ihr Entwicklernetzwerk eindringt, muss er nicht unbedingt Ihre Schlüssel stehlen. Indem sie sich Zugang zu einem Build-Server oder einer Entwickler-Workstation mit Zugriff auf die Code-Signierungsinfrastruktur verschaffen, können Hacker einfach Malware einreichen, die signiert und unentdeckt verbreitet werden soll.

Illustration von Menschen mit Laptops um ein großes Schildsymbol

Diese Bedrohungen, besser bekannt als "software Angriffe auf die Lieferkette", sind noch schwieriger zu erkennen, da sie oft entweder von einem Insider oder einem Angreifer mit direktem Zugriff auf die Code-Signierung ausgehen. Selbst Unternehmen wie Adobe und ASUS, die über hochentwickelte Sicherheitsteams verfügen, waren monatelang nicht in der Lage, Verstöße in ihrer Code-Signing-Infrastruktur zu erkennen.

Angreifer werden immer den Weg des geringsten Widerstands finden. Die Speicherung privater Schlüssel in einem HSM verringert zwar das Risiko eines Schlüsseldiebstahls, aber Sie können darauf wetten, dass entschlossene Angreifer einen anderen Weg finden werden. Im Fall von Adobe waren die privaten Schlüssel zwar sicher in einem HSM gespeichert, aber die Hacker verschafften sich stattdessen Zugang zu einem Build-Server und forderten einfach Signaturen für bösartigen Code an.

Es muss unbedingt sichergestellt werden, dass nur die richtigen Entwickler den richtigen Code signieren können - und zwar zum richtigen Zeitpunkt. Indem Sie nur autorisierten Benutzern die Möglichkeit geben, Code zu signieren und zu genehmigen, können Sie sicherstellen, dass selbst dann, wenn ein Hacker in Ihr Netzwerk eindringt. Dadurch wird verhindert, dass Hacker Zugang zu Ihrer wichtigen Code-Signatur-Infrastruktur erhalten.

Definieren Sie Rollen und trennen Sie Aufgaben

Legen Sie getrennte Rollen für diejenigen fest, die befugt sind, Code zum Signieren einzureichen, und diejenigen, die befugt sind, Signieranfragen zu genehmigen. Durch die Aufteilung dieser Aufgaben wird sichergestellt, dass nur vertrauenswürdige Benutzer Code signieren können und Hacker von Signiervorgängen ferngehalten werden.

Durchsetzung von Richtlinien und Praktiken zur Unterzeichnung von Kodizes

Stellen Sie sicher, dass auch autorisierte Entwickler nur für einen bestimmten Zeitraum, eine bestimmte Anzahl von Signaturen und andere Parameter zum Signieren von Code berechtigt sind, um unrechtmäßiges Signieren oder internen Missbrauch zu verhindern. Suchen Sie nach Lösungen, mit denen Sie diese Richtlinien durchsetzen können.

Segmenttest & Freigabeunterzeichnung

Wenn Code in der Entwicklungs- und Testphase signiert wird, sollten die Zertifikate nicht mit denen identisch sein, die für die Produktionssignierung verwendet werden. Stellen Sie sicher, dass die Entwicklungsschlüssel nicht mit derselben Vertrauensbasis verknüpft sind wie die für die Signatur des Produktionscodes verwendeten Schlüssel.

Signieraktivitäten verfolgen

Entwicklungs- oder Release-Manager sollten jede Verwendung von privaten Schlüsseln zum Signieren von Code verfolgen. So können Sie sicherstellen, dass nur die richtigen Entwickler den richtigen Code mit den richtigen Schlüsseln signieren.

03 | Integrieren mit DevOps

Es ist kein Vorwurf an Entwickler, wenn sie sagen, dass Sicherheit nicht ihre oberste Priorität ist. Um der digitalen Entwicklung immer einen Schritt voraus zu sein, müssen Entwicklungsteams schnell Code schreiben und in Produktion geben. Die Sicherheitsteams üben jedoch immer mehr Druck auf die Entwickler aus, um die Anforderungen zu erfüllen, die oft den Erstellungs- und Freigabeprozess behindern.

Illustration eines Codes auf einem Computerbildschirm

Die Verantwortung für die Sicherheit von Code-Signierschlüsseln sollte nicht den Entwicklern aufgebürdet werden - sie brauchen einfach Zugang, um Code schnell einreichen und signieren zu können. Es geht darum, das richtige Gleichgewicht zwischen den IT-Sicherheitsanforderungen, private Schlüssel wegzusperren, und den Bedürfnissen der Entwickler zu finden, jeden Code von überall aus und ohne Unterbrechung zu signieren.

Formalisieren Sie Ihren Code-Signierungsprozess

Dokumentieren, verfolgen und befolgen Sie konsequent die Schritte, die für das Signieren von Code als Teil Ihres software Entwicklungslebenszyklus (SDLC) erforderlich sind. Legen Sie fest, welche Prüfungen und Verifizierungen (z. B. QA, Pen-Tests, Virenscans, statische Analysen usw.) vor dem Signieren durchgeführt werden müssen.

Verteilte Entwicklungsteams abdecken

Die Fähigkeit, Remote Signing zu ermöglichen, ist bei den heutigen verteilten Entwicklungsteams von entscheidender Bedeutung. Entscheiden Sie sich für eine Lösung, die es den Entwicklern ermöglicht, Code von jedem beliebigen Ort aus zu signieren, ohne dass die Schlüssel jemals die sicheren Grenzen von hardware verlassen.

Minimierung der Änderungen im SDLC

Verfolgen Sie einen kooperativen Ansatz, um sicherzustellen, dass Sicherheits- und Entwicklungsteams gemeinsame Ziele erreichen, um Schlüssel zu schützen, ohne den SDLC zu stören. Es ist wichtig, Lösungen zu finden, die sich an Ihre Prozesse anpassen, nicht umgekehrt.

Integration mit Signierwerkzeugen und Plattformen

Direkte Integration von Code-Signing-Prozessen in bestehende Tools und Arbeitsabläufe, wann immer dies möglich ist. Code Signing sollte mehrere Code-Dateiformate, Plattformen (z. B. Microsoft Authenticode, Java usw.) und Zertifizierungsstellen (CA) unterstützen.

04 | Überwachung und Prüfung der Einhaltung

Die Implementierung von Sicherheit ist eine Sache, aber die Einhaltung der Code Signing-Richtlinien und Best Practices durch die Entwickler ist eine andere. Code Signing-Sicherheit ist ein kontinuierlicher Prozess und keine einmalige Angelegenheit. Zertifikate laufen unweigerlich ab, Schlüssel und Algorithmen werden mit der Zeit schwächer, und die Bedrohungen entwickeln sich ständig weiter. Sicherheitsteams müssen in der Lage sein, diese Risiken schnell zu erkennen und effektiv darauf zu reagieren.

Überwachung von Code-Signiervorgängen

Durch die Überwachung von Code Signing-Anfragen, Autorisierungen und Signaturen in Echtzeit können Sicherheitsteams anormale Aktivitäten effektiver erkennen und innerhalb von Minuten statt Monaten reagieren.

Illustration von Männern, die GUIs verwenden

Schlüsselverwendung protokollieren und prüfen

Führen Sie ein umfassendes Prüfprotokoll darüber, wer wann Code Signing Keys verwendet hat und wer die Aktion autorisiert hat. Überprüfen Sie die Protokolle regelmäßig auf verdächtige Aktivitäten und stellen Sie sicher, dass diese Protokolle nicht manipuliert werden können.

Code Signing-Zertifikate einbeziehen CLM

Alle digitalen Zertifikate in Ihrer Organisation sollten durch ein Zertifikats-Lebenszyklus-Management (CLM) geregelt werden, einschließlich Extended Validation- und Standard Code Signing-Zertifikate - mit Bestimmungen darüber, wie sie beantragt, ausgestellt, erneuert oder widerrufen werden.

Enterprise Code Signing mit Keyfactor

Keyfactor Code Assure ist die einzige Plattform, die Ihnen vollständige Transparenz, Kontrolle und Schutz von Code Signing-Vorgängen bietet, ohne die bestehenden Build- und Release-Workflows zu unterbrechen. Code Signing-Zertifikate und -Schlüssel werden zentral in einem manipulationssicheren HSM gespeichert. Die privaten Schlüssel verlassen das HSM nicht mehr. Robuste APIs ermöglichen Entwicklern überall einen schnellen und kontrollierten Zugang zur Durchführung von Code Signing, während Sicherheitsteams einen vollständigen Prüfpfad für Code Signing-Aktivitäten erhalten.

Code Signing für das Unternehmen

Finden Sie heraus, wie die Plattform Keyfactor Ihre PKI modernisieren, Zertifikatsausfälle verhindern und die Prozesse beschleunigen kann.