Security für DevOps Engineers

Wie du dich vor Supply Chain Attacken schützt

Unternehmensnetzwerke sind wie Festungen aufgebaut, mit dem Ziel, die Bösewichte draussen zu halten, während sich die Guten darin frei bewegen können. Dieses Modell des Perimeterschutzes ist veraltet und nicht mehr wirksam, um effektiv Angriffe zu verhindern. Denn Angreifer kommen längst nicht mehr nur von aussen – die grösste Gefahr kommt aus dem Inneren des Unternehmens. In diesem Blog zeige ich, wie sich Schwachstellen in der Software Supply Chain effektiv vermeiden lassen, indem Zero Trust-Prinzipien auf den Software-Entwicklungsprozess angewendet werden. Dadurch lässt sich das Ausmass eines Security Incidents reduzieren und den internen Angreifer in Schach halten.

Autor: Dominik Liebmann

Warum sollte ich mich als Entwickler für Supply Chain-Attacken interessieren?

Software is eating the world. Überall ist Software drin. Software ist DER differenzierende Faktor, wenn es um die Gunst der Kundin geht.
Als Entwickler schreibst du nur einen kleinen Teil deiner Anwendung selbst. Für den grössten Teil greifst du auf fertige Libraries und SDKs zurück. Damit bist du nicht alleine. Kommerzielle, Open Source und Individualentwicklung setzen auf Libraries.

Woher weisst du aber, dass du deinen Libraries vertrauen kannst? Woher weisst du, dass die Libraries frei von Schadcode sind? Selbst wenn du nur vertrauenswürdige Quellen (Repositories) wie NPM.org oder PyPI verwendest, solltest du vorsichtig sein. Denn jeder kann auf diesen Plattformen Libraries bereitstellen – auch Angreifer. Sie können einfach Kopien populärer Libraries erstellen und darin Schadcode verstecken. Diese Einfachheit ist auch der Grund, warum die Anzahl an Supply Chain-Attacken aufgrund infizierter Software in den vergangenen Jahren durch die Decke geschossen ist.

Statistik, die anzeigt, wie stark die Angriffe auf IT-Infrastruktur steigen.
Durchschnittliche jährliche Wachstumsrate von Supply Chain-Angriffen in Prozent¹

Für Unternehmen stellt diese Entwicklung eine dramatische Situation dar, da jede dieser Attacken eine erhebliche Gefahr für das Business birgt. Ein erfolgreicher Angriff kann verheerende Folgen haben und sogar bis zur Insolvenz der ganzen Unternehmung führen. Sei es, weil die Produktion oder der Verkauf eingeschränkt ist, oder weil man beträchtliche Mittel für die Wiederherstellung und den Schutz der Systeme aufwenden muss.

Laut einer Studie von IBM betrug im Jahr 2022 der durchschnittliche Schaden eines Data Breaches 4.35 Millionen US Dollar – Tendenz steigend.

Durchschnittliche jährliche Kosten bei Angriffen
Durchschnittliche Gesamtkosten eines Datenlecks in Mio. USD-Dollar²

Die Gefahr kommt von innen

Supply Chain-Attacken sind so effektiv, weil sie aus dem Unternehmensnetz heraus erfolgen. Klassische Schutzmassnahmen beruhen auf Perimeterschutz, nur die Aussengrenze des Unternehmensnetzwerkes wird vor Angriffen geschützt. Wie bei einer Festung. Der Grund liegt darin, dass Unternehmen davon ausgehen, dass der Angreifer von aussen kommt. Im Falle einer Supply Chain-Attacke sind die bisherigen Schutzmassnahmen jedoch wirkungslos. Wenn du nämlich versehentlich eine schadhafte Library verwendest, kann sich der Angreifer damit direkt Zugang zum Unternehmensnetz verschaffen und alle Schutzmassnahmen umgehen. Oft genügt nur ein Tippfehler und der Angreifer ist drin (Typosquatting). 

Einmal drin, kann sich der Angreifer frei im Netzwerk bewegen (lateral movement). Und wer drinnen ist, ist ja bekanntlich der „Gute” und wird in seinem Tun nicht behindert. Denn geeignete interne Schutzmaßnahmen, die dies verhindern würden, existieren in den wenigsten Fällen. Der Angreifer hat nun die Möglichkeit, Daten zu stehlen, zu verschlüsseln oder mit deren Veröffentlichung zu drohen. Unternehmen können sich glücklich schätzen, wenn der Angreifer die kompromittierten Server nur zum Bitcoin Mining nützt.

Grafik, die den Weg eines Angriffs beschreibt

Je beliebter, desto gefährdeter

Angreifer streben nach maximaler Effektivität, indem sie mit minimalem Aufwand eine möglichst große Anzahl von Opfern erreichen wollen. Beliebte Anwendungen und Libraries sind hierfür ein geeignetes Vehikel. Ein Beispiel dazu ist CodeCov. CodeCov ist unter Entwicklern ein weit verbreitetes Werkzeug zum Ermitteln der Softwarequalität (Test Coverage). Es stellt den Testabdeckungsgrad des eigenen Codes fest.

