非特权可读MacBook机身IMU,击键还原准确率最高97.5%

Et Tu, MacBook? Unprivileged Keystroke Inference and Context Profiling via the Built-in IMU Side Channel

Jiaji He, Yi Shi, Junfeng Cai, Chang Liu, Yongqiang Lyu

cs.CR

2026-09-18

发现MacBook未文档IMU可被非特权进程经IOKit读取。BRUTUS在未见用户与设备上把击键还原到89.1%–97.5%,无标签也能分出打字人与桌面。

这篇在解决什么

Bourbonnais 等人 2026 年指出,近年 MacBook 一体机身里焊着一颗未写进公开文档的 IMU(惯性测量单元,三轴加速度计加三轴陀螺仪),root 进程能读原始流,细到可以估脉搏。他们把 root 当成读取前提。这篇要核对的是权限边界是不是被高估了,以及这颗传感器除了姿态还泄漏了什么。

对 Apple Silicon 笔记本做击键侧信道,现成路子都窄。外置麦、同桌手机、手表要贴近部署;本机摄像头和麦克风走 TCC(macOS 管敏感权限的框架);官方 Core Motion 在 macOS 上不给第三方读机身 IMU。软件侧信道要么看流量,要么只拿到按键间隔,要么绑死特定缓存探针。如果未文档接口能被非特权进程直接读,攻击就从「先提权」变成「后台进程持续采样」。

方法

权限审计留下三条不吐键值、也不要 TCC Input Monitoring 的接口。HIDIdleTime 挂在 IOHIDSystem 上,任意本地进程都能读,每次 HID 事件归零,超过 10 万次/秒的轮询给出亚毫秒时间戳。CGEventSourceSecondsSinceLastEventType 只要有图形登录会话,就能把键盘和触控板分开。真正的数据通路是 AppleSPUHIDDevice:IOKit 打开设备时检查管理员组,回调时核对 UID 是不是当前控制台用户,采样大约 800 Hz。SSH 或 launchd 换账号收不到回调;快速用户切换后大约 3 秒断流。在 10 台跨 M3/M4/M5、13/15 寸、Sonoma 到 Tahoe 的 MacBook Air 上,开关 Input Monitoring 都不影响这条 IMU 通路。

威胁模型按装机默认来:第一位用户在管理员组,正在用图形桌面。进程以该用户非 root UID 跑,不弹授权、不提权。

物理上 IMU 偏置在主板,每个键的力臂不同,六轴幅度和相位能分开键位;力度主要缩放幅度,振荡形状和衰减大体保住;支撑面软硬决定能量泄到桌子还是在机身里晃。对比学习把同键嵌入拉近后,留出设备 D8、D9、D10 的同键 vs 异键 AUC 分别是 91.2%、98.5%、96.2%。

击键链路用时间戳切 300 ms 窗(前 100 ms 当安静基线,后 200 ms 覆盖冲击和衰减),六轴加一阶差分共 12 通道,大约 48 万参数的 InceptionTime 分成 37 类(a–z、0–9、空格)。同协议下它比三层 1D CNN、Transformer 编码器和梯度提升高 4 到 14 个百分点。序列用 beam search(宽 100,每步扩 6)拼;有语言结构时,Brown 语料上的 trigram 在词边界加权,高置信位置冻结,避免语言模型改掉传感器已经看清的字符。

无标签画像不做分类器。大约 99 次击键合成一段,算六轴 15 对 Pearson 相关的分布统计,得到 105 维向量,用 prediction strength(拆数据两次聚类、看划分能否在另一半复现)选 k,再 k-means。相关对力度缩放不敏感,留下来的是姿势、指法和支撑面把振动耦合进各轴的方式。

结果

训练来自 P1–P7 和设备 D1–D7,覆盖九种桌面。交叉测试让这七人换没用过的机器、自选环境,各打 15 个 8/9/10 位随机密码加 10 句英文。端到端则把完全没进训练集的 P8–P10 配上 D8–D10:咖啡馆桌、大腿、软床垫。

设置密码 CER密码 Top-5句子 CER(+LM)总体 CER
交叉测试均6.2%98.1%4.8%(0.4%)5.0%
端到端均9.9%86.7%5.3%(4.8%)6.0%
最好 P84.4%93.3%2.1%(1.4%)2.5%
最差 P915.6%80.0%10.0%(11.5%)10.9%

总体字符准确率落在 89.1% 到 97.5%。交叉测试里 P2、P4、P5 加语言模型后句子 CER 为 0。P9 是唯一加了语言模型反而变差的人:间隔太短,连续三四个 300 ms 窗叠在一起,替换错误经常碰巧成词,语言模型拦不住。

用户画像固定机器、桌面和文段,8 人无标签选出 k=8,72 段发现集加 24 段后续全部分对。k=7 时体型相近、指法都偏平的 P2 和 P3 并成一簇,k=8 才切开。环境画像固定打字人,九种表面(木、钢、塑料、玻璃、鼠标垫、支架、皮沙发、软床垫、大腿)选出 k=9,81+27 段全对。

采样率是这条信道的命门。同一 1842 字符语料,密码 Top-5 在 800 Hz 是 96.00%,200/100/50 Hz 掉到 31.00%、8.00%、0%;50 Hz 时密码 CER 到 62.00%,句子加语言模型的 CER 到 35.86%。离线噪声里,外放音乐、网络流量、CPU 满载按实测幅度注入,成对 AUC 几乎不动;只有本机扬声器在 10 倍、25 倍放大后把约 98.7% 的 AUC 砸到 76.9% 和 52.1%,振动和击键走同一条机身路径。

为什么重要

TCC 罩住了键值接口和摄像头麦克风,没罩住这颗未文档 IMU,也没罩住两个不含键值的时间接口。不需要外置设备,不需要 Input Monitoring 弹窗,不需要 root。装机默认的管理员加控制台用户就够。

补丁方向写得很具体:给 IMU 路径套 TCC,给时间接口加检查,把采样率压到 200 Hz 以下,对标 iOS 大约 100 Hz 和 Android 12 对超过 200 Hz 的权限。800 Hz 对姿态过剩,对击键刚够。驱动层往击键频带加噪声是第三条,不要求应用配合。

2026 年 3 月报给 Apple,5 月 Apple 确认能复现 IMU 泄漏,投稿时还在查根因、做补丁。公开材料只放权限审计和物理泄漏刻画,完整攻击流水线和训练数据留在课题组。统一机身、统一键盘、统一未文档 IMU,让跨机泛化比再做一个缓存侧信道容易。

局限与存疑

必须是当前控制台用户且在管理员组。次要 SSH 或 su 即使用户是管理员,UID 对不上也会在打开设备时收到 kIOReturnNotPrivileged。快速用户切换大约 3 秒断流。触控板手势和 iOS 跨平台明确留作后续。

规模是 10 台 MacBook Air、10 个 22 到 35 岁的人。没有 Pro、没有外接键盘、没有密码管理器自动填充。端到端最差的人已经把固定 300 ms 窗打穿。Brown 加 NLTK 词表帮不了中文和随机密码,密码那栏也确实更差。用户和环境聚类都把另一变量钉死,同一人换桌子、同一桌换人会不会把两个因素缠在一起,没有测。噪声是离线叠加。InceptionTime 的 4 到 14 个百分点优势来自内部对照,没有和声学、同桌手机方案做同设置对比。

术语

原文与代码

社区讨论

相关论文

全部论文解读