vtcode-process-hardening
This crate provides pre_main_hardening(), which is designed to be called pre-main() (using #[ctor::ctor]) to perform various process hardening steps, such as:
- disabling core dumps
- disabling ptrace attach on Linux and macOS
- removing dangerous environment variables such as
LD_PRELOADandDYLD_*
Usage
Add to your binary's Cargo.toml:
[]
= "0.2"
= { = "../vtcode-process-hardening" }
In your main.rs:
Security Hardening
Linux/Android
- PR_SET_DUMPABLE: Prevents ptrace attachment and disables core dumps at the process level
- RLIMIT_CORE: Sets core file size limit to 0 for defense in depth
- LD_ removal*: Strips
LD_PRELOADand similar variables that could subvert library loading
macOS
- PT_DENY_ATTACH: Prevents debugger attachment via the ptrace system call
- RLIMIT_CORE: Disables core dumps
- DYLD_ removal*: Removes dynamic linker environment variables that could compromise library loading
BSD (FreeBSD, OpenBSD)
- RLIMIT_CORE: Sets core file size limit to 0
- LD_ removal*: Strips dynamic linker variables
Notes
- This crate calls
unsafelibc functions but validates all return codes and exits cleanly on failure - Environment variable removal uses
std::env::vars_os()to handle non-UTF-8 variable names correctly - On Windows, hardening is a placeholder for future implementation