Zum Inhalt

47-Tage-Zertifikate sind im Anmarsch. Sind Sie bereit?

Jetzt handeln →

Schützen Sie Ihr Unternehmen vor Angriffen durch unberechtigte Codeausführung

Schützen Sie Ihr Unternehmen vor Angriffen durch unberechtigte Codeausführung

Angriffe durch unbefugte Codeausführung stellen für Unternehmen jeder Größe eine erhebliche Bedrohung dar. Diese Angriffe ermöglichen es böswilligen Akteuren, aus der Ferne in die Systeme eines Unternehmens einzudringen und ihren Code auszuführen, was potenziell katastrophale Schäden verursachen kann.

Diese Angriffe nutzen Schwachstellen in Software, Betriebssystemen und Anwendungen aus. Hier ist eine Übersicht über den Angriffsablauf:

Kurz gesagt: Die Verteidigung gegen unautorisierte Codeausführung verläuft von der Identifizierung der Schwachstelle über die Ausnutzung des Exploits bis hin zur Codeausführung. Verschiedene Kontrollmechanismen greifen in unterschiedliche Phasen ein. Sichere Entwicklungsmethoden und das Einspielen von Patches schließen die Schwachstelle selbst; Codesignierung und Build-Verifizierung verhindern, dass ein manipuliertes Artefakt ausgeführt werden kann, selbst wenn an anderer Stelle in der Kette eine Schwachstelle besteht.

Wichtige Erkenntnisse

  • Build-Verifizierung und Patch-Management lösen unterschiedliche Probleme: Die Build-Verifizierung erkennt manipulierte oder ausgetauschte Abhängigkeiten; das Patch-Management behebt bekannte Schwachstellen in legitimen, unveränderten Abhängigkeiten. Equifax (2017) benötigte Letzteres; SolarWinds (2020) Ersteres.
  • Diese Seite ordnet die Kontrollmechanismen allgemein den Angriffsphasen zu. Die spezifische Abfolge der Maßnahmen bei einem aktiven Codesignaturangriff finden Sie unter [Link einfügen]. Stärkung der Sicherheit bei der Codesignierung gegen Integritätslücken.
  1. Identifizierung von Schwachstellen

    Angreifer scannen Netzwerke und Systeme ständig auf Schwachstellen – von ungepatchter Software bis hin zu Fehlern in der Anwendungslogik. Angreifer zielen auf verschiedene Software-Schwachstellen ab, wie zum Beispiel:

    • Pufferüberläufe: Diese treten auf, wenn eine Anwendung versucht, mehr Daten in einen dafür vorgesehenen Speicherpuffer (Speicherbereich) zu schreiben, als dieser aufnehmen kann. Dadurch können benachbarte Speicherbereiche überschrieben werden, was Angreifern potenziell ermöglicht, eigenen Code einzuschleusen.

    • SQL-Injection: Hierbei werden Schwachstellen in der Art und Weise ausgenutzt, wie Anwendungen Benutzereingaben in Datenbankabfragen verarbeiten. Schadcode in SQL-Dateien kann durch scheinbar harmlose Benutzereingaben eingeschleust werden, wodurch die Datenbank zur Ausführung unautorisierter Befehle verleitet wird.

    • Cross-Site-Scripting (XSS): Angreifer schleusen Schadcode in Webseiten ein. Beim Besuch der Seite wird dieser Schadcode im Browser des Nutzers ausgeführt und kann dabei Sitzungs-Cookies stehlen, Nutzer auf schädliche Webseiten umleiten oder die Webseite verunstalten.

    • Logikfehler: Manchmal entstehen Sicherheitslücken aufgrund von Fehlern in der Anwendungslogik selbst. Angreifer können diese Logikfehler ausnutzen, um Sicherheitsmaßnahmen zu umgehen und unautorisierten Code auszuführen.

  2. Exploit-Bereitstellung

    Sobald eine Schwachstelle identifiziert ist, liefert der Angreifer eine schädliche Nutzlast – einen Code, der diese ausnutzen soll. Dies kann auf verschiedene Arten geschehen, beispielsweise:

    • Phishing-E-Mails: E-Mails mit schädlichen Anhängen oder Links, die beim Anklicken die Schadsoftware auf das System des Opfers herunterladen.

    • Drive-by-Downloads: Schadcode kann auf kompromittierten Webseiten eingebettet werden. Dieser Code wird heruntergeladen und kann beim Besuch der Webseite automatisch ausgeführt werden.

    • Social Engineering: Angreifer können Social-Engineering-Taktiken einsetzen, um Benutzer dazu zu verleiten, die schädliche Nutzlast herunterzuladen oder auszuführen.

  3. Codeausführung

    Wird der Benutzer Opfer des Exploits, wird der Schadcode auf dem Zielsystem ausgeführt. Dieser Code kann dann verschiedene Aktionen ausführen, beispielsweise:

    • Diebstahl sensibler Daten (z. B. Kundeninformationen, Finanzunterlagen)

    • Vollständige Kontrolle über das System übernehmen

    • Bereitstellung zusätzlicher Malware

    • Unterbrechung kritischer Vorgänge

