IMAGEHARDER is a security-focused media file hardening project designed to process images, audio, and video files with memory safety guarantees and defense-in-depth security measures. This document outlines our security practices, vulnerability disclosure process, and security commitments.
We provide security updates for the following versions:
| Version | Supported |
|---|---|
| 0.1.x | ✅ |
| < 0.1 | ❌ |
- Memory Safety: Pure Rust implementations eliminate entire classes of vulnerabilities (buffer overflows, use-after-free, double-free)
- Kernel Isolation:
- PID namespaces
- Network namespaces
- Mount namespaces
- Syscall Filtering: Seccomp-BPF whitelists only required syscalls
- Filesystem Restrictions: Landlock LSM limits file access to input files only
- WebAssembly Sandboxing: FFmpeg runs in WASM sandbox with no host access
- Hardware Acceleration Disabled: Prevents GPU-based exploits
- Container Pre-validation: All video containers validated before codec processing
What We Protect Against:
- Malicious media files exploiting codec vulnerabilities
- VM escapes via crafted video files
- CPU desynchronization attacks
- Malware embedded in media metadata (PowerShell in MP3, etc.)
- Buffer overflows in image/audio/video parsers
- Arbitrary code execution via media processing
- Denial of service via resource exhaustion
What We Do NOT Protect Against:
- Social engineering attacks
- Compromised build toolchains (supply chain - see SBOM below)
- Physical access to hardware
- Side-channel attacks (timing, speculative execution)
- Attacks on the host kernel itself
DO NOT open a public GitHub issue for security vulnerabilities.
Instead, please report security issues privately via one of the following methods:
- Email:
security@[YOUR-DOMAIN](PGP key below) - GitHub Security Advisory: Create a private security advisory
-----BEGIN PGP PUBLIC KEY BLOCK-----
[Your PGP public key here]
-----END PGP PUBLIC KEY BLOCK-----
Please provide the following information in your report:
- Description: Clear description of the vulnerability
- Impact: What could an attacker achieve?
- Attack Vector: How would this be exploited?
- Proof of Concept: Steps to reproduce (or PoC code/file)
- Affected Versions: Which versions are vulnerable?
- Suggested Fix: If you have ideas for remediation
We are committed to the following response times:
| Stage | Timeline |
|---|---|
| Initial Response | Within 48 hours |
| Vulnerability Assessment | Within 7 days |
| Fix Development | Within 30 days (critical), 90 days (high) |
| Public Disclosure | 90 days after fix, or coordinated disclosure |
We use the following severity levels based on CVSS v3.1:
| Severity | CVSS Score | Description | Example |
|---|---|---|---|
| Critical | 9.0-10.0 | Remote code execution, VM escape | Crafted video causes arbitrary code execution |
| High | 7.0-8.9 | Privilege escalation, information disclosure | Memory corruption leading to data leak |
| Medium | 4.0-6.9 | Denial of service, authentication bypass | Malformed file crashes service |
| Low | 0.1-3.9 | Minor information leak, edge cases | Verbose error messages leak paths |
- Container Isolation: Always run in containers with read-only root filesystem
- Resource Limits: Set CPU/memory limits (see kubernetes-deployment.yaml)
- Network Policies: Restrict network access (only DNS)
- Seccomp Profile: Apply the provided seccomp-profile.json
- Regular Updates: Apply security patches within 7 days
- Monitoring: Enable Prometheus metrics and configure alerts
- File Quarantine: Isolate suspicious files for forensic analysis
- Dependency Auditing: Run
cargo auditbefore every release - Fuzzing: Run all fuzz targets for 24+ hours before releases
- Static Analysis: Use
cargo clippywith-D warnings - Memory Safety: Prefer pure Rust; avoid
unsafecode - Input Validation: Validate all inputs at boundary (container, then codec)
- Fail Closed: Always fail securely (reject on error)
| Date | Auditor | Scope | Findings | Report |
|---|---|---|---|---|
| 2024-XX-XX | [Auditor] | Full codebase review | TBD | [Link] |
We track all known vulnerabilities in our dependencies:
| CVE ID | Component | Severity | Status | Fixed In |
|---|---|---|---|---|
| None | - | - | - | - |
To check for vulnerabilities in dependencies:
cargo install cargo-audit
cargo auditSecurity updates are released as:
- Patch releases for critical/high severity issues
- Minor releases for medium severity issues
- Regular releases for low severity issues
Subscribe to security announcements:
- Watch this repository for "Releases only"
- GitHub Security Advisories: https://github.com/SWORDIntel/IMAGEHARDER/security/advisories
We provide an SBOM (CycloneDX format) with each release:
cargo install cargo-cyclonedx
cargo cyclonedx --format json > sbom.json- Only audited crates: All dependencies reviewed for security
- Minimal dependencies: Keep dependency tree small
- No C bindings preferred: Pure Rust implementations prioritized
- Pinned versions: Cargo.lock committed to repository
- Regular updates: Dependencies updated quarterly (sooner for CVEs)
Our builds are reproducible. Verify with:
cargo build --release
sha256sum target/release/image_harden_cli
# Compare against published checksumsIn the event of a security incident:
- Detection: Automated alerts via Prometheus/Grafana
- Containment: Isolate affected systems, quarantine files
- Investigation: Analyze logs, metrics, quarantined files
- Remediation: Apply patches, update configurations
- Recovery: Restore services, verify integrity
- Lessons Learned: Post-mortem, update defenses
See PRODUCTION_DEPLOYMENT.md for detailed runbooks.
This project follows security best practices from:
- OWASP Top 10 (2021)
- CWE Top 25 Most Dangerous Software Weaknesses
- NIST Cybersecurity Framework
- CIS Benchmarks (Docker, Kubernetes)
- Design: Threat modeling, security requirements
- Development: Secure coding practices, code review
- Testing: Unit tests, fuzz tests, integration tests
- Deployment: Hardened containers, security monitoring
- Maintenance: Vulnerability scanning, security updates
We run continuous fuzzing via GitHub Actions:
- 12 fuzz targets (images, audio, video)
- 35 minutes of fuzzing per CI run
- Corpus stored in
test-corpus/
Run locally:
cargo install cargo-fuzz
cargo fuzz run fuzz_png -- -max_total_time=3600We welcome responsible security research. If you'd like to perform security testing:
In Scope:
- Parsing of malformed/malicious media files
- Sandbox escapes (namespaces, seccomp, landlock)
- Resource exhaustion attacks
- Memory corruption attempts
Out of Scope:
- Social engineering
- Denial of service (DDoS)
- Physical attacks
- Third-party services
- Security Team: security@[YOUR-DOMAIN]
- Project Lead: [Your Name] - [email]
- Security Advisor: [Advisor Name] - [email] (if applicable)
We recognize security researchers who have responsibly disclosed vulnerabilities:
| Researcher | Date | Vulnerability | Severity |
|---|---|---|---|
| - | - | - | - |
This security policy is inspired by:
Last Updated: 2024-11-07
This security policy is a living document and will be updated as the project evolves.