Durch das Einschleusen von bösartigem Code in Entwicklungs- und Distributionsumgebungen gelingt es Angreifern immer häufiger, Bedrohungen und Hintertüren in Software einzubetten. Da die betroffene Software für die Opfer aus vertrauenswürdiger Quelle zu stammen scheint, sind häufig erhebliche Schäden die Folge. Dauert es doch nicht selten mehrere Monate, bis jemand auf die Schwachstelle aufmerksam wird. [...]
Code Signing, das Signieren von Code, hat sich als ein zentrales Verfahren etabliert, hier effektiv gegenzusteuern. Es ermöglicht es Entwicklern und Distributoren, die Integrität und Authentizität ihres Software-Codes sicherzustellen. Den Kern eines jeden signierten Code-Artefakts bildet ein sogenanntes Code-Signing-Zertifikat. Hierbei handelt es sich um ein X.509-Zertifikat, das mit einer verifizierten Identität und einem privaten Schlüssel verbunden ist. Ausgestellt wird es von einer vertrauenswürdigen internen oder externen Zertifizierungsstelle (CA). Um eine Kompromittierung oder ein Ablaufen von Code-Signing-Zertifikaten zu vermeiden, müssen diese sorgfältig verwaltet werden.
Fünf Tipps für das Management von Code-Signing-Zertifikaten
- Zentralisieren Sie die Ausstellung und die Bestandsübersicht Ihrer Zertifikate: Verwenden Sie eine zentralisierte Plattform, um Code-Signing-Zertifikate von zugelassenen internen oder öffentlichen Zertifizierungsstellen ausstellen und nachverfolgen lassen zu können. Legen Sie sich ein vollständiges Inventarsämtlicher aktiven, abgelaufenen und widerrufenen Code-Signing-Zertifikate all ihrer Entwicklungsteams an und pflegen Sie es.
- Implementieren Sie richtlinienbasierte Zugriffskontrollen: So stellen Sie sicher, dass nur bestimmte Systeme oder Teams Signaturschlüssel anfordern und verwenden können.
- Schützen Sie Ihre private Schlüssel mit Hardware-basierter Sicherheit: Speichern Sie die für die Signierung verwendeten privaten Schlüssel in FIPS-konformen HSMs oder sicheren Datentresoren mit API-basiertem Zugriff. Auf diese Weise sind die Schlüssel vor unbefugten Zugriffen geschützt und stehen dennoch zum Signieren Ihres Codes bereit. Wechseln Sie diese Schlüssel regelmäßig aus und überprüfen Sie sie, um Sicherheitsrisiken zu verringern und die Gewährleistung der Compliance-Anforderungen sicherzustellen. Die Zertifikate sollten stets lange vor ihrem Ablaufdatum ausgetauscht werden.
- Automatisieren Sie die Unterzeichnungsabläufe: Integrieren Sie Signiervorgänge in CI/CD-Pipelines. Wenden Sie Zeitstempel und Signaturvalidierungen als Teil Ihrer Build-Releases an, um Rückverfolgbarkeit und Integrität sicherzustellen.
- Überwachen und prüfen Sie jedes Unterzeichnungsereignis: Verwenden Sie zentralisierte Protokollierungs- und Überwachungstools, um jede Signierungsanfrage zu verfolgen und anhand der Richtlinien zu überprüfen. Implementieren Sie Echtzeitwarnungen für Anomalien wie Signaturen aus ungewöhnlichen Quellen oder außerhalb der genehmigten Zeitfenster.
All diese Maßnahmen können und werden aber nur gelingen, wenn Ihr Zertifikatsmanagement für die erforderliche Kryptoagilität sorgen kann. Ihr Code Signing muss ebenso agil gehandhabt werden können, wie der Softwareentwicklungsprozess, dem es dient.
Helfen kann hier eine automatisierte PKI-Lösung. In Echtzeit überwacht sie die gesamte PKI-Landschaft, widerruft kompromittierte Zertifikate und erneuert solche, die auszulaufen drohen. Moderne PKI-Lösungen sind längst so weit, dass sie sich direkt in moderne DevOps- und CI/CD-Pipelines integrieren lassen. Ein umfassendes und effektives Code Signing wird so zum Kinderspiel.
* Jiannis Papadakis ist Director of Solutions Engineering bei Keyfactor.

Be the first to comment