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.