Strategien zur Abwehr unbefugter Codeausführung

Obwohl diese Angriffe eine ernsthafte Bedrohung darstellen, gibt es proaktive Maßnahmen, um die Anfälligkeit der Organisation deutlich zu verringern:

Sichere Entwicklungspraktiken (SDPs)

Integrieren Sie Sicherheitsaspekte in den gesamten Lebenszyklus der Softwareentwicklung. Dazu gehören die Implementierung sicherer Codierungspraktiken, die Durchführung regelmäßiger Codeüberprüfungen zur Identifizierung und Behebung potenzieller Schwachstellen sowie die Durchführung von Schwachstellenbewertungen während der Entwicklung.

Konkrete Schritte

  • Schulung zum sicheren Codieren

    Dieses Training vermittelt Entwicklern das notwendige Wissen und die notwendigen Tools zum Schreiben von sicherem Code. Es umfasst Schulungen zu häufigen Programmierschwachstellen wie Pufferüberläufen und SQL-Injection sowie Best Practices für sichere Programmiertechniken wie Eingabevalidierung und ordnungsgemäßes Speichermanagement.

  • Statische Anwendungssicherheitstests (SAST)

    Integrieren Sie SAST-Tools in die Entwicklungspipeline. Diese Tools analysieren den Code bereits früh im Entwicklungsprozess auf Schwachstellen und ermöglichen es Entwicklern, Probleme zu erkennen und zu beheben, bevor der Code bereitgestellt wird.

  • Code-Rezensionen

    Implementieren Sie einen Code-Review-Prozess, bei dem Entwickler den Code der anderen auf Funktionalität und bewährte Sicherheitspraktiken prüfen. Dieser kollaborative Ansatz hilft, potenzielle Schwachstellen zu erkennen, bevor sie in die Produktion gelangen.

  • Dynamische Anwendungssicherheitstests (DAST)

    Ergänzen Sie SAST mit DAST-Tools, die reale Angriffe auf die Anwendungen simulieren, um Schwachstellen aufzudecken, die bei der statischen Analyse möglicherweise übersehen werden.

Praxisbeispiele

  • Prinzip des geringsten Privilegs

    Gewähren Sie Zugriff basierend auf den Mindestanforderungen für Aufgaben. Dies reduziert den potenziellen Schaden durch einen unbefugten Angriff.

  • Eingabevalidierung und -bereinigung

    Alle Benutzereingaben müssen vor der Verarbeitung gründlich geprüft und bereinigt werden. Dies hilft, Angreifer daran zu hindern, Schadcode einzuschleusen, der als scheinbar harmlose Daten getarnt ist.

  • Regelmäßige Sicherheitsupdates

    Aktualisieren Sie regelmäßig alle Entwicklungsbibliotheken und Frameworks, um sicherzustellen, dass die neuesten sicheren Versionen verwendet werden.

