Hardlink creation protection is disabled
What this means
fs.protected_hardlinks is 0 — any user can create a hardlink to a file they don't own (e.g. a setuid binary or a file another process will later run as root), a classic TOCTOU/race primitive for local privilege escalation.
How to fix it
Set fs.protected_hardlinks=1 via /etc/sysctl.d/ and run sysctl --system.
Check it yourself
Run a scan and look for BLWK-KERNEL-010 in the results:
sh
bulwark scanInstalled the standalone CLI package instead of the app? The command is bulwarkctl.
How Bulwark decides
Bulwark reads sysctl_kernel and reports this check when:
text
protected_hardlinks == 0If a value can't be read, Bulwark reports the check as undetermined rather than passing it. View the rule source.
References
- CIS Benchmark 1.5.7
- MITRE ATT&CK T1068
Related checks
- Cron entry runs a downloader piped to a shell ·
BLWK-ACCT-001 - Password maximum age is excessively long ·
BLWK-ACCT-002 - Password minimum age is zero ·
BLWK-ACCT-003 - Password hashing rounds are not explicitly configured ·
BLWK-ACCT-004 - Default UMASK is not explicitly configured ·
BLWK-ACCT-005 - A sensitive system file is world-writable ·
BLWK-FS-001