# Monitoring Gaps Analysis **Tags:** #note-type/research #domain/technical #status/in-progress #priority/high ## What We Captured - **Duration:** ~20 minutes - **Nuke state:** Already running, normal use - **Connections observed:** - api.honeycomb.io (17KB HTTPS - encrypted) - learn.foundry.com (HEAD requests HTTP - unencrypted) - crashpad_handler process (found but not active) ## What We Likely Missed ### 1. Startup Telemetry (HIGH PRIORITY) **What could be sent:** - Initial system scan (registry, hardware, OS) - License validation and user identification - Geographic location determination (IP geolocation) - Email domain from license credentials - Software environment enumeration **Why we missed it:** - Nuke was already running when we started monitoring - Startup telemetry likely happens during Nuke launch **How to capture:** ```bash # Start monitoring BEFORE launching Nuke sudo tcpdump -i any -w nuke_startup.pcap 'host foundry.com or host honeycomb.io or host sentry.foundry.com' & sleep 2 # NOW launch Nuke # Wait for it to fully load # Stop capture ``` ### 2. Shutdown Telemetry (HIGH PRIORITY) **What could be sent:** - Session summary (duration, tools used, errors) - Final usage statistics - Cached telemetry that wasn't sent during session - License check-out confirmation **Why we missed it:** - We didn't capture Nuke closing - Shutdown often triggers "flush" of cached data **How to capture:** ```bash # While Nuke is running, start capture sudo tcpdump -i any -w nuke_shutdown.pcap 'host foundry.com or host honeycomb.io or host sentry.foundry.com' & # Close Nuke normally # Wait 30 seconds after Nuke closes # Stop capture ``` ### 3. Crash Reporting (MEDIUM PRIORITY) **What could be sent:** - Memory dumps (could include project data!) - Stack traces - System state at crash time - User information - Active projects/files **Why we missed it:** - No crashes occurred during monitoring - crashpad_handler was idle **How to capture:** ```bash # Start capture sudo tcpdump -i any -w nuke_crash.pcap 'host sentry.foundry.com' & # Force kill Nuke to simulate crash kill -9 $(pgrep -f Nuke) # Wait 60 seconds (crash report upload) # Stop capture ``` ### 4. Periodic Check-ins (MEDIUM PRIORITY) **What could be sent:** - Heartbeat signals - License validation pings - Usage statistics batched from previous sessions - Update checks **Why we missed it:** - 20 minutes might not cover the full interval - Common intervals: 15min, 30min, 1hr, 4hr, 24hr **How to capture:** ```bash # Run monitoring for extended period ./monitor_nuke_telemetry.sh # Leave Nuke idle for 4+ hours # Check logs for periodic patterns ``` ### 5. Specific Event Triggers (LOW-MEDIUM PRIORITY) **Events that might trigger telemetry:** **Help Menu Usage:** - Accessing online documentation - Checking for updates - Viewing learning resources **Rendering:** - Large render jobs might report performance metrics - Could include project complexity data **Plugin/Script Usage:** - Third-party plugin loads - Python script execution - Gizmo usage **License Events:** - License checkout/checkin (floating licenses) - Seat availability checks - License server connections **Project Operations:** - Opening certain project types - Using specific nodes/features - Render farm submissions **How to capture:** ```bash # Monitor while performing specific actions sudo tcpdump -i any -w nuke_events.pcap 'host foundry.com or host honeycomb.io' & # In Nuke: # - Check for updates (Help menu) # - Access online help # - Render a complex scene # - Use various nodes/tools # Stop capture ``` ## 3. Methodology Gaps ### Gap A: Local Data Collection **The problem:** - System registry access happens LOCALLY - Data collection ≠ data transmission - Could be cached and sent later **Evidence of local caching:** From earlier investigation: ``` ~/Documents/nuke/15.2.375648/sentry-db/ ``` **How to investigate:** ```bash # Check what's in those Sentry database files ls -lah ~/Documents/nuke/15.2.375648/sentry-db/ file ~/Documents/nuke/15.2.375648/sentry-db/* # Monitor file changes during Nuke use inotifywait -m ~/Documents/nuke/15.2.375648/sentry-db/ # Check for other telemetry databases find ~/Documents/nuke ~/.nuke ~/.cache -name "*.db" -o -name "*.sqlite" -o -name "*telemetry*" -o -name "*analytics*" ``` ### Gap B: DNS-Based Identification **The problem:** - Geographic location can be determined from DNS queries - Doesn't require sending location data explicitly - Foundry sees your IP address in connection logs **What Foundry already knows from network metadata:** - Your public IP address (from all connections) - Geographic location (IP geolocation databases) - ISP information - Approximate physical location **This is unavoidable** unless you use VPN/proxy ### Gap C: Different Protocols/Ports **What we monitored:** - TCP connections to known Foundry domains - Ports 80, 443 (HTTP/HTTPS) **What we might have missed:** - UDP traffic (less common but possible) - Different ports (custom license servers, etc.) - DNS queries themselves (can leak info) - IPv6 connections (if using dual-stack) **How to capture everything:** ```bash # Capture ALL external traffic (not filtered) sudo tcpdump -i any -w nuke_full.pcap 'not net 10.0.0.0/8 and not net 127.0.0.0/8' # Much larger file, but catches everything ``` ### Gap D: System Registry Access **The problem:** - On Linux, "registry" means different things - Could be checking: - `/proc/` - Process and system info - `/sys/` - Hardware information - Environment variables - Config files in `~/.config/`, `~/.local/share/` - `/etc/` system files **This happens in-process** - no network traffic! **How to monitor:** ```bash # Use strace to see what files Nuke accesses sudo strace -f -e trace=open,openat,read,stat -p $(pgrep -f Nuke) 2>&1 | tee nuke_file_access.log # Look for suspicious reads grep -E '/proc|/sys|/etc|\.config' nuke_file_access.log ``` ### Gap E: Email Domain Collection **How they could get it:** 1. **From license credentials** (most likely) - You logged in with email to activate license - Email domain already known to Foundry 2. **From system username** - If username is email format: `user@domain.com` 3. **From hostname/network** - SMTP server domain - Email client configuration files **This might not require transmission** - they already have it from license registration ### Gap F: Third-Party Services (Honeycomb, Sentry) **The problem:** - Even if we block Foundry domains, third-party services collect metadata: - Honeycomb sees: IP address, timing, data volume - Sentry sees: IP address, user-agent, system info - Both can geolocate your IP **Honeycomb/Sentry also have access to:** - All data Foundry sends them (obviously) - Their own usage analytics - Cross-customer correlation ## 4. How to Fill the Gaps ### Comprehensive Monitoring Plan **Phase 1: Startup/Shutdown Capture (1 day)** ```bash # Morning: Capture startup sudo tcpdump -i any -w startup.pcap 'host foundry.com or host honeycomb.io or host sentry.foundry.com' & # Launch Nuke, wait for full load, stop capture # Evening: Capture shutdown sudo tcpdump -i any -w shutdown.pcap 'host foundry.com or host honeycomb.io or host sentry.foundry.com' & # Close Nuke, wait 60 seconds, stop capture # Analyze differences tshark -r startup.pcap -q -z io,stat,0 tshark -r shutdown.pcap -q -z io,stat,0 ``` **Phase 2: Local File Monitoring (ongoing)** ```bash # Install inotify-tools sudo pacman -S inotify-tools # Monitor Nuke directories for file changes inotifywait -m -r ~/Documents/nuke ~/.nuke ~/.cache/nuke 2>&1 | tee nuke_file_changes.log ``` **Phase 3: System Call Tracing (1 session)** ```bash # Trace file access during Nuke session sudo strace -f -e trace=open,openat,read,readv,connect -p $(pgrep -f Nuke) -o nuke_strace.log # After session, analyze grep -E 'open|connect' nuke_strace.log | grep -vE '(ENOENT|EAGAIN)' > nuke_access_summary.txt ``` **Phase 4: Long-Duration Monitoring (1 week)** ```bash # Start ongoing monitoring ./monitor_nuke_telemetry.sh # Leave running during normal Nuke usage # Check logs daily for patterns ls -lh telemetry-logs/ grep "NEW CONNECTION" telemetry-logs/*.log ``` **Phase 5: Event-Triggered Capture (as needed)** ```bash # While monitoring is running: # - Check for updates (Help menu) # - Trigger an error/warning # - Access online help # - Large render job # - Use various plugins # Note timing in log ``` ### Ultimate Test: Compare with Block Enabled ```bash # 1. Capture baseline (telemetry allowed) sudo tcpdump -i any -w baseline.pcap 'host honeycomb.io or host foundry.com' & # Use Nuke normally for 30 min # Stop capture # 2. Block telemetry ./block_nuke_telemetry.sh # 3. Capture with blocking sudo tcpdump -i any -w blocked.pcap 'host honeycomb.io or host foundry.com' & # Use Nuke normally for 30 min # Stop capture # 4. Compare tshark -r baseline.pcap | wc -l # Should have packets tshark -r blocked.pcap | wc -l # Should be zero or connection failures # 5. Check if Nuke still functions # If features break, that tells us what relied on telemetry ``` ## Summary: What We're Probably Missing ### Definitely Missing: 1. **Startup telemetry** - System scan, initial check-in 2. **Shutdown telemetry** - Session summary, cached data flush 3. **Content of encrypted payloads** - Everything in that 17KB to Honeycomb ### Probably Missing: 4. **Crash reports** - No crashes occurred 5. **Periodic check-ins** - 20 min might not cover the interval 6. **Local data collection** - Registry/system scans happen locally first ### Possibly Missing: 7. **Event-triggered telemetry** - Help menu, updates, specific features 8. **Alternative protocols** - UDP, different ports, IPv6 9. **License server traffic** - If using floating licenses 10. **Cached/batched data** - Stored locally, transmitted later ### Already Captured (But Can't Decrypt): 11. **Email domain** - Likely in Honeycomb payload or already known from license 12. **Geographic location** - Determined from IP address (unavoidable) 13. **Usage profiling** - Likely in Honeycomb payload 14. **System information** - Likely in Honeycomb payload ## Next Steps **Immediate (to fill critical gaps):** 1. Capture Nuke startup telemetry 2. Capture Nuke shutdown telemetry 3. Check local Sentry database contents 4. Run `strace` to see file/registry access **Short-term (deeper investigation):** 1. Monitor for 24+ hours to catch periodic check-ins 2. Force a crash and capture Sentry traffic 3. Test specific events (Help menu, updates, etc.) 4. Compare traffic with telemetry blocked **Long-term (ongoing):** 1. Run monitoring service continuously 2. Build timeline of telemetry patterns 3. Correlate with Nuke usage events 4. File GDPR/CCPA request to see what Foundry actually has --- **Bottom Line:** We're definitely missing startup/shutdown telemetry and can't see inside encrypted payloads. The EULA-permitted data (email, location, registry, usage) is almost certainly being transmitted - we just can't see it because it's encrypted inside the Honeycomb connection.