Executive Summary
Analysis of Facebook iOS app version 345.0 reveals a sophisticated audio session management infrastructure that activates in response to UI interactions, specifically shimmer loading animations in the feed. While no actual hardware microphone recording was detected during testing (AudioQueueNewInput = 0), the app maintains an aggressive audio session polling mechanism that could enable rapid microphone activation.
Key Findings
1. Shimmer-to-Audio Chain (CONFIRMED)
Backtrace evidence proves direct connection between feed UI and audio infrastructure:
[FB-SystemAudioSessionManager] _updateAVAudioSessionProperties
FBSharedFramework!FBFeedShimmeringStoryFlexComponentSpec::__internalFactory
libdispatch.dylib!_dispatch_call_block_and_release
The shimmer placeholder component (shown while stories load) triggers audio session configuration.
2. Audio Infrastructure Polling Rate
During 11 minutes 29 seconds of feed scrolling:
- undefined
3. Touch Event Trigger Chain
UIKitCore!__dispatchPreprocessedEventFromEventQueue
FBSharedFramework!FBApplicationSendEventListener_ApplicationWillSendEvent
-> _backgroundAudioEnabledClients
-> propertiesForClients:routeIsExternal:active:...
-> _updateAVAudioSessionProperties
Every touch/scroll event invokes the full audio session management pipeline.
4. Category Spoofing Pattern
The app declares `AVAudioSessionCategoryAmbient` (no mic access) while constantly invoking microphone-related methods:
- undefined
5. No Hardware Recording Detected
Critical metrics during testing:
- undefined
The audio infrastructure is "primed" but no actual recording occurred during passive feed browsing.
Scripts Created
Monitoring Scripts (in `ANALYSIS/scripts/`)
| Script | Purpose |
|---|---|
| `fbark_audio_trace.js` | Trace FBARKAudioSessionController methods |
| `shimmer_trace_monitor.js` | Monitor shimmer-to-audio chain |
| `combined_monitor.js` | All-in-one audio session monitor |
| `audio_unit_monitor.js` | Low-level AudioUnit/AudioQueue hooks |
| `ios_daemon_monitor.js` | System daemon monitoring |
| `audio_exfil_monitor.js` | Network traffic for audio data |
| `realtime_audio_monitor.js` | Streaming/WebSocket audio detection |
Proving Data Exfiltration
To detect if/when audio data is transmitted, run both network monitors simultaneously:
frida -U -n Facebook -l audio_exfil_monitor.js
frida -U -n Facebook -l realtime_audio_monitor.js
What to Watch For
**High Priority [!!!] Markers:**
- undefined
**Audio Signatures Detected:**
- undefined
Suspicious Endpoints Monitored
- undefined
Triggering Actual Recording
The infrastructure activates but doesn't record during passive browsing. To trigger actual recording:
- undefined
When any of these are triggered, the `AudioQueueNewInput` and `AudioQueueStart` hooks should fire.
Evidence Summary
| Finding | Status | Severity |
|---|---|---|
| Shimmer triggers audio infrastructure | CONFIRMED | High |
| Touch events trigger audio polling | CONFIRMED | High |
| ~5,700 audio cycles/second on touch | CONFIRMED | Medium |
| Category spoofing pattern | CONFIRMED | Medium |
| Actual hardware recording | NOT DETECTED | - |
| Audio data transmission | REQUIRES TESTING | Unknown |
Recommendations for Further Investigation
- undefined
Technical Notes
Class Hierarchy
FBARKAudioSessionController
-> FBSystemAudioSessionManager
-> AVAudioSession (iOS)
-> AudioQueue (CoreAudio)
-> Hardware
Key Methods
- undefined
*Analysis conducted: 2025-12-30* *Facebook iOS version: 345.0* *Tools: Frida, objection*