
AI로 생성한 주제 설명용 이미지입니다.
- 원문: arXiv 2609.21569
- 저자: Jiaji He, Yi Shi, Junfeng Cai, Chang Liu, Yongqiang Lyu
- 공개일: 2026-09-21 (arXiv v1)
- Tags: Side Channel, Keystroke Inference, macOS, IMU
본 글은 원 논문의 주요 기술적 내용을 이해하기 쉽게 요약·정리한 글입니다. 자세한 내용은 상단의 원문 링크를 참고하세요.
한눈에 보기
Apple Silicon MacBook의 섀시에 내장된 비공개 IMU는 기기 자세뿐 아니라 키 입력 진동까지 약 800Hz로 측정한다. 논문은 일반적으로 실행된 non-root 프로세스가 별도 TCC Input Monitoring 승인이나 전용 entitlement 없이 AppleSPUHIDDevice에서 6축 IMU stream을 읽을 수 있고, HIDIdleTime과 CGEventSourceSecondsSinceLastEventType으로 입력 시점과 keyboard/trackpad를 구분할 수 있음을 보였다.
이를 이용한 BRUTUS는 10대의 MacBook Air, 10명 참가자, M3·M4·M5와 macOS Sonoma·Sequoia·Tahoe에서 키·사용자·노트북 받침면을 추론했다. unseen user·device·surface를 포함한 end-to-end 평가에서 password 평균 CER 9.9%, Top-5 86.7%, sentence CER 5.3%, LM 적용 후 4.8%를 기록했다. Apple은 2026년 5월 IMU leakage 재현을 확인하고 mitigation을 개발 중이라고 저자에게 답했다.
연구 배경
기존 MacBook IMU 연구는 root 권한이 필요하다고 보았지만, 저자들은 실제 IOKit access boundary가 더 약하다는 점에 주목했다. MacBook은 모바일 기기처럼 public motion API를 제공하지 않지만, 내부 HID service는 user space data path를 갖고 있다.
기존 keystroke side channel은 외부 microphone·wireless receiver·wearable sensor가 필요하거나, TCC로 보호된 camera/microphone, 특정 app·binary·CPU에 의존하는 cache/network timing을 사용한다. 내장 IMU 경로는 target-local malware만으로 application-independent 진동을 관찰할 수 있다는 점이 다르다.
공격 모델 / 전제 조건
공격자는 피해자의 active console user 계정 아래에서 non-root background process를 실행할 수 있다고 가정한다. 최초 Mac 설정에서 생성되는 device owner는 통상 administrator group에 속하지만 프로세스 자체는 root가 아니며, 공격 중 sudo·password prompt·TCC Input Monitoring 승인을 요구하지 않는다.
IMU callback은 administrator-group membership과 current console UID가 모두 맞아야 한다. 다른 계정의 SSH session이나 launchd daemon은 callback을 받지 못하고, Fast User Switching이 발생하면 원래 계정의 전달은 약 3초 안에 중단된다. 공격자는 수집한 800Hz sensor data를 외부로 반출해 offline 분석할 수 있다고 가정한다.
핵심 Root Cause
macOS가 key value를 직접 노출하는 CGEventTap과 IOHIDManager는 TCC Input Monitoring으로 보호하면서, 동일한 입력의 물리적 효과와 정확한 timing을 노출하는 content-free interface는 같은 privacy boundary에 포함하지 않은 것이 원인이다.
AppleSPUHIDDevice는 admin group과 console UID만 검사할 뿐 user-visible consent나 dedicated entitlement가 없고, HIDIdleTime은 모든 local process가 100kHz 이상 polling해 sub-millisecond HID reset을 관찰할 수 있다. CGEventSourceSecondsSinceLastEventType도 GUI console user라면 TCC 없이 keyboard와 trackpad timing을 구분한다. 각각은 key value를 직접 주지 않지만 결합하면 IMU waveform을 정확한 keystroke window로 자를 수 있다.
핵심 공격 원리
키 위치는 off-center IMU까지의 거리와 각도가 달라 6축 amplitude·phase signature를 만든다. typing force는 주로 amplitude를 바꾸지만 oscillation·peak timing·decay shape를 유지하고, 받침면의 stiffness·damping·contact geometry는 chassis vibration propagation을 바꾼다.
BRUTUS는 timing oracle로 continuous stream을 300ms window로 자르고, 3축 accelerometer와 3축 gyroscope에서 raw·absolute-difference 12채널을 구성한다. InceptionTime이 37개 class(a-z, 0-9, space)를 분류하고 beam search와 trigram LM이 sequence를 복원한다. 사용자·환경 profiling은 6축 사이의 15개 pairwise correlation에서 105차원 segment feature를 만들고, prediction strength로 cluster 수를 label 없이 정한다.
공격 흐름
- 피해자와 같은 active console UID의 non-root process가 IMU HID service를 연다.
- HIDIdleTime reset을 polling하고 CGEventSource timing으로 trackpad event를 제거한다.
- 약 800Hz 6축 IMU stream에서 각 keystroke 주변 300ms window를 추출한다.
- supervised classifier가 key probability를 만들고 beam search가 password·sentence 후보를 구성한다.
- 의미가 있는 문장은 trigram LM으로 보정하되 sensor confidence가 높은 위치는 고정한다.
- 장시간 segment의 axis correlation을 clustering해 typist와 support surface profile도 생성한다.
성공 조건 / 실패 조건
공격 성공에는 IMU가 내장된 Apple Silicon MacBook, administrator group인 active console account, 같은 UID의 실행 권한, 충분한 800Hz sampling과 typing event가 필요하다. 빠른 연속 입력은 window overlap을 일으켜 성능을 떨어뜨리며, P9의 경우 LM이 valid word 형태의 오류를 오히려 강화했다.
TCC 또는 entitlement로 IMU와 timing oracle을 보호하거나 sampling rate를 크게 낮추면 실패 가능성이 높다. 800Hz에서 password Top-5 96.0%였던 controlled rate-limit 실험은 200Hz 31.0%, 100Hz 8.0%, 50Hz 0%로 감소했다. driver-level의 keystroke-band noise도 후보 방어지만 coarse motion 기능을 유지하는 calibration이 필요하다.
연구진의 실험 환경
MacBook Air 10대가 사용됐다. M3·M4·M5, 13·15인치, macOS Sonoma 14·Sequoia 15·Tahoe 26 조합이며 IMU는 약 800Hz다. 참가자는 성인 10명이고, controlled characterization에는 P1, attack training에는 주로 P1~P7, unseen end-to-end에는 P8~P10을 사용했다.
Key-position 실험은 대표 10개 키를 각 50회, typing-force는 M 키를 4단계 각 50회 측정했다. 받침면은 wood·glass·steel·plastic·sofa·mattress·mouse pad·lap·laptop stand의 9종이다. cross-device characterization은 D1~D10에서 기기당 약 900 keystroke, 27 key를 수집했다. 모델 평가는 session-level GroupKFold 5-fold로 같은 session의 window가 train/test에 섞이지 않게 했다.
주요 실험 결과
Held-out D8·D9·D10의 same-key versus different-key pairwise ROC AUC는 각각 91.2%, 98.5%, 96.2%였다. 일반 external speaker, network traffic, CPU load의 기록된 1배 noise는 clean AUC 98.7%를 거의 바꾸지 않았다. MacBook 내부 speaker vibration만 5배·10배·25배에서 95.0%·76.9%·52.1%로 크게 낮췄다.
P1~P7의 cross-test 평균은 password CER 6.2%, Top-5 98.1%, sentence CER 4.8%, LM 적용 0.4%, overall CER 5.0%였다. 완전히 unseen인 P8~P10은 password CER 9.9%, Top-5 86.7%, sentence CER 5.3%, LM 적용 4.8%, overall 6.0%였다. 개인별 전체 accuracy 관점에서는 89.1~97.5% 범위다.
Label-free user profiling은 8명에 대해 discovery 72개와 subsequent 24개 segment를 모두 올바른 profile에 배정했고, prediction strength 기준으로 k=8을 선택했다. 환경 profiling도 9개 surface의 discovery 81개와 subsequent 27개를 모두 정확히 배정하며 k=9를 선택했다. 이는 identity 이름을 알아낸다는 뜻이 아니라 반복되는 익명 profile을 분리하고 재식별한다는 뜻이다.
실제 발견된 취약점 / 사례
핵심 취약점은 undocumented AppleSPUHIDDevice raw IMU path가 root가 아닌 일반 device-owner session에서 열리고, Input Monitoring 설정을 꺼도 약 800Hz callback이 계속 전달되는 것이다. 동일 결과가 평가한 10대, M3~M5, 세 macOS major release에서 일관되게 관찰됐다.
저자들은 2026년 3월 Apple에 IMU access-control issue와 side-channel vector를 알렸고, Apple은 5월 leakage를 재현했다고 확인했다. 논문 제출 시점에는 root cause 조사와 patch 개발이 진행 중이었으며, CVE나 fixed OS version은 논문에 제시되지 않았다.
저자 주장 vs 실제 증명 범위
저자들은 local non-root code가 제한된 조건에서 IMU를 읽고, controlled dataset에서 키·사용자 profile·surface를 추론할 수 있음을 보였다. 특히 unseen participant/device/surface 분리를 포함해 단일 기기·단일 사용자 overfit 주장을 어느 정도 줄였다.
그러나 실제 malware campaign, background persistence, network exfiltration, 다양한 keyboard layout·언어·typing style, MacBook Pro나 구형 Intel Mac은 평가하지 않았다. user profiling은 실명 식별이 아니라 cluster discovery이고, environment profiling도 사전에 수집된 9개 조건의 반복 segment 배정이다. 문장 복원에 사용한 LM과 supplied test sentence 조건을 실제 자유 입력 전체에 일반화하면 안 된다.
기존 공격 / 기존 점검 방식과의 차이
기존 physical keystroke attack은 microphone·smartphone·smartwatch·RF 장비 등 외부 sensor가 필요하다. BRUTUS는 factory-installed sensor를 local software가 읽는다. 기존 software attack은 network event, timing prior, specific cache primitive·binary layout에 의존하지만 이 공격은 target application과 무관한 chassis vibration을 사용한다.
일반 권한 점검이 root 여부와 TCC-protected key API만 확인하면 놓친다. undocumented IOKit service, content-free timing interface, console UID·group 조건, callback sampling rate를 함께 감사해야 한다.
연구의 한계와 주의해서 볼 부분
공격은 active console UID와 admin group 조건을 모두 요구한다. 다른 계정 SSH, switched-out user, console owner가 아닌 daemon은 실패한다. 참가자 10명과 MacBook Air 10대는 의미 있는 표본이지만 전체 Mac 생태계를 대표하지 않는다.
end-to-end attack dataset, trained model, 참가자 raw data와 완전한 Section 5 pipeline은 공개되지 않았다. noise 평가는 offline additive injection이고 실제 동시 speaker·motion·공간 이동을 모두 포함하지 않는다. 5-fold 평가도 일부 corpus와 모델 설정에 한정된다.
공개 PoC / Exploit / Tool / Artifact 분석
논문은 익명 Open Science artifact submission-artifact-604F를 제시한다. 설명상 Section 4의 access-control audit, key/force/surface/cross-device/noise characterization raw IMU·protocol·analysis script·expected output과 demo video가 포함되지만, 2026-09-22 확인 시 해당 URL은 unauthenticated 요청에 HTTP 401을 반환해 내용을 독립 검증하지 못했다.
공개 예정 범위도 Section 4에 한정된다. 참가자 dataset, trained model, Section 5 end-to-end BRUTUS implementation은 연구팀 내부에 남는다. 따라서 현재 완전한 keystroke-recovery PoC가 공개됐다고 표현하면 안 된다.
레드팀 / 모의해킹에서 어떻게 활용할까
허가된 Mac에서 실제 사용자 password를 수집하지 말고 synthetic typing corpus와 test account만 사용한다. 먼저 standard·admin·root, GUI·SSH·LaunchAgent, console switch 조합별로 service open과 callback delivery를 matrix화한다.
Input Monitoring on/off에서 IMU sampling rate와 timing oracle 접근이 동일한지 확인하고, raw stream은 짧은 canary session만 저장한다. leakage가 확인되면 실제 문자 복원까지 확장하기보다 TCC mediation·sampling limit·user indication 적용 후 callback 차단과 coarse motion 기능 보존을 회귀시험하는 것이 적절하다.
실제 점검 시 추가할 체크리스트
- undocumented HID·IOKit service를 non-root process가 열 수 있는가
- admin group과 active console UID 검사가 정확히 어떻게 적용되는가
- 다른 UID SSH·daemon·Fast User Switching에서 callback이 중단되는가
- TCC Input Monitoring on/off가 sensor path에 영향을 주는가
- raw accelerometer·gyroscope sampling rate와 background 지속성이 얼마인가
- HIDIdleTime·CGEventSource가 TCC 없이 precise timing을 제공하는가
- keyboard와 trackpad event를 결합해 segmentation할 수 있는가
- rate limiting 후 key discrimination이 실질적으로 감소하는가
- driver noise가 정상 orientation 기능을 해치지 않고 leakage를 줄이는가
- audit·EDR이 해당 IOKit open과 고주파 polling을 관찰할 수 있는가
실무 가치 평가
높다. “key value를 직접 주지 않는 sensor는 민감하지 않다”는 접근통제 가정을 깨고, 여러 content-free signal의 결합이 input privacy를 복원할 수 있음을 보여준다. macOS endpoint assessment에서 TCC 목록뿐 아니라 undocumented sensor와 timing oracle을 포함해야 한다는 근거가 된다.
결론
MacBook IMU는 단순 motion sensor가 아니라 keyboard vibration과 사용 환경을 담는 고주파 side channel이다. current console admin-group process에 raw stream을 제공하면서 timing oracle까지 열어두면 non-root local code가 입력을 추론할 수 있다. TCC/entitlement 적용, sampling 제한과 calibrated noise를 함께 검토해야 한다.
댓글