| Version | Supported |
|---|---|
| 0.5.x | ✅ |
| < 0.5 | ❌ |
If you discover a security vulnerability in oc-rsync, please report it responsibly:
- Do not open a public GitHub issue for security vulnerabilities
- Email the maintainer directly at: skewers.irises.3b@icloud.com
- Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact assessment
- Any suggested fixes (optional)
You can expect:
- Initial acknowledgment within 48 hours
- Regular updates on the fix progress
- Credit in the security advisory (unless you prefer anonymity)
oc-rsync leverages Rust's memory safety to eliminate entire vulnerability classes:
- No buffer overflows: Rust's bounds checking prevents out-of-bounds memory access
- No use-after-free: Rust's ownership system prevents dangling pointer access
- No uninitialized memory: All memory must be initialized before use
- No data races: Rust's type system prevents concurrent memory access bugs
Protocol-handling crates enforce #![deny(unsafe_code)]:
protocol- Wire format parsingbatch- Batch file formatsignature- File signaturesmatching- Delta generation
The only crates with unsafe code:
engine- Conditional unsafe for ACL support (#![cfg_attr(not(feature = "acl"), deny(unsafe_code))])windows-gnu-eh- Required for Windows FFI (properly documented)
oc-rsync monitors upstream rsync CVEs to verify continued non-applicability. Recent CVEs and our status:
| CVE | Upstream Issue | oc-rsync Status | Reason |
|---|---|---|---|
| CVE-2024-12084 | Heap overflow in checksum parsing | Not vulnerable | Rust Vec handles dynamic sizing |
| CVE-2024-12085 | Uninitialized stack buffer leak | Not vulnerable | Rust requires initialization |
| CVE-2024-12086 | Server leaks client files | Not vulnerable | Strict path validation |
| CVE-2024-12087 | Path traversal via --inc-recursive | Not vulnerable | Path sanitization |
| CVE-2024-12088 | --safe-links bypass | Mitigated | Rust path handling |
| CVE-2024-12747 | Symlink race condition | Mitigated | TOCTOU is OS-level |
- Subscribe to rsync-announce: https://lists.samba.org/mailman/listinfo/rsync-announce
- Monitor NVD: https://nvd.nist.gov/vuln/search?query=rsync
- GitHub Security Advisories: Watch this repository for security advisories
For each new upstream rsync CVE:
- Analyze the root cause (memory corruption, logic error, etc.)
- Check if oc-rsync has equivalent code paths
- Verify Rust's safety guarantees apply
- Document the analysis in this file
- If vulnerable, issue a security advisory and patch
The protocol crate includes cargo-fuzz targets for security-critical parsing:
cd crates/protocol/fuzz
cargo +nightly fuzz run fuzz_varint
cargo +nightly fuzz run fuzz_delta
cargo +nightly fuzz run fuzz_multiplex_frame
cargo +nightly fuzz run fuzz_legacy_greetingSee crates/protocol/fuzz/README.md for detailed fuzzing instructions.
When running oc-rsync --daemon:
- Use chroot: Configure
use chroot = yesin rsyncd.conf - Restrict modules: Only expose necessary paths
- Authentication: Use
auth usersandsecrets filefor access control - Network security: Run behind a firewall, use SSH tunneling for remote access
- Read-only modules: Use
read only = yeswhere possible
- Verify server identity: Use SSH for transport when possible
- Careful with --delete: Ensure you're syncing to the intended destination
- Review exclude patterns: Avoid accidentally transferring sensitive files
Security researchers who have contributed to oc-rsync's security:
- (Your name could be here - report responsibly!)