Research

A Default Linux Audit Rule Can Silently Suppress File-Watch Capture

How a default -a never,task rule can suppress auditd file-watches, how we found it, and how defenders can check.

A Default Linux Audit Rule Can Silently Suppress File-Watch Capture

Update

Updated October 20, 2026, about 12:00 PM PT: removed the Linux distribution name, which could identify the cloud provider; findings unchanged.

Update

Updated 20 October 2026: added a disclosure about a second security agent on the lab host; findings unchanged.

A plain-English, vendor-neutral method note for defenders. Linux's built-in audit subsystem (auditd, configured with auditctl) can be told to watch a file path and log changes to it. A default rule that ships on some systems can quietly stop those watches from ever firing. This note shows how we found that in our own testing and how you can check for it on your hosts. It makes no claim about any commercial EDR product.

What we tested and found (validated, with limitations)

On a Linux lab host, Linux's audit tool shipped with a default rule (-a never,task) that the tool's own manual says makes every new process skip audit rule processing. In an earlier session we added a temporary file-watch on a harmless dummy service unit, ran create/start/stop/disable/restore, and removed the watch in the same session. The host's audit search recorded the rule being added and none of the file actions. In a later session on the same host we removed that default rule, added the same watch on the same path, ran the same actions, and restored the default rule afterward. This time the audit search recorded the rule add and a file-create event on the unit path. The rule list after restore matched the pre-run baseline. This shows that, in our test, removing the default rule restored file-watch capture. It matches the manual's documented failure mode. It does not prove the rule always suppresses watches on every host, and it is not a finding about any commercial EDR product.

A cloud provider's runtime threat-monitoring agent was also installed and running on the Linux lab host during these runs. It may log or act on activity independently of the tools described here. Its effect on these results was not tested.

Citation: the primary auditctl(8) manual describes -a never,task as “DISABLED BY DEFAULT” and states it makes every new process skip audit rule processing.

An unrelated scratch text file left on the host on October 15 sat on the host during both sessions; it was not executed, sat outside the test paths, does not affect the audit-rule restore result, and has since been archived and removed.

Before / after on one host

Remove-and-recapture (single host)

Earlier session (Oct 15) — with -a never,task present above the watch: the audit search recorded the rule add only, and none of the file actions. Zero path-watch hits.

Later session (Oct 20), same host — the default rule removed, the same watch added on the same path, the same create/start/stop/disable/restore run: the audit search recorded the rule add and a file-create (PATH) event on the unit path. After restoring the default rule, auditctl -l matched the pre-run baseline.

A cloud provider's runtime threat-monitoring agent was also installed and running on the Linux lab host during these runs. It may log or act on activity independently of the tools described here. Its effect on these results was not tested.

Rendered terminal output (redacted)

The frames below are rendered terminal output from masked transcripts (not live console captures). Bracketed tokens are redactions.

Rendered terminal output (redacted) — baseline audit rules, including the default never,task rule.
Rendered terminal output (redacted) — baseline audit rules, including the default never,task rule.
Rendered terminal output (redacted) — removing the default never,task rule.
Rendered terminal output (redacted) — removing the default never,task rule.
Rendered terminal output (redacted) — adding the file-watch on the unit path.
Rendered terminal output (redacted) — adding the file-watch on the unit path.
Rendered terminal output (redacted) — audit search now shows the rule add and a PATH create event.
Rendered terminal output (redacted) — audit search now shows the rule add and a PATH create event.
Rendered terminal output (redacted) — default rule restored; rule list matches the baseline.
Rendered terminal output (redacted) — default rule restored; rule list matches the baseline.

How defenders can check their own hosts

List your audit rules and look for a never,task entry above your watches; add a temporary watch on a scratch file with a known key, generate a known write, and search for it; then always remove the temporary watch. If the search shows the rule being added but no event for your write, a default never,task rule is the likely cause.

#!/usr/bin/env bash
# Defender self-check: is a default -a never,task rule suppressing your file-watches?
# Uses a harmless, lab-owned path. Always remove any temporary watch you add.
# 1) List the active audit rules and look for never,task
sudo auditctl -l | grep -n 'never,task' || echo 'no never,task rule listed'
# 2) Add a temporary watch on a scratch file with a known key
TESTKEY=audit_selfcheck
TESTFILE=/tmp/audit-selfcheck.$$
sudo auditctl -w "$TESTFILE" -p wa -k "$TESTKEY"
# 3) Generate a known write, then search for it
echo hello > "$TESTFILE"
sudo ausearch -k "$TESTKEY" --start recent
# 4) ALWAYS remove the temporary watch afterward
sudo auditctl -W "$TESTFILE" -p wa -k "$TESTKEY" 2>/dev/null || sudo auditctl -d always,exit -F path="$TESTFILE" -F perm=wa -k "$TESTKEY" 2>/dev/null
rm -f "$TESTFILE"
# If step 3 shows the CONFIG_CHANGE add_rule but NO PATH event for your write,
# a never,task rule above your watch is the likely cause (see auditctl(8), "DISABLED BY DEFAULT").

Limitations

  • This is a single-host, cross-session result (five days apart), not a controlled A/B inside one session; the auditd package version is not pinned.
  • It does not prove the default rule always suppresses watches, on every host or distribution.
  • A cloud provider's runtime threat-monitoring agent was also installed and running on the Linux lab host during these runs. It may log or act on activity independently of the tools described here. Its effect on these results was not tested.
  • It is a method note about host auditing only, and makes no claim about any commercial EDR product.

Methods and limitations

Host audit (auditd/auditctl) method note; makes no claim about any commercial EDR product.

References

  1. SSS-RC-2026-038 Part 01 Validation memo (VAL-01, claim 038-B)
  2. auditctl(8) manual, 'DISABLED BY DEFAULT'

Want to know if your endpoint defenses still work?

We test them in your environment and give you a plain written answer.