π Case Study: Homekit Attacks & Phantom Devices
Phantom Device Injection β rapportd DoS Vulnerability
Educational data flow diagrams for research discussion on how a phantom device was injected into an iCloud account, triggering an 8-day denial-of-service attack on macOS.
1. Normal iCloud Device Authentication Flow
ββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ β β β β β β β USER'S DEVICE β β APPLE ID AUTH SERVER β β ICLOUD ACCOUNT β β β β β β β ββββββββββββββ¬ββββββββββββββ ββββββββββββββ¬ββββββββββββββ ββββββββββββββ¬ββββββββββββββ β β β β β β β 1. Login with Apple ID + 2FA β β β βββββββββββββββββββββββββββββββββΊβ β β β β β β 2. Verify credentials β β β βββββββββββββββββββββββββββββββββΊβ β β β β β 3. Add device to trusted list β β β ββββββββββββββββββββββββββββββββββ β β β β 4. Device now in Find My β β β ββββββββββββββββββββββββββββββββββ β β β β
How device authentication should work: User initiates, 2FA required, device added with user's naming convention
π Key Points
- User initiates β Authentication starts from the user's device
- 2FA required β New devices must pass two-factor authentication
- Correct naming β Device added with user's naming convention (lowercase "hana's")
2. Suspected Attack Flow (Phantom Device Injection)
ββββββββββββββββββββββ ββββββββββββββββββββββ ββββββββββββββββββββββ ββββββββββββββββββββββ β β β β β β β β β ATTACKER β β VICTIM'S PHONE β β APPLE ID AUTH β β ICLOUD ACCOUNT β β β β β β β β β βββββββββββ¬βββββββββββ βββββββββββ¬βββββββββββ βββββββββββ¬βββββββββββ βββββββββββ¬βββββββββββ β β β β β β β β β 1. Intercept via Stingray/Bluetooth β β β ββββββββββββββββββββββΊ β β β β β β β β β β β β 2. Extract auth tokens/session β β β ββββββββββββββββββββββ β β β β β β β β β β β β 3. Replay auth with phantom device details β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΊβ β β β β β β β β β 4. Phantom device added: "Hana's" (not "hana's") β β β β ββββββββββββββββββββββββ β β β β
Attacker intercepts via Stingray/Bluetooth, extracts tokens, replays auth with phantom device
π΄ Key Evidence
- Wrong capitalization β Attacker used "Hana's" but victim uses "hana's"
- Pixel correlation β Google Pixel 7 Pro briefly online Jan 25 β same day as estimated injection
- No 2FA prompt β Victim never received a two-factor authentication request
3. rapportd DoS Loop (The Bug)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β VICTIM'S MAC β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β β β ββββββββββββββββββββββ ββββββββββββββββββββββ ββββββββββββββββββββββββββββββ β β β β β β β β β β β ICLOUD SYNC ββββββββΊβ RAPPORTD DAEMON ββββββββΊβ PHANTOM: "Hana's MBP" β β β β β β β β β β β ββββββββββββββββββββββ βββββββββββ¬βββββββββββ ββββββββββββββββ¬ββββββββββββββ β β β β β β β β β β β Try to connect β β β β ββββββββββββββββββββββββββββββββΊβ β β β β β β β β UNREACHABLE β β β β βββββββββββββββββββββββββββββββββ β β β β β β β β οΈ NO BACKOFF - Retry NOW β β β β ββββββββββββββββββββββββββββββββΊβ β β β β β β β β UNREACHABLE β β β β βββββββββββββββββββββββββββββββββ β β β β β β β βΎοΈ INFINITE LOOP β β β β (8 days, 141,575 errors) β β β β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The bug: rapportd has no exponential backoff or timeout β it retries forever
β οΈ The Vulnerability
- No backoff β Immediate retry with no delay between attempts
- No maximum β No limit on retry attempts
- No timeout β Loops indefinitely until device is removed
Result: 8 days of DoS, 141,575 errors, 70x amplification
4. Evidence Destruction Flow
ββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββ β β β β β VICTIM REMOVES PHANTOM β β ATTACKER MONITORING? β β β β β ββββββββββββββββ¬ββββββββββββββββ ββββββββββββββββ¬ββββββββββββββββ β β β β β 23:37:00 - Remove phantom device from iCloud β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΊβ β β β 23:37:46 - Network disruption begins (46 sec later) β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β 23:38:09 - Socket flows failed β β β β 23:38:22 - iCloud connection lost β β β β 23:38:48 - VPN tunnel stopped β β β β ~23:40 - SYSTEM CRASH β β ββββββββββββββββββββββββββββββββββββββββββββ β β β Logs from 23:37-23:40 DESTROYED β β β 30-day retention gap at this window β β β No forensic evidence of auth method β β β
Suspicious timing: Network disruption began 46 seconds after phantom removal
β±οΈ Timeline of Destruction
| Time | Event |
|---|---|
| 23:37:00 | Victim removes phantom device |
| 23:37:46 | Network disruption begins |
| 23:38:09 | Socket flows failed |
| 23:38:22 | iCloud connection lost |
| 23:38:48 | VPN tunnel stopped |
| ~23:40 | System crash β logs destroyed |
Result: 30-day log retention shows gap exactly at resolution window.
5. OpenID Connect (OIDC) Attack Surface
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β OIDC AUTHENTICATION FLOW β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββ ββββββββββββββββββββββββββ ββββββββββββββββββββββββββ β β β β β β β USER AGENT β β RELYING PARTY β β IDENTITY PROVIDER β β (Browser) β β (App) β β (Apple / Google) β β β β β β β βββββββββββββ¬βββββββββββββ βββββββββββββ¬βββββββββββββ βββββββββββββ¬βββββββββββββ β β β β 1. Login request β β β ββββββββββββββββββββββββββββββΊβ β β β β β 2. Redirect to IdP β β β βββββββββββββββββββββββββββββββ β β β β β 3. Authenticate with IdP β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΊβ β β β β 4. ID Token (JWT) β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β β 5. Token to RP β β β ββββββββββββββββββββββββββββββΊβ β β β β β β 6. Validate token β β β β β β β β β β β β β β β β β βΊβ β β β β οΈ VULNERABILITY POINTS: βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β’ Token confusion: Relying party accepts token from wrong issuer β β β’ Mutable ID: Using email instead of stable `sub` claim β β β’ Discovery attack: Trusting attacker-controlled metadata β β β’ Session hijack: Stolen tokens replayed for device authentication β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Both Apple and Google use OIDC β vulnerabilities in implementation can create cross-platform attack surfaces
π Common OIDC Vulnerabilities
- Token confusion β Relying party accepts token from wrong issuer
- Mutable ID β Using email instead of stable
subclaim - Discovery attack β Trusting attacker-controlled metadata
- Session hijack β Stolen tokens replayed for device auth
6. Attack Timeline Visualization
Jan 25 Feb 2 β β βΌ βΌ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β 8-DAY DoS WINDOW β β β β Pixel Phantom rapportd loop Find My Remove β β online injected ββββββββββββββββββββ enabled device β β β β β β β β β βΌ βΌ βΌ βΌ βΌ β β 11:49 ~12:00 141,575 errors 23:23 23:37 β β AM 70x baseline β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β βΌ βββββββββββββββββββββββ β LOOP STOPPED β β IMMEDIATELY β βββββββββββββββββββββββ β βΌ βββββββββββββββββββββββ β 46 sec later: β β Network attack β β + System crash β βββββββββββββββββββββββ
8-day DoS window: Jan 25 (injection) β Feb 2 (removal) β Loop stopped instantly
π Key Moments
| Date/Time | Event |
|---|---|
| Jan 25, 11:49 AM | Pixel 7 Pro briefly online |
| ~Jan 25, 12:00 | Phantom device injected |
| Jan 25 - Feb 2 | 141,575 rapportd errors (70x baseline) |
| Feb 2, 23:23 | Find My Mac enabled β phantom discovered |
| Feb 2, 23:37 | Phantom removed β loop stopped instantly |
7. What We Need From Apple (CCPA Request)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β CCPA DATA REQUEST β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β β β REQUESTED DATA: β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β β’ Device addition logs for "Hana's MacBook Pro" β β β β β’ IP address used to add the device β β β β β’ Authentication method (was 2FA bypassed?) β β β β β’ Session details (device/browser/API used) β β β β β’ Account access logs Jan 1 - Feb 6, 2026 β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β β DEADLINE: March 23, 2026 (45 days) β β β β IF DATA SHOWS: β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β IP β victim's known IPs β PROVES unauthorized access β β β β No 2FA in logs β PROVES bypass/compromise β β β β Device/browser mismatch β PROVES attacker fingerprint β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Apple's server logs can prove unauthorized access β awaiting CCPA response by March 23, 2026
π Requested Data
- Device addition logs for "Hana's MacBook Pro"
- IP address used to add the device
- Authentication method (was 2FA bypassed?)
- Session details (device/browser/API used)
- Account access logs Jan 1 - Feb 6, 2026
What This Could Prove
- IP β victim's known IPs β Proves unauthorized access
- No 2FA in logs β Proves bypass/compromise
- Device/browser mismatch β Proves attacker fingerprint
Summary
| Diagram | Key Insight |
|---|---|
| 1. Normal Auth Flow | User initiates, 2FA required, correct naming |
| 2. Attack Flow | Attacker intercepts, bypasses 2FA, wrong capitalization |
| 3. rapportd Loop | No backoff = infinite DoS from phantom device |
| 4. Evidence Destruction | Crash 46 sec after removal destroyed logs |
| 5. OIDC Surface | Shared auth layer creates cross-platform risks |
| 6. Timeline | 8 days of DoS, stopped instantly on removal |
| 7. CCPA Request | Apple's logs can prove unauthorized access |