Angreifern ist es 2021 gelungen, den Source Code des Tools anzupassen und Schadcode einzufügen³. Aufgrund der hohen Popularität des Werkzeugs waren dadurch potenziell zahlreiche Softwareprojekte betroffen. CodeCov zählt mehr als 29’000 Kunden, darunter auch zahlreiche Grossunternehmen. Es genügten nur wenige Zeilen Code, genauer gesagt zwei. Im Detail hat der Schadcode den Inhalt aller Umgebungsvariablen an einen externen Server weitergeleitet. Dies ist äusserst bedenklich, da in Umgebungsvariablen sensitive Informationen wie API Keys für den Zugriff auf andere Server, Access Tokens für Git Repositories, Benutzernamen und Passwörter für SSH Verbindungen und ähnliches gespeichert werden. Mit diesen Informationen hat ein Angreifer ein leichtes Spiel, sich weiter auszubreiten.

So schützt du dich erfolgreich vor Supply Chain Attacken

Vollständigen Schutz vor Angriffen gibt es nicht. Früher oder später ist jeder davon betroffen. 

Du kannst jedoch an zwei Stellschrauben drehen, um dich zu schützen:

  • Du kannst die Wahrscheinlichkeit eines erfolgreichen Angriffs reduzieren.
  • Du kannst das Ausmaß des Schadens reduzieren.

Folgende 5 Best Practices solltest du für einen adäquaten Schutz anwenden:

(nicht abschliessend)

1. Überprüfe jede Library, die du einsetzt.

Verwende Code Scanning Tools, um Libraries auf bekannte Schwachstellen hin zu prüfen. Dabei erstellst du auch automatisch ein Inventar deiner Software, das dir im Falle von Zero-Day-Schwachstellen hilft, betroffene Systeme zu erkennen.

2. Schütze deine Secrets wie API Keys, SSH Key, Passwörter und dergleichen.

Setze dazu ein Secrets Management System wie Hashicorp Vault oder Azure Key Vault ein.

3. Rotiere deine Secrets.

Im Falle, dass dein Secret doch in die falschen Hände gelangt oder es ins Git geschafft hat 😉. Mit Secrets Rotation hast du eine Sorge weniger.

4. Schütze deine Systeme.

Sollte es ein Angreifer doch in dein Netzwerk geschafft haben, halte ihn in Schach. Verhindere, dass er weitere Systeme übernehmen kann, indem du jeden Zugriff auf deine Systeme prüfst. Validiere dazu die Identität von jedem Benutzer und System (Authentisierung) und lass ihn nur das ausführen, wozu er berechtigt ist (Autorisierung).

5. Decke merkwürdiges Verhalten auf.

Angreifer können sich beispielsweise durch unnatürliches Verhalten bemerkbar machen. In dem zum Beispiel ungewöhnlich viele Ressourcen (CPU, RAM) auf Servern benötigt werden. Beobachte auch die Aktivitäten der Systeme zu Randzeiten. Sind deine Systeme nach Feierabend unerwartet stark ausgelastet? Mit Hilfe von Anomaly Detection durch Log Analyse, entsprechenden Dashboards und Alerts kannst du einen Angreifer leichter erkennen.

Fazit

Mit der zunehmenden Agilität von Softwareentwicklungsprojekten werden vermehrt fertige Libraries und Software eingesetzt. Diesen Trend machen sich auch Angreifer zu Nutze, indem sie versuchen, Schadcode einzuschleusen. Je beliebter die Library, desto gefährdeter ist sie für Supply Chain-Attacken. Supply Chain-Attacken sind so effektiv, weil es oft an geeigneten Schutzmassnahmen fehlt. Unternehmen schützen sich vor Angriffen von aussen. Durch schadhaften Code findet der Angriff von innen statt. Das Ausmass eines Angriffs kann dann enorm sein und bis zur Insolvenz führen⁴. In dem du Zero Trust Prinzipien auf den Software-Entwicklungsprozess anwendest, kannst du die Wahrscheinlichkeit UND das Ausmass eines Angriffs reduzieren. Die genannten Massnahmen helfen dir dabei. Ganz wesentlich dabei ist eine ganzheitliche Betrachtung. Security hört nicht am Perimeter auf, sondern muss den gesamten Entwicklungsprozess – vom Design, über Entwicklung bis zum Betrieb – adressieren.

Willst du wissen, wie es um die Sicherheit deines Entwicklungsprozesses und Infrastruktur steht? Oder willst du auf das nächste Security Level kommen? Dann melde dich für ein unverbindliches Gespräch. Ich freue mich auf dich.

Quellen

  1. Sonatype, Open Source Supply, Demand and Security: https://www.sonatype.com/state-of-the-software-supply-chain/open-source-supply-demand-security
  2. IBM, Cost of a data breach 2022: https://www.ibm.com/reports/data-breach
  3. GitGuardian, CodeCov Supply Chain Breach: https://blog.gitguardian.com/codecov-supply-chain-breach/
  4. ZDNet, Hostingdienst Code Space gibt nach Hackerangriff auf:https://www.zdnet.de/88196555/hostingdienst-code-spaces-gibt-nach-hackerangriff-auf/