get to prod tasks
This commit is contained in:
74
tasks/ios-production/06-jailbreak-detection.md
Normal file
74
tasks/ios-production/06-jailbreak-detection.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 06. Jailbreak Detection & Runtime Security
|
||||
|
||||
meta:
|
||||
id: ios-production-06
|
||||
feature: ios-production
|
||||
priority: P2
|
||||
depends_on: []
|
||||
tags: [security, hardening, production]
|
||||
|
||||
objective:
|
||||
- Implement jailbreak detection and runtime security measures to protect the app on compromised devices
|
||||
|
||||
deliverables:
|
||||
- Jailbreak detection implementation
|
||||
- Runtime integrity checks
|
||||
- Anti-tampering measures
|
||||
- Secure enclave usage for sensitive operations
|
||||
|
||||
steps:
|
||||
1. Implement jailbreak detection:
|
||||
- Check for common jailbreak files (/Applications/Cydia.app, etc.)
|
||||
- Check if app can write outside sandbox
|
||||
- Check for suspicious dylibs
|
||||
- Use multiple detection methods for robustness
|
||||
- Add to APIClient or AppDelegate
|
||||
2. Define jailbreak response:
|
||||
- Option A: Block app usage with warning
|
||||
- Option B: Degrade functionality (no biometric, no payments)
|
||||
- Option C: Log and alert backend
|
||||
- Recommended: Option B + alert backend
|
||||
3. Implement runtime integrity checks:
|
||||
- Verify code signature at runtime
|
||||
- Detect debugger attachment
|
||||
- Detect code injection attempts
|
||||
- Verify method swizzling hasn't occurred
|
||||
4. Use Secure Enclave:
|
||||
- Store encryption keys in Secure Enclave
|
||||
- Use biometrics via LocalAuthentication framework
|
||||
- Protect keychain items with biometry constraint
|
||||
5. Add anti-tampering:
|
||||
- Obfuscate sensitive strings (API endpoints, keys)
|
||||
- Verify bundle identifier hasn't changed
|
||||
- Check for binary modification
|
||||
6. Implement backend alerting:
|
||||
- Send jailbreak detection event to backend
|
||||
- Include device info (non-identifiable)
|
||||
- Flag account for additional monitoring
|
||||
|
||||
tests:
|
||||
- Unit: Test detection logic with mock jailbreak indicators
|
||||
- Integration: Test on jailbroken device (if available)
|
||||
- Security: Verify debugger detection works
|
||||
|
||||
acceptance_criteria:
|
||||
- Jailbreak detection active with multiple methods
|
||||
- App degrades gracefully on detected jailbreak
|
||||
- Backend receives alert when jailbreak detected
|
||||
- Secure Enclave used for key storage
|
||||
- Debugger attachment detected and handled
|
||||
- Runtime integrity checks active
|
||||
- Sensitive strings obfuscated in binary
|
||||
- No false positives on non-jailbroken devices
|
||||
|
||||
validation:
|
||||
- Run on normal device → no jailbreak detected, full functionality
|
||||
- Run on jailbroken device → degraded mode activated
|
||||
- Attach debugger → app detects and responds
|
||||
- Check backend logs → jailbreak events received
|
||||
|
||||
notes:
|
||||
- Jailbreak detection is cat-and-mouse — don't rely on it exclusively
|
||||
- Apple may reject apps that overly aggressively block jailbroken devices
|
||||
- Degradation is safer than blocking (better user experience)
|
||||
- Use Swift string obfuscation libraries for sensitive data
|
||||
Reference in New Issue
Block a user