Erzeugung emergenter Ressourcen
Beschreibung
Erzeugung emergenter Ressourcen tritt auf, wenn ein Produkt Ressourcen verwaltet oder sich so verhält, dass indirekt eine neue, eigenständige Ressource entsteht, die von Angreifern entgegen der beabsichtigten Richtlinie genutzt werden kann. Systeme erzeugen manchmal durch komplexes Verhalten unbeabsichtigte Ressourcentypen. Anstatt Ressourcen wie geplant explizit zuzuweisen, kann indirekte Ressourcenerzeugung entstehen -- wie verdeckte Kanäle, die Angreifer ausnutzen. Ein klassisches Beispiel ist "parasitäres Rechnen", bei dem ein Produkt unwissentlich Berechnungen für externe Parteien durchführen kann.
Risiko
Emergente Ressourcenerzeugung hat erhebliche Sicherheitsauswirkungen. Verdeckte Kanäle können unbeabsichtigt erzeugt werden. Timing-Seitenkanale können sensible Informationen preisgeben. Ressourcen können von unautorisierten Parteien verbraucht werden. Systemverhalten kann für unbeabsichtigte Zwecke ausgenutzt werden. Informationen können durch unüberwachte Kanäle fließen. Zugriffskontrollen können durch emergente Pfade umgangen werden. Kryptographische Geheimnisse können durch Seitenkanale durchsickern. Systemressourcen können für parasitäres Rechnen missbraucht werden.
Lösung
Analysieren Sie das Systemverhalten auf unbeabsichtigte Ressourcenerzeugung. Implementieren Sie Constant-Time-Algorithmen, wo Timing relevant ist. Überwachen Sie auf unerwartete Ressourcennutzungsmuster. Gestalten Sie Systeme mit minimalen beobachtbaren Zustandsänderungen. Implementieren Sie korrekte Isolation zwischen Komponenten. Verwenden Sie formale Methoden, um emergente Verhaltensweisen zu identifizieren. Testen Sie auf Timing-Variationen, die Informationen preisgeben könnten. Dokumentieren und überprüfen Sie alle externen Schnittstellen. Betrachten Sie alle beobachtbaren Systemverhaltensweisen als potenzielle Kanäle.
Häufige Auswirkungen
| Auswirkung | Details |
|---|---|
| Sonstiges | Bereich: Sonstiges Variiert je nach Kontext – Die Auswirkung hängt von der spezifischen erzeugten emergenten Ressource ab. Kann verdeckte Kanäle, Seitenkanalangriffe oder unautorisierte Ressourcennutzung ermöglichen. |
| Vertraulichkeit | Bereich: Vertraulichkeit Informationsoffenlegung – Emergente Kanäle können sensible Informationen durch Timing, Stromverbrauch oder andere beobachtbare Verhaltensweisen preisgeben. |
Beispielcode und Lösung
Verwundbarer Code
# VERWUNDBAR: Timing-basierter Seitenkanal bei Passwortvalidierung
def vulnerable_validate_password(actual_pw, typed_pw):
# VERWUNDBAR: Frühe Rückgabe erzeugt Timing-Seitenkanal
if len(actual_pw) != len(typed_pw):
return False
# VERWUNDBAR: Zeichenweiser Vergleich verrät Position
for i in range(len(actual_pw)):
if actual_pw[i] != typed_pw[i]:
return False # Gibt früh bei Nichtübereinstimmung zurück
return True
# Angriff: Zeit messen, um Passwortlänge und Zeichen zu bestimmen
// VERWUNDBAR: Timing-Leck bei kryptographischem Vergleich
#include <stdbool.h>
#include <string.h>
// VERWUNDBAR: memcmp kann bei Nichtübereinstimmung früh zurückkehren
bool vulnerable_verify_mac(const uint8_t* expected, const uint8_t* actual, size_t len) {
return memcmp(expected, actual, len) == 0;
}
Sichere Lösung
# SICHER: Constant-Time-Passwortvalidierung
import hmac
def secure_validate_password(actual_pw, typed_pw):
# Constant-Time-Vergleich verwenden
# hmac.compare_digest ist darauf ausgelegt, Timing-Angriffe zu verhindern
actual_bytes = actual_pw.encode('utf-8')
typed_bytes = typed_pw.encode('utf-8')
# Immer gleich lange Werte vergleichen
return hmac.compare_digest(actual_bytes, typed_bytes)
// SICHER: Constant-Time kryptographischer Vergleich
#include <stdbool.h>
#include <stdint.h>
// Constant-Time-Vergleich – prüft immer alle Bytes
bool secure_compare(const uint8_t* a, const uint8_t* b, size_t len) {
volatile uint8_t result = 0;
for (size_t i = 0; i < len; i++) {
result |= a[i] ^ b[i];
}
return result == 0;
}
CVE-Beispiele
Seitenkanal-Schwachstellen wurden in zahlreichen kryptographischen Implementierungen entdeckt, darunter Spectre und Meltdown (CPU-Cache-Timing), Lucky 13 (TLS Padding Oracle) und verschiedene Passwort-Timing-Angriffe.
Verwandte CWEs
- CWE-664: Improper Control of a Resource Through its Lifetime (übergeordnet)
- CWE-514: Covert Channel (untergeordnet)
- CWE-208: Observable Timing Discrepancy (verwandt)
Referenzen
- MITRE Corporation. "CWE-1229: Creation of Emergent Resource." https://cwe.mitre.org/data/definitions/1229.html
- Wikipedia. "Parasitic computing"
- Richtlinien zur Abwehr von Seitenkanalangriffen