Mit Blockchain-Technologie kompromittierte Software verhindern

DATEV eG
DATEV TechBlog
Published in
5 min readJan 11, 2021

Von: Sebastian Wind

Der SolarWinds-Hack wird in die Geschichte der Cybersecurity eingehen. Die Attacke war so raffiniert, dass sie sich den eigenen Namen „Sunburst“-Hack verdient hat. Monate lang konnten Hacker weitgehend unentdeckt in Behörden, Firmen und Organisationen eindringen. SolarWinds ist ein Software-Haus aus den USA mit 938.5 Mio. US-Dollar (2019) Umsatz, welches sich auf Netzwerkmanagement Software spezialisiert hat. Die betroffene Kundschaft von SolarWinds erstreckt sich vom Verteidigungsministerium der USA bis hin zu Dax-Konzernen und kleinen mittelständische Betrieben in Deutschland. Die Kunden haben sich durch ein Update des Software-Produkts Orion von SolarWinds unbemerkt Schadcode in ihrer kritischen Infrastruktur installiert. Microsoft war als Orion Nutzer ebenfalls betroffen. Den Hackern gelang es dort sogar Zugriff auf Microsoft Quellcodes zu bekommen.

Wie konnte das passieren?

SolarWinds war kein schlecht gesichertes Unternehmen. Sie haben viel in ihre IT-Sicherheit investiert, trotzdem fanden die Hacker eine Schwachstelle und waren in der Lage in die Lieferkette der Software-Produktion Schadcode einzuschleusen, die Software wurde dann digital signiert und als vertrauensvolles Update an die über 18.000 Kunden von SolarWinds ausgeliefert. Die Kunden hielten das Update für vertrauensvoll, weil es von SolarWinds digital signiert wurde. Niemand stellte es in Frage. Ein katastrophales Szenario für jede Software-Firma.

Wie kann man solche Angriffe verhindern?

Die Angreifer nutzten aus, dass kein umfassendes und ganzheitliches DevOps-Security-Konzept existierte. Derzeit gibt es in diesem Bereich bei etlichen Unternehmen noch offene Fragen. Wann werden welche Komponenten oder Open Source Projekte genutzt? Was ist zurzeit im Build-Prozess und was läuft aktuell in der Produktion? Wer hat welche Komponente eingebracht? Wer hat diese Artefakte genehmigt oder genutzt?

Vertrauensvolle Softwareproduktion

Nur wenn die Integrität des Software-Entwicklungsprozesses an jeder Stelle gewährleistet ist, wächst das Vertrauen in die Software. Digitale Zertifikate reichen hierfür nicht mehr aus, weil diese eine Signierung jeweils nur ersetzen. Außerdem sind diese Zertifikate teuer und umständlich in der Anwendung. Immudb ist ein Open Source Projekt, an dem ich mich aus großem Interesse beteilige. Immudb ist keine Blockchain, sondern eine Ledger Datenbank in der man Daten unveränderlich mit kryptographischer Verifikation (SHA-256) speichern kann. Mit Immudb können Veränderungen von kritischen Daten in Transaktionssystemen nachvollzogen werden und die Informationen darüber fälschungssicher und permanent abgespeichert werden. Die Daten in Immudb sind dabei kryptographisch kohärent und verifizierbar, wie bei einer Blockchain, jedoch ohne die Komplexität und mit einer viel höheren Performance. Für manche Bedürfnisse ist eine echte Blockchain trotzdem besser geeignet. Immudb eignet sich exzellent als On-Premise Ledger, während eine kollaborative öffentliche Version Vorteile von einer Blockchain als Ledger erzielt. Diese globale Variante wurde mit dem Zero-Trust Consortium umgesetzt.

Mit diesen Technologien ist ein Entwickler ist in der Lage seine Arbeitspakete mit seinem eigenen Zugangsdaten zu beglaubigen. Auch automatisch agierende Komponenten wie CI/CD Tools können eine Beglaubigung vornehmen. Zu jedem Zeitpunkt kann die Historie eines Objekts abgefragt werden. Außerdem können Auditors das Objekt auf „untrust“ setzen und es somit von der Weiterverarbeitung ausschließen. Ein potenzieller Hacker müsste also alle Zugänge der Beteiligten der Lieferkette erlangen, was fast unmöglich ist.

Anwendungsbeispiel Immudb

Immudb ist Open Source und kann auf Github für Windows, Linux und Mac OS heruntergeladen werden. Detailliertere Informationen finden sich in der Dokumentation. Mit folgendem Aufruf lässt sich Immudb starten:

./immudb

Immudb kann ohne Coding-Skills verwendet werden mit dem Immuclient. Der Standard-User und Passwort für Immudb ist „immudb“. Beim erstmaligen Login wird der Nutzer aufgefordert es zu ändern. Dieses Hands-On Beispiel Bash-Skript wurde auf Linux entwickelt. Ein eine Skript-Datei kann einfach mit „touch immuclientscript.sh“ erstellt werden.

#!/bin/bash