Beispiel aus der Praxis

Heartbleed , eine schwerwiegende Sicherheitslücke in der OpenSSL -Kryptografiebibliothek , die 2014 entdeckt wurde und die Ausführung unautorisierten Codes ermöglichte, verdeutlicht die Bedeutung sicherer Programmierpraktiken (SDPs). Diese Sicherheitslücke entstand durch einen Pufferüberlauf im Code der Bibliothek. Wären sichere Programmierpraktiken und Code-Reviews konsequent umgesetzt worden, hätte diese Sicherheitslücke möglicherweise erkannt und behoben werden können, bevor Angreifer sie massenhaft ausnutzen konnten.

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Systeme zur Erkennung und Verhinderung von Einbrüchen (IDS/IPS)

Ein IDS/IPS kann bösartigen Datenverkehr erkennen und blockieren, bevor er die Systeme erreicht. Der Einsatz dieser Tools zur Überwachung des Netzwerkverkehrs auf verdächtige Aktivitäten kann auf einen Versuch zur Ausführung nicht autorisierten Codes hinweisen.

Konkrete Schritte

  • Strategischer Einsatz

    Um den gesamten ein- und ausgehenden Datenverkehr zu überwachen, setzen Sie IDS/IPS-Sensoren an wichtigen Engpässen des Netzwerks ein, beispielsweise an Firewalls und Gateways.

  • Signatur-Updates

    Halten Sie einen regelmäßigen Aktualisierungsplan für die IDS/IPS- Signaturen ein . Diese Signaturen sind wie digitale Fingerabdrücke, die dem System helfen, bekannte schädliche Datenverkehrsmuster im Zusammenhang mit den Angriffen zu identifizieren.

  • Regeloptimierung

    Die IDS/IPS-Regeln sollten so angepasst werden, dass ein ausgewogenes Verhältnis zwischen Sicherheit und der Minimierung von Fehlalarmen (Alarme, die durch harmlose Aktivitäten ausgelöst werden) besteht. Dadurch wird sichergestellt, dass sich das System auf die Erkennung echter Bedrohungen konzentriert.

  • Sicherheitsinformations- und Ereignismanagement (SIEM)

    Integrieren Sie das IDS/IPS-System mit einem SIEM-System , um Protokolle und Sicherheitsereignisse aus verschiedenen Quellen zentral zu erfassen. Dies ermöglicht eine umfassende Bedrohungsanalyse und eine schnellere Reaktion auf potenzielle Vorfälle unautorisierter Codeausführung.

Praxisbeispiele

  • Führen Sie regelmäßige Tests durch

    Planen Sie regelmäßige Penetrationstests ein, um Angriffe zu simulieren und die Wirksamkeit von IDS/IPS bei der Erkennung nicht autorisierter Zugriffsversuche zu bewerten.

  • Incident-Reaktionsplan

    Entwickeln Sie einen klar definierten Incident-Response-Plan, der die Schritte beschreibt, die zu unternehmen sind, wenn ein IDS/IPS einen potenziellen Angriff erkennt. Dieser Plan sollte Verfahren zur Untersuchung des Vorfalls, zur Eindämmung der Bedrohung und zur Behebung etwaiger Schwachstellen enthalten.

Beispiel aus der Praxis

Der WannaCry-Ransomware-Angriff von 2017 , der eine Schwachstelle im Microsoft Windows Server Message Block (SMB) ausnutzte, verdeutlicht die Bedeutung von Intrusion-Detection-Systemen (IDS) und Intrusion-Prevention-Systemen (IPS). Unternehmen mit korrekt konfigurierten und aktuellen IDS/IPS-Systemen konnten den schädlichen Datenverkehr von WannaCry erkennen und blockieren, bevor er ihre Systeme infizieren konnte.

Codesignatur

