| Version | Supported |
|---|---|
| latest | ✅ |
| < latest | ❌ |
If you discover a security vulnerability in Nothing Modes, please report it responsibly:
- Do NOT open a public GitHub issue.
- Email your findings to info@tdvorak.dev with the subject line
[SECURITY] Nothing Modes vulnerability. - Include a clear description of the issue, steps to reproduce, and potential impact.
- You will receive an acknowledgment within 48 hours.
Nothing Modes implements the following security measures:
- WriteSettingPolicy validation: All
Action.WriteSettingactions are validated against a key/value format policy before being executed via Shizuku or public APIs. - URL scheme restriction:
Action.OpenUrlonly acceptshttpandhttpsschemes. - Package name validation:
Action.LaunchAppvalidates package name format before dispatching intents. - Receiver permissions: Exported receivers (FlipReceiver, NothingModesToyService)
require
com.nothing.ketchum.permission.ENABLEto prevent unauthorized triggering. - No hardcoded secrets: API keys and credentials are not stored in the repository.
- Backup disabled:
android:allowBackup="false"prevents automation data extraction. - kotlinx.serialization: Uses safe sealed-class deserialization (no arbitrary class instantiation from untrusted JSON).
Shizuku integration uses ProcessBuilder with List<String> arguments (not sh -c),
preventing classic shell injection. User-controlled values pass through
WriteSettingPolicy validation before reaching privileged commands.