
Inhaltsverzeichnis
Mikroarchitekturelle verdeckte Kanäle sind ein kritisches Anliegen in der modernen Computersicherheit. Im Kern nutzen diese Kanäle subtile Hardware-Verhaltensweisen aus, um Informationen zwischen isolierten Sicherheitsgrenzen zu leaken und dabei traditionelle Betriebssystem- und Anwendungsebene-Verteidigungen zu umgehen. Da Cloud-Computing und Multi-Tenant-Umgebungen zur Norm werden, war die automatische Erkennung und Minderung solcher Bedrohungen noch nie so wichtig.
AutoCC ist ein innovativer Rahmen, der die Entdeckung dieser verdeckten Zeitkanäle automatisiert, damit sowohl offensive als auch defensive Beteiligte ihr Verständnis und ihre Schutzmaßnahmen vorantreiben können. In diesem Leitfaden behandeln wir die Technologie und Forschung hinter AutoCC, gehen durch praktische Erkennungstipps und erklären die Bedeutung mikroarchitektureller verdeckter Kanäle in der heutigen Bedrohungslandschaft.
In der Computersicherheit ist ein verdeckter Kanal ein unbeabsichtigter Kommunikationspfad, der ausgenutzt werden kann, um Informationen auf eine Weise zu übertragen, die die Sicherheitsrichtlinien des Systems verletzt. Im Gegensatz zu Seitenkanälen (die typischerweise Daten durch unbeabsichtigte Strahlung oder Beobachtungen leaken), werden verdeckte Kanäle verwendet, um Informationen heimlich zwischen kooperierenden Agenten zu übertragen, oft unter Umgehung von Zugriffskontrollen.
Schlüsselmerkmale:
Die Mikroarchitektur bezieht sich auf die Hardware-Ebene Implementierungsdetails einer CPU, die durch Abstraktion unsichtbar für die Software erscheinen sollen.
Mikroarchitekturelle verdeckte Kanäle nutzen diese Hardwarezustands-Übergänge, die:
Zitat aus der Forschung:
Mikroarchitekturelle Kanäle nutzen Hardwarezustände aus, die unsichtbar für die Architektur der Befehlssätze (ISA) sind, um unbefugten Informationsfluss zu ermöglichen.
Die Lücke zwischen den Hardware-Eigenschaften (z.B. Caches, Puffer, Sprungvorhersagen) und der von der ISA bereitgestellten abstrakten Sicht öffnet Möglichkeiten für verdeckte Kanäle.
Programme, die die gleiche Hardware teilen, können die Ausführungszeit oder das Verhalten des anderen beeinflussen, auch ohne direkte Kommunikationskanäle.
Zeitkanäle sind die häufigsten mikroarchitekturellen verdeckten Kanäle. Sie funktionieren, indem:
Typische Ressourcen, die missbraucht werden:
Kanäle entstehen oft, wenn zwei Prozesse um eine begrenzte Hardware-Ressource konkurrieren (z.B. einen Cachesatz, Warteschlange des Speicherkontrollers).
Mikroarchitekturelle verdeckte Kanäle nutzen Veränderungen in der Ausführungszeit, die sich aus konkurrierendem Zugriff auf begrenzte Hardware-Ressourcen ergeben.
Diese Konkurrenz verursacht messbare Zeitunterschiede, die verdeckte Informationen kodieren können.
Der CPU-Cache, der über mehrere Kerne/Threads geteilt wird, ist eine Goldgrube für die Ausnutzung von verdeckten Kanälen.
Szenario:
Prime+Probe: Nutzt den Zugriffszeitpunkt, um zu überprüfen, ob die Cache-Line ersetzt wurde.
Flush+Reload: Beruht auf gemeinsamem Speicher, genauer als Prime+Probe.
# Pseudocode: Prime+Probe-Schleife in Python (konzeptionell)
import time
CACHE_SET = 0xdeadbeef # Simulierte Adresse
def access_memory(addr):
# Zugriff auf eine Cache-Line simulieren
pass
def prime():
for i in range(NUM_LINES):
access_memory(CACHE_SET + i * CACHE_LINE_SIZE)
def probe():
start = time.perf_counter_ns()
for i in range(NUM_LINES):
access_memory(CACHE_SET + i * CACHE_LINE_SIZE)
end = time.perf_counter_ns()
return end - start
# Sender primed, wartet, dann probiert Empfänger und misst Zugriff
Obwohl sie keine reinen verdeckten Kanäle sind (oft als Seitenkanal-Schwachstellen klassifiziert), haben diese Angriffe das Interesse an mikroarchitekturellen Informationslecks neu geweckt, indem sie zeigten, wie Spekulation und Out-of-Order-Ausführung Sicherheitsgrenzen durchbrechen und Geheimnisse durch Änderungen im mikroarchitekturellen Status leaken können.
Spectre-stil Angriffe: Missbrauchen spekulative Ausführung, um von Angreifern kontrollierte Daten in mikroarchitekturelle Strukturen einzuspeisen, die die Ausführung des Opfers in beobachtbarer Weise beeinflussen.
AutoCC steht für Automatic Discovery of Covert Channels in Time. Es ist ein systematischer Ansatz und ein Werkzeug, das entwickelt wurde, um verdeckte Zeitkanäle in CPU-mikroarchitekturellen Ressourcen automatisch zu finden.
Aus Marcelo et al., MICRO 2023:
AutoCC:
Schlüsselforschungserkenntnis:
AutoCC fand zuvor nicht dokumentierte Kanäle und Schwächen in beliebten CPUs, was die dringende Notwendigkeit für eine automatisierte Analyse und Verteidigung verdeutlicht.
AutoCC verwendet eine Mischung von Techniken:
Mit AutoCC gewinnen sowohl Angreifer als auch Verteidiger:
Die Verhinderung oder Minderung von verdeckten Kanälen ist aufgrund ihrer Entstehung auf Hardware-Ebene herausfordernd. Dennoch gibt es einige High-Level-Strategien:
Betriebssysteme können helfen durch:
rdtsc oder ähnliche Anweisungen.Hardwarehersteller können:
Linux bietet Leistungsüberwachungscounter über das perf-Werkzeug, die verwendet werden können, um verdächtige mikroarchitekturelle Aktivität oder Leistungsanomalien zu erkennen, die auf die Nutzung verdeckter Kanäle hinweisen könnten.
perf list
# Aufzeichnung von Cache-Misses und Zyklen für Prozess mit PID 1234
sudo perf stat -e cache-misses,cycles -p 1234
# Ausgabeparsing (Beispielausgabe)
# 1,234,567 cache-misses
# 23,456,789 cycles
Anwendungen, die rdtsc oder /dev/tsc verwenden, können Hinweise auf zeitbasierte Angriffssoftware sein.
# Auflisten der Prozesse, die /dev/tsc oder ähnliches verwenden
lsof | grep '/dev/tsc'
# Finden von Binärdateien, die den rdtsc-Opcode (0f 31) referenzieren
grep -rl -E $'\x0f\x31' /usr/bin /usr/local/bin
# Alternative: Verwendung von strace zur Überwachung zeitbezogener Systemaufrufe in einem verdächtigen Prozess
strace -e trace=clock_gettime,gettimeofday -p <pid>
import subprocess
def monitor_perf(pid, duration=10):
cmd = [
'perf', 'stat', '-e', 'cache-misses,cycles',
'-p', str(pid), 'sleep', str(duration)
]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
return out.decode(), err.decode()
# Beispielnutzung
out, err = monitor_perf(1234)
print("Perf-Ausgabe:", out)
print("Perf-Fehler:", err)
Für tiefere Automatisierung können Sie perf-Ausgaben auf verdächtige Änderungen in den Cache-Miss-Raten analysieren, die möglicherweise auf aktive cache-basierte verdeckte Kanalaktivität hinweisen.
import re
def parse_perf_output(perf_err):
cache_misses = re.search(r'([\d,]+)\s+cache-misses', perf_err)
cycles = re.search(r'([\d,]+)\s+cycles', perf_err)
return {
'cache_misses': int(cache_misses.group(1).replace(',', '')) if cache_misses else 0,
'cycles': int(cycles.group(1).replace(',', '')) if cycles else 0,
}
metrics = parse_perf_output(err)
print(f"Cache Misses: {metrics['cache_misses']}, Zyklen: {metrics['cycles']}")
Verdeckte Kanäle sollten in Bedrohungsmodellen berücksichtigt werden für:
Fragen zum Überlegen:
Red Teams können AutoCC-ähnliche Werkzeuge einsetzen, um praktikable Exfiltrationsmethoden zu identifizieren und realistische Angriffe zu simulieren.
Blue Teams und Forensik-Analysten können Leistungszähler, OS-Trace-Logs und Verhaltensprofiling verwenden, um nach Anomalien zu suchen, die auf verdeckte Kanalaktivität hindeuten.
Mikroarchitekturelle verdeckte Kanäle stellen eine der perfidesten Bedrohungen in der heutigen Hardwaresicherheit dar. Weit unter dem Niveau klassischer Network- oder Anwendungsschicht-Vulnerabilitäten nutzen sie die grundlegendsten Bausteine der modernen Rechenarchitektur, um den unbefugten Informationsfluss zwischen isolierten Benutzern und Prozessen zu ermöglichen.
AutoCC und ähnliche Forschungen treiben das Feld voran und bieten die Werkzeuge und Methodologien, um diese Kanäle zu entdecken und zu schließen — bevor Angreifer die Möglichkeit haben, sie zu nutzen. Während sich sowohl CPUs als auch Verteidiger weiterentwickeln, bleibt die einzige Konstante, dass wir ständig nach (und lernen von) jedem versteckten Kanal suchen müssen, der auftaucht.
Durch die Integration von Überwachung, Analyse und proaktiver Bedrohungsmodellierung in Sicherheitsprozesse können sich Organisationen einen Vorsprung gegenüber diesem subtilen, aber mächtigen Bedrohungsvektor verschaffen.
AutoCC: Automatische Entdeckung von verdeckten Kanälen in der Zeit
Autoren: Marcelo Santos, et al. MICRO 2023
Vollständiger Artikel (PDF)
Prävention von mikroarchitekturellen verdeckten Kanälen auf einem Open-Source 64-Bit RISC-V Prozessor
Autoren: Wistoff et al.
arXiv preprint
Volltext (PDF)
Linux perf Dokumentation
https://perf.wiki.kernel.org/index.php/Main_Page
Intel® 64 und IA-32 Architekturen Optimierungsreferenzhandbuch
https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
Spectre und Meltdown Angriffe
https://meltdownattack.com/
Interessiert an weiteren tiefgehenden Leitfäden? Abonnieren Sie unseren Cybersicherheits-Insights-Newsletter!
Wenn Sie diesen Inhalt wertvoll fanden, stellen Sie sich vor, was Sie mit unserem umfassenden 47-wöchigen Elite-Trainingsprogramm erreichen könnten. Schließen Sie sich über 1.200 Studenten an, die ihre Karrieren mit den Techniken der Unit 8200 transformiert haben.