Die Codesignierung beinhaltet die digitale Signatur des Codes mithilfe eines von einer vertrauenswürdigen Zertifizierungsstelle (CA) ausgestellten digitalen Zertifikats . Diese Signatur dient als Authentifizierungsmerkmal und verifiziert Herkunft und Integrität des Codes. Sie erkennt jegliche Änderungen am Code nach der Signierung. Manipulationsversuche führen zur Ungültigkeit der Signatur und warnen so vor potenziellen Bedrohungen.

Konkrete Schritte

  • Besorgen Sie sich ein digitales Zertifikat

    Dieses Zertifikat dient als digitale Identität zum Signieren des Codes. Die CodeSign Secure-Lösung ermöglicht die Verwaltung aller Signaturzertifikate und -richtlinien über eine benutzerfreundliche Oberfläche, wodurch die manuelle Konfiguration auf den einzelnen Entwicklerrechnern entfällt.

  • Integrieren Sie Code Signing in den Build-Prozess

    Automatisieren Sie die Code-Signierung als Teil der Software-Build-Pipeline. Dadurch wird sichergestellt, dass der gesamte freigegebene Code vor der Bereitstellung signiert wird.

  • Sichere Schlüsselverwaltung

    Nutzen Sie Hardware-Sicherheitsmodule (HSMs) für die sichere Speicherung und Verwaltung der Codesignaturschlüssel, um das Risiko eines unberechtigten Zugriffs zu minimieren.

  • Detaillierte Prüfprotokolle

    Führen Sie einen umfassenden Prüfpfad aller Signaturaktivitäten. Dies liefert wertvolle Erkenntnisse für Compliance-Zwecke und erleichtert die Identifizierung potenzieller Sicherheitsvorfälle.

Praxisbeispiele

  • Widerrufen Sie kompromittierte Zertifikate

    Erstellen Sie einen Plan zum sofortigen Widerruf kompromittierter Zertifikate, um zu verhindern, dass Angreifer diese zum Signieren von Schadcode verwenden.

  • Entwickler schulen

    Informieren Sie Entwickler über die Bedeutung der Code-Signierung und die Best Practices für deren Integration in den Entwicklungsprozess.

Beispiel aus der Praxis

Der berüchtigte Lieferkettenangriff auf SolarWinds , bei dem Angreifer das Signaturzertifikat eines legitimen Softwareanbieters kompromittierten, um bösartigen Code in dessen Software-Updates einzuschleusen, unterstreicht die Bedeutung der Codesignierung.

Organisationen mit einem robusten Codesignierungsprozess, der sicheres Schlüsselmanagement und Verfahren zum Zertifikatswiderruf umfasst, waren für diesen Angriff weniger anfällig, da der manipulierte Code die Signaturprüfung nicht bestanden hätte.

Build-Überprüfung

Die Build-Verifizierung geht über die Code-Signierung hinaus und fügt eine weitere Prüfebene hinzu. Dabei werden automatisierte Tools verwendet, um den Build-Prozess zu analysieren und die Integrität des finalen Softwarecodes zu überprüfen. Sie trägt dazu bei, die Integrität von Drittanbieterbibliotheken sicherzustellen und das Risiko von Sicherheitslücken in der Software-Lieferkette zu minimieren.

Konkrete Schritte

  • Quellcode-Hashing

    Berechnung eines eindeutigen Hashs (eines digitalen Fingerabdrucks) des Quellcodes vor dem Build-Prozess. Dieser Hash dient als Vergleichsbasis nach Abschluss des Builds.

  • Code Signing Verifizierung

    Überprüfen des Vorhandenseins und der Gültigkeit digitaler Signaturen auf den Codekomponenten. Dadurch wird sichergestellt, dass der Code nach der Signierung nicht manipuliert wurde.

  • Hash-Validierung

    Nach Abschluss des Build-Prozesses berechnet das Build-Verifizierungstool einen neuen Hash des finalen Softwarepakets. Dieser Hash wird anschließend mit dem ursprünglichen Hash des Quellcodes verglichen. Abweichungen weisen auf mögliche Manipulationen oder Änderungen während des Build-Prozesses hin und weisen auf potenzielle Sicherheitsrisiken hin.

