
Was ist Code Signing? Die endgültige Roadmap für sicheres Code Signing
Definition
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 Missgeschicke bei Code-Signierungsvorgä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.
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, erklären Sie damit, dass die software aus Ihrem Unternehmen software und Sie dafür einstehen.“
Ted Shorter | CTO und 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.

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.

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.
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.
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.
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.
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.
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.
Sehen Sie sich die Keyfactor in Aktion an und entdecken Sie, wie Sie jede Maschinenidentität finden, kontrollieren und automatisieren können.

Der Fahrplan zum sicheren Signieren von Code
Genug der Theorie. Lassen Sie uns nun einen Blick auf die vier praktischen Schritte werfen, mit denen Ihr Unternehmen diese Herausforderungen bewältigen kann, sowie auf die richtige Lösung, die Ihnen dabei hilft, dieses Ziel zu erreichen.
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.

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.

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.

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.

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 Signum ist die einzige Plattform, die Ihnen vollständige Transparenz, Kontrolle und Schutz von Code Signing-Vorgängen bietet, ohne bestehende 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.

Sichere Geräte. Kontrollieren Sie Ihre Zukunft.
Fordern Sie eine Live-Demo mit einem Experten an, um zu erfahren, wie Keyfactor Ihnen dabei helfen Keyfactor , digitales Vertrauen und Krypto-Agilität in Ihrem Unternehmen zu ermöglichen.