发现者:Golden Ticket Labs
厂商:Particle
分配日期:2025年8月12日(MITRE)
Particle Device OS v5.6.0 的 ble_control_request_channel.cpp 组件中存在缓冲区溢出漏洞:由于 memcpy() 对 64 字节缓冲区执行无界拷贝,攻击者可覆写任意函数指针。
当与相邻的 ThreadRunner::eventHandler_ 回调调用结合时,可可靠地劫持控制流,甚至执行模拟的 ROP payload: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 payload 即可实现任意代码执行,攻击者只需处于目标附近,无需任何权限或用户交互。
受影响版本
Particle Device OS v5.6.0 — 存在漏洞
v5.7.0 及更高版本 — 已静默修复([Gen 3] BLE: Fix stack overflow in BLE timer callback)
概念验证(仅限实验室)
⚠️ 不包含任何武器化利用代码,仅为安全演示。
概念性 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
}
十六进制转储确认 eventHandler_ 指针已被覆写并重定向。
攻击向量
可通过特制的 BLE 控制消息实现远程利用。
溢出发生在握手解析期间,此时 handshake_header_size 超过 64 字节缓冲区。
一旦发生破坏,eventHandler_ 回调将调用攻击者控制的代码。
影响
在受影响的 Particle 设备上执行任意代码
机密性、完整性和可用性完全丧失
在支持 BLE 的环境中可能存在持久化与横向移动风险
缓解措施
升级到已修复该溢出问题的 Particle Device OS v5.7.0 或更高版本。
通过边界检查(memcpy_s 或等效手段)强化 BLE 解析。
将函数指针与可溢出字段分离。
使用栈金丝雀(stack canaries)、SafeStack 和内存消毒器(memory sanitizers)编译。
参考资料
Particle Device OS v5.7.0 发行说明
实验室报告与 PoC 模拟
许可与免责声明
本仓库中的所有内容仅用于教育和防御目的。 不包含任何漏洞利用 payload。未经明确授权,请勿针对任何系统尝试使用这些技术。
联系方式
Golden Ticket Labs 📧 [email protected]
🌐 goldenticketlabs.com