Praxisbeispiele

  • Regelmäßige Updates

    Halten Sie einen regelmäßigen Aktualisierungsplan für die Build-Verifizierungstools ein, um sicherzustellen, dass sie über die neuesten Schwachstellendatenbanken und Erkennungsmechanismen verfügen.

  • Continuous Integration/Continuous Delivery (CI/CD) Pipeline-Integration

    Integrieren Sie die Build-Verifizierung nahtlos in die CI/CD-Pipeline . Dadurch können potenzielle Integritätsprobleme frühzeitig in der Entwicklung erkannt und behoben werden, bevor der Code in der Produktion eingesetzt wird.

  • Berichterstattung und Behebung

    Legen Sie klare Verfahren für die Meldung und Behebung aller im Build-Verifizierungsprozess identifizierten Schwachstellen fest. So stellen Sie sicher, dass rechtzeitig Maßnahmen zur Behebung potenzieller Sicherheitsrisiken ergriffen werden.

Beispiel aus der Praxis

Der Equifax-Datendiebstahl von 2017 wird häufig im Zusammenhang mit der Build-Verifizierung angeführt, ist aber eigentlich ein warnendes Beispiel für schlechtes Patch-Management und nicht für Build-Manipulation. Die Angreifer nutzten eine bekannte, bereits offengelegte Sicherheitslücke (CVE-2017-5638) im Open-Source-Framework Apache Struts aus, die Equifax monatelang nicht behoben hatte, obwohl ein Fix bereits öffentlich verfügbar war.

Die Build-Verifizierung (Hash-Validierung gegen einen als fehlerfrei bekannten Build) hätte dies nicht erkannt, da die laufende Struts-Bibliothek selbst weder manipuliert noch ausgetauscht wurde; es handelte sich um legitime, ungepatchte Software mit einer öffentlich bekannten Schwachstelle. Diese Unterscheidung ist wichtig: Die Build-Verifizierung schützt vor einer kompromittierten oder veränderten Abhängigkeit, während zeitnahes Patch-Management und das Scannen von Abhängigkeitsschwachstellen vor einer bekannten Schwachstelle in einer ansonsten legitimen Software schützen.

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Compliance bei der Abwehr von Angriffen durch unberechtigte Codeausführung

Lassen Sie uns untersuchen, wie die besprochenen Strategien zur Einhaltung der Vorschriften beitragen und die Sicherheit des Unternehmens stärken:

  1. Sichere Entwicklungspraktiken (SDPs)

    • Compliance: Viele Vorschriften, wie beispielsweise PCI DSS, NIST CSF und HIPAA, betonen die Bedeutung sicherer Softwareentwicklungszyklen (SDLCs). Die Implementierung von SDPs während der Entwicklung, wie z. B. sichere Codierungspraktiken, Code-Reviews und Schwachstellenanalysen, trägt zur Erfüllung dieser Compliance-Anforderungen bei.

      Durch den Aufbau von Sicherheit von Grund auf wird die Angriffsfläche für Schwachstellen bei der Ausführung nicht autorisierten Codes erheblich reduziert.

  2. Systeme zur Erkennung und Verhinderung von Einbrüchen (IDS/IPS)

    • Compliance: Vorschriften fordern häufig proaktive Maßnahmen zur Bedrohungserkennung und -abwehr. Der Einsatz von IDS/IPS zur Überwachung des Netzwerkverkehrs auf verdächtige Aktivitäten im Zusammenhang mit autorisierten Zugriffsversuchen hilft Unternehmen, diese Anforderung zu erfüllen.

      Durch die frühzeitige Erkennung ist ein rechtzeitiges Eingreifen möglich, um zu verhindern, dass Angriffe die Systeme erreichen.

  3. Codesignatur

    • Compliance: Vorschriften wie PCI DSS und HIPAA fordern häufig Maßnahmen, um die Authentizität und Integrität der in einer Organisation verwendeten Software sicherzustellen.

      Code Signing unterstützt diese Compliance-Anforderungen direkt, indem es die Quelle und Integrität des Codes digital überprüft. Dies reduziert das Risiko, unwissentlich mit Schadcode verseuchte Software einzusetzen.

  4. Build-Überprüfung

    • Compliance: Vorschriften, die sichere Softwareentwicklungspraktiken vorschreiben, umfassen häufig auch die Gewährleistung der Integrität des Build-Prozesses. Die Build-Verifizierung, beispielsweise durch Hash-Validierung und Abhängigkeitsverifizierung, unterstützt Unternehmen bei der Einhaltung dieser Anforderungen.

      Es garantiert, dass das endgültig bereitgestellte Softwarepaket genau Ihren Vorstellungen entspricht und frei von Manipulationen oder Sicherheitslücken ist, die über die Software-Lieferkette entstanden sind.

