This project releases frequently (roughly weekly) and does not backport fixes to older minor versions — a security fix ships in the next release, and the fix is only guaranteed against the latest published version.
| Version | Supported |
|---|---|
| 1.4.x | ✅ |
| < 1.4 | ❌ (upgrade to latest) |
We take security seriously. If you discover a security vulnerability, please follow these steps:
Security vulnerabilities should never be reported via public GitHub issues, as this could put users at risk.
Use GitHub Private Vulnerability Reporting — this opens a private draft security advisory visible only to the maintainer and GitHub, with no public disclosure until a fix is ready. This is the preferred and fastest channel.
Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
| Timeline | Action |
|---|---|
| 24 hours | Acknowledgment of your report |
| 3-5 days | Initial assessment and severity classification |
| 7-14 days | Fix developed and tested |
| 14-30 days | Patch released and security advisory published |
Critical - Immediate attention
- Remote code execution
- Data leaks
- Authentication bypass
High - Fast track (3 days)
- Authorization bypass
- SQL injection
- XSS vulnerabilities
Medium - Standard track (1 week)
- Input validation issues
- Path traversal
- Information disclosure
Low - Regular cycle (1 month)
- Minor information leaks
- DoS (local only)
// ✅ Good
NativeWorker.httpRequest(
url: 'https://api.example.com/data',
)
// ❌ Bad - unencrypted
NativeWorker.httpRequest(
url: 'http://api.example.com/data',
)// ❌ Bad - logs credentials
print('Token: $apiToken');
// ✅ Good - redacted
if (kDebugMode) {
print('Token: <redacted>');
}// ✅ Good - use app directory
final appDir = await getApplicationDocumentsDirectory();
final savePath = path.join(appDir.path, 'file.zip');
NativeWorker.httpDownload(
url: 'https://example.com/file.zip',
savePath: savePath,
)
// ❌ Bad - arbitrary path
NativeWorker.httpDownload(
url: 'https://example.com/file.zip',
savePath: '/tmp/../../etc/passwd', // Path traversal!
)// ✅ Good - use environment variables or secure storage
final apiKey = dotenv.env['API_KEY'];
// ❌ Bad - hardcoded secrets
const apiKey = 'sk_live_1234567890'; // NEVER do this!| ID | Severity | Status | Affected Versions |
|---|---|---|---|
| None known | - | - | - |
| ID | Severity | Fixed In | Description |
|---|---|---|---|
| PR #44 | Medium | 1.3.3 | RemoteTrigger HMAC signature comparison used a non-constant-time equality check, creating a timing side-channel. Fixed with MessageDigest.isEqual (Android) / HMAC.isValidAuthenticationCode (iOS). |
Subscribe to security advisories:
- Watch this repository (Custom → Security alerts)
- Check GitHub Security Advisories
We follow a 90-day disclosure policy:
- Day 0: Vulnerability reported
- Day 1-7: Assessment and fix development
- Day 7-30: Testing and patch release
- Day 30: Security advisory published
- Day 90: Full details disclosed (if not critical)
We recognize security researchers who help make native_workmanager more secure:
- Your name could be here!
Use GitHub Private Vulnerability Reporting for anything security-sensitive — it reaches the maintainer directly and privately. For non-sensitive questions, open a GitHub Discussion or a regular issue.
Last Updated: 2026-07-16