
Repo für CVE-2025-52413
Entdecker: Golden Ticket Labs
Anbieter: Particle
Datum der Zuweisung: 12. August 2025 (MITRE)
Ein Pufferüberlauf in der Komponente ble_control_request_channel.cpp von Particle Device OS v5.6.0 ermöglicht das Überschreiben von Funktionszeigern durch eine unbegrenzte memcpy() in einen 64-Byte-Puffer.
Wenn dies mit dem benachbarten ThreadRunner::eventHandler_-Callback-Aufruf gekoppelt wird, ermöglicht dies ein zuverlässiges Hijacking des Kontrollflusses und sogar die Ausführung simulierter ROP-Payloads:contentReference[oaicite:0]{index=0}.
Anfälliger Codepfad:
// ble_control_request_channel.cpp
memcpy(buf_->data, &h, handshake_header_size); // unbounded copy into 64-byte buffer
// thread_runner.cpp
if (r->eventHandler_) {
r->eventHandler_(ev); // function pointer called after adjacent memory corruption
}
handshake_header_size ist angreiferkontrolliert.
buf_->data ist ein roher 64-Byte-Puffer ohne Grenzprüfungen.
ThreadRunner speichert einen Inline-Funktionszeiger eventHandler_ direkt neben dem Puffer.
Ein Überlauf von buf_->data ermöglicht das Überschreiben von eventHandler_.
Je nach Build-Layout äußert sich der Fehler als stack-basierter (CWE-121) oder heap-basierter (CWE-122) Überlauf, aber die Grundursache ist unsicheres Speicherkopieren in einen festen Puffer neben einem Funktionszeiger.
CWE-Klassifizierung:
CWE-120: Klassischer Pufferüberlauf
CWE-121: Stack-basierter Pufferüberlauf
CWE-122: Heap-basierter Pufferüberlauf
CWE-787: Schreibzugriff außerhalb der Grenzen
CWE-829: Aufnahme eines Funktionszeigers in eine Struktur mit Puffer
Schweregrad (CVSS v3.1)
Basis-Score: 8.8 (Hoch)
Vektor: AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Dies spiegelt wider, dass eine beliebige Codeausführung mit einem präparierten BLE-Payload erreicht werden kann, wobei nur die Nähe des Angreifers und keine Berechtigungen oder Benutzerinteraktion erforderlich sind.
Betroffene Versionen
Particle Device OS v5.6.0 — Anfällig
v5.7.0 und neuer — Still patchiert ([Gen 3] BLE: Fix stack overflow in BLE timer callback)
Proof of Concept (Nur Labor)
⚠️ Es ist kein einsatzfähiger Exploit-Code enthalten. Dies ist eine sichere Illustration.
Konzeptionelle PoC-Struktur:
struct ExploitTarget {
char buffer[64];
void (*eventHandler)(const char* msg); // overwrite target
};
char payload[128];
memset(payload, 'A', 64); // fill buffer
memcpy(payload + 64, &address_of_rop_shell, 8); // overwrite function pointer
// Redirect control flow to:
void rop_shell(const char* msg) {
system("/bin/sh"); // simulated ROP payload
}
Der Hex-Dump bestätigte, dass der eventHandler_-Zeiger überschrieben und umgeleitet wurde.
Angriffsvektor
Remote-Ausnutzung ist über eine speziell präparierte BLE-Steuernachricht möglich.
Der Überlauf tritt während der Handshake-Analyse auf, wenn `handshake_header_size` den 64-Byte-Puffer überschreitet.
Einmal beschädigt, ruft der `eventHandler_`-Callback vom Angreifer kontrollierten Code auf.
Auswirkungen
Beliebige Codeausführung auf betroffenen Particle-Geräten
Vollständige Kompromittierung von Vertraulichkeit, Integrität und Verfügbarkeit
Potenzielle Persistenz und laterale Bewegung in BLE-fähigen Umgebungen
Gegenmaßnahmen
Aktualisieren Sie auf Particle Device OS v5.7.0 oder neuer, wo der Überlauf behoben wurde.
Härten Sie die BLE-Analyse mit Grenzprüfungen (`memcpy_s` oder Äquivalent) ab.
Trennen Sie Funktionszeiger von überlaufbaren Feldern.
Kompilieren Sie mit Stack Canaries, SafeStack und Memory Sanitizern.
Referenzen
Particle Device OS v5.7.0 Versionshinweise
Laborbericht & PoC-Simulation
Lizenz & Haftungsausschluss
Alle Inhalte in diesem Repository werden ausschließlich zu Bildungs- und Verteidigungszwecken bereitgestellt. Es sind keine Exploit-Payloads enthalten. Versuchen Sie nicht, diese Techniken gegen Systeme ohne ausdrückliche Genehmigung einzusetzen.
Kontakt
Golden Ticket Labs 📧 [email protected]
🌐 goldenticketlabs.com