Cyberbedrohungen entwickeln sich ständig weiter und können die Sicherheit von Unternehmen gefährden. Dies kann zu weitreichenden Störungen und Datenverlusten führen. Hier sind einige neue Trends, die Sie im Auge behalten sollten:

  • Angriffe auf die Lieferkette

    Angreifer zielen zunehmend auf Software- Lieferketten ab , um Schwachstellen in weit verbreitete Anwendungen einzuschleusen, wodurch viele Systeme für diese Angriffe anfällig werden können.

  • Zero-Day-Exploits

    Dabei handelt es sich um Exploits für Schwachstellen, die den Softwareanbietern nicht bekannt sind. Zero-Day-Angriffe sind besonders gefährlich, da keine Patches zur Behebung der Schwachstelle verfügbar sind.

  • Dateilose Angriffe

    Diese Angriffe nutzen legitime Funktionen innerhalb von Betriebssystemen aus, um Schadcode auszuführen, ohne herkömmliche dateibasierte Spuren zu hinterlassen, wodurch sie schwieriger zu erkennen sind.

Fazit

Angriffe durch unbefugte Codeausführung stellen eine ernsthafte Bedrohung für Unternehmen dar und können zu Datenlecks, Systemausfällen und Reputationsschäden führen. Die Umsetzung entsprechender Strategien und die Förderung eines Sicherheitsbewusstseins im Unternehmen können das Risiko solcher Angriffe jedoch deutlich reduzieren.

Wie kann Encryption Consulting helfen?

Das Produkt CodeSign Secure von Encryption Consulting kann die Sicherheit von Unternehmen durch die Vereinfachung des Codesignierungsprozesses verbessern. Es bietet einen robusten Signaturprozess und manipulationssichere Funktionen wie Hash-Validierung, um die Authentizität und Integrität der Software zu gewährleisten.

Darüber hinaus nutzt es die Funktion für reproduzierbare Builds, um die Integrität des Software-Builds zu identifizieren und zu validieren und das Risiko von Schwachstellen durch manuelle Änderungen oder Inkonsistenzen im Build-Prozess zu verringern. CodeSign Secure hilft bei der Überprüfung der Code-Authentizität und reduziert Angriffe durch unbefugte Codeausführung erheblich.

Häufig gestellte Fragen

Hätte eine Codesignatur den Equifax-Datendiebstahl verhindern können?

Nein. Die von Equifax verwendete Struts-Bibliothek war legitim und korrekt signiert; das Problem lag in einer bekannten, nicht behobenen Sicherheitslücke, nicht in einer manipulierten oder ausgetauschten Version. Die Codesignierung überprüft Herkunft und Integrität, nicht aber, ob eine Komponente bekannte, nicht behobene Sicherheitslücken aufweist.

Wenn ich eine Build-Verifizierung eingerichtet habe, benötige ich dann noch ein Patch-Management-Programm?

Ja. Sie schützen vor unterschiedlichen Risiken. Die Build-Verifizierung bestätigt, dass ein Artefakt während des Build-Prozesses nicht manipuliert wurde; das Patch-Management behebt bekannte Schwachstellen in Abhängigkeiten, die ansonsten unverändert und legitim sind. Keines der beiden Verfahren ersetzt das andere.