# Ersetzen mit Immudb-Pfad
export PATH=”/home/sebastian/immudb:$PATH”

# Immudb login
immuclient login immudb

Nach dem Login erstellen wir einen Ordner mit Beispiel-Dateien, um die Funktion von Immudb zu demonstrieren. Bei den Dateien könnte es sich stattdessen genauso gut um Code, Repositories oder Docker-Container handeln.

# Löschen vom Beispiel-Ordner, falls er existiert
if [ -d “$(pwd)/data/” ]; then
rm -r data
fi

# Erstellen des Ordners und der Dateien
mkdir data
cd data
echo ‘Die Dateien werden gehashed und die Checksum als Key in Immudb gespeichert.’ > file1.txt
echo ‘Der Inhalt soll verifizierbar und fälschungssicher sein.’ > file2.txt
echo ‘Diese Dateien können ebenso Code, Repositories oder Dockercontainer darstellen.’ > file3.txt
echo Files created!

Im nächsten Schritt wird über alle Dateien im Ordner iteriert und eine Checksumme von den Dateien gebildet mit dem BLAKE-2 Algorithmus (ähnlich SHA-3–256). Diese Checksumme wird dann als Key mit dem Dateiennamen als Value mit „immuclient safeset“ verifiziert in Immudb gespeichert.

# Iteriert ueber Dateien im Ordner erstellt Hash
# Speichert Hash als Key und Dateien-Name als Value in Immudb
for file in *; do
if [ -f “$file” ]; then
#echo “$file”
b2s=($(b2sum “$file”))
immuclient safeset ${b2s[0]} ${b2s[1]}
fi
done

Auf dem umgekehrten Weg kann nun nach der Checksumme in Immudb gesucht werden mit „immuclient safeget“. Das heißt, bei einer Übergabe von einer Datei, können die Informationen über diese Datei (falls vorhanden) verifiziert werden.

# Iteriert ueber Dateien im Ordner und erstellt Hash
# Liest informationen über Hash aus Immudb und vergleicht sie mit Dateien
for file in *; do
b2out=($(b2sum “$file”))
output=$(immuclient safeget “$b2out”)
value=$(echo “$output” | grep “key” | awk ‘{print $NF}’)
if [ “$b2out” == “$value” ]; then
echo match for “$file”
fi
done

Die Keys werden in Immudb in ihrer eigenen Tabelle verwaltet, dadurch ist es möglich Keys mehrfach zu nutzen und neue Werte zuzuweisen. Die Änderungen werden in der Historie des Keys festgehalten.

historykey=($(b2sum file1.txt))
echo $(immuclient history “$historykey”)

Integration mit dem VCN Client

Wie man an dem Anwendungsskript weiter oben sehen konnte, ist die Integration eine der Herausforderungen bei der Umsetzung einer Trusted-Pipeline. Der CodeNotary VCN-Client schafft hier Erleichterung. Der Client kann auf CodeNotary heruntergeladen werden und nutzt die ZTC-Blockchain als Ledger, weshalb eine Anmeldung notwendig ist. Nach der Installation kann die CLI aufgerufen werden:

vcn login
Email address: <example@emailaddress.com>

Nach dem Login kann direkt mit der Beglaubigung von Dateien begonnen werden. Der Client ermöglicht es nicht nur Dateien sondern auch Verzeichnisse, Git-Repositories und Docker-Container zu beglaubigen.

vcn notarize <path-to-file>
vcn notarize dir://<directory>
vcn notarize docker://<imageId>
vcn notarize podman://<imageId>
vcn notarize git://<path_to_git_repo>
vcn notarize — hash <hash>

Diese Dateien können, einmal in die Blockchain gemeißelt, immer wieder authentifiziert werden.

vcn authenticate <file>
vcn authenticate dir://<directory>
vcn authenticate docker://<imageId>
vcn authenticate podman://<imageId>
vcn authenticate git://<path_to_git_repo>
vcn authenticate — hash <hash>

Looking for blockchain entry matching

Zukunftssicher durch Technologie

Herkömmliche Code-Signing Zertifikate reichen nicht mehr aus, um die Produktion von Software abzusichern. Die Technologie für vertrauensvolle Software existiert bereits, sie ist Open Source und für jeden zugänglich, außerdem eröffnet sie neue Möglichkeiten der Zusammenarbeit über eine weltweit verfügbare Blockchain. Immudb eignet sich als On-Premise Lösung und kann neben der Absicherung der Produktionsprozesse auch andere Informationen über Unternehmensdaten fälschungssicher, verifizierbar und permanent speichern.

Ihr seid ebenso verrückt nach IT, Software und Tech-Themen und habt Lust, Teil unseres Entwickler-Teams zu werden? Hier geht´s zu unseren offenen Stellen und hier könnt Ihr Euch über DATEV an sich informieren.

Photo by Launchpresso on Unsplash

--

--

DATEV eG
DATEV TechBlog

DATEV eG steht für qualitativ hochwertige Softwarelösungen und IT-Dienstleistungen für Steuerberater, Wirtschaftsprüfer, Rechtsanwälte und Unternehmen.