Elastic Defend 9.5.0 now carries the taint state on Linux kernel module loading events.
I loaded Singularity (the stealthiest open source rootkit I know). On load, it hides from lsmod, /proc/modules, and /sys/module, resets the kernel taint mask to 0, and filters "taint" and its own name out of dmesg, journalctl -k, and klogctl.
Even though the system looked clean, detecting the tainted flag on the loading event already exposed it.
What is even more suspicious? The endpoint recorded this module loading out-of-tree and unsigned. The live host says the mask is 0, and taint is sticky by design, so that needs explaining and is a good hunting reference.
One caveat, because this is not a rule to switch on blind: OE is also what a DKMS build, an out-of-tree GPU driver, or a third-party filesystem module produces. Baseline the modules you load on purpose, then investigate what is left. Enforcing module signatures shrinks it further, since an unsigned module then fails to load.
Rule PR and references in the reply.
#Linux #DetectionEngineering #ThreatDetection #DFIR #Rootkits