
CVE-2025-52413용 저장소
발견자: Golden Ticket Labs
벤더: Particle
배정 날짜: 2025년 8월 12일 (MITRE)
Particle Device OS v5.6.0의 ble_control_request_channel.cpp 구성 요소에서 발생하는 버퍼 오버플로우는 64바이트 버퍼로의 무제한 memcpy()로 인해 임의 함수 포인터 덮어쓰기를 가능하게 합니다.
인접한 ThreadRunner::eventHandler_ 콜백 호출과 결합되면 안정적인 제어 흐름 하이재킹과 시뮬레이션된 ROP 페이로드 실행까지 가능합니다:contentReference[oaicite:0]{index=0}.
취약한 코드 경로:
// 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는 공격자가 제어할 수 있습니다.
buf_->data는 경계 검사가 없는 원시 64바이트 버퍼입니다.
ThreadRunner는 버퍼에 바로 인접한 곳에 인라인 함수 포인터 eventHandler_를 저장합니다.
buf_->data의 오버플로우로 eventHandler_를 덮어쓸 수 있습니다.
빌드 레이아웃에 따라 이 버그는 스택 기반(CWE-121) 또는 힙 기반(CWE-122) 오버플로우로 나타나지만, 근본 원인은 함수 포인터 옆의 고정 버퍼로의 안전하지 않은 메모리 복사입니다.
CWE 분류:
CWE-120: 전형적인 버퍼 오버플로우
CWE-121: 스택 기반 버퍼 오버플로우
CWE-122: 힙 기반 버퍼 오버플로우
CWE-787: 경계를 벗어난 쓰기
CWE-829: 버퍼를 포함한 구조체 내 함수 포인터 포함
심각도 (CVSS v3.1)
기본 점수: 8.8 (높음)
벡터: AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
이는 제작된 BLE 페이로드로 임의 코드 실행이 가능하며, 공격자의 근접성만 필요하고 권한이나 사용자 상호 작용이 필요 없음을 반영합니다.
Particle Device OS v5.6.0 — 취약함
v5.7.0 이상 — 조용히 패치됨 ([Gen 3] BLE: BLE 타이머 콜백의 스택 오버플로우 수정)
⚠️ 무기화된 악용 코드는 포함되어 있지 않습니다. 안전한 예시입니다.
개념적 PoC 구조:
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
}
hex 덤프를 통해 eventHandler_ 포인터가 덮어쓰여지고 리디렉션되었음이 확인되었습니다.
Particle Device OS v5.7.0 릴리스 노트
Lab report & PoC 시뮬레이션
이 저장소의 모든 콘텐츠는 교육 및 방어 목적으로만 제공됩니다. 악용 페이로드는 포함되어 있지 않습니다. 명시적 승인 없이 시스템에 이러한 기술을 사용하지 마십시오.
Golden Ticket Labs 📧 [email protected]
🌐 goldenticketlabs.com