{"id":"CVE-2026-98862","kind":"vulnerability","aliases":["CVE-2026-98862"],"related":[],"title":"Linux kernel audit: use-after-free in audit rule cleanup on directory removal","description":"In the Linux kernel, the following vulnerability has been resolved:\n\naudit: fix exe mark UAF in kill_rules()\n\nkill_rules() removes mixed AUDIT_DIR and AUDIT_EXE rules when an audit\ntree is pruned. It drops entry->rule.exe before removing the rule from\nthe RCU-visible filter lists.\n\nAfter a rule has been installed with AUDIT_ADD_RULE, which requires\nCAP_AUDIT_CONTROL, removing the watched directory can race with another\ntask that is still evaluating the rule. In that case, fsnotify can free\nthe executable mark before the reader reaches audit_mark_compare(),\ncausing a use-after-free.\n\nKASAN reports:\n\n    BUG: KASAN: slab-use-after-free in audit_mark_compare+0x8d/0xa0\n\nUnlink the published rules from the RCU-visible lists and retain them\non tree->rules for cleanup. If any rule has an executable mark, wait for\na single RCU grace period before removing the marks and scheduling the\nentries for freeing. Otherwise, call_rcu() already provides the required\ndeferred freeing without a synchronous wait.","summary":"When a watched audit directory is removed, the kernel can free an executable mark while another task is still evaluating the audit rule, causing a use-after-free. The sources do not say what an attacker gets beyond the memory corruption itself.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["auditd","kernel","linux","other"],"not_affected_if":["no-audit-rules","no-exe-filter"],"how_to_check":"- `uname -r` and compare against the fixed kernel version, which the sources do not name\n- Check whether auditd rules use `-F exe=` combined with directory watches (`auditctl -l`)","fix":"- Update to a Linux kernel release that includes the upstream commit 'audit: fix exe mark UAF in kill_rules()'; the fixed version is unknown from these sources","status":"open","published_at":"2026-10-18T16:17:40+00:00","first_seen_at":"2026-10-23T21:57:17+00:00","triaged_at":"2026-10-25T05:12:52+00:00","updated_at":"2026-10-25T05:12:52+00:00","category":"other","confidence":0.6,"triage":{"at":"2026-10-25T05:12:52Z","model":"claude-haiku-5-5","output":{"fix":"- Update to a Linux kernel release that includes the upstream commit 'audit: fix exe mark UAF in kill_rules()'; the fixed version is unknown from these sources","reach":"local","title":"Linux kernel audit: use-after-free in audit rule cleanup on directory removal","impact":"high","summary":"When a watched audit directory is removed, the kernel can free an executable mark while another task is still evaluating the audit rule, causing a use-after-free. The sources do not say what an attacker gets beyond the memory corruption itself.","category":"other","nicknames":[],"who_cares":["linux","kernel","auditd"],"confidence":0.6,"needs_auth":"yes","worst_case":"Kernel memory corruption via use-after-free; privilege escalation not stated in sources","analyst_note":"Find the fixed kernel version and the upstream commit from the NVD entry and kernel.org stable advisories; confirm whether an unprivileged user can reach it.","how_to_check":"- `uname -r` and compare against the fixed kernel version, which the sources do not name\n- Check whether auditd rules use `-F exe=` combined with directory watches (`auditctl -l`)","needs_analyst":true,"not_affected_if":["no-audit-rules","no-exe-filter"],"who_is_affected":"Systems running the Linux kernel with audit rules that combine directory watches (AUDIT_DIR) and executable filters (AUDIT_EXE), where rules are added via AUDIT_ADD_RULE by a CAP_AUDIT_CONTROL holder. Systems without audit rules of that form are unlikely to be exposed, but the sources do not confirm the exact trigger conditions.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000668,"input_tokens":3602,"output_tokens":616,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'+0':180C '-2026':16A,19A '-98862':17A,20A 'add':123C 'alreadi':227C 'anoth':39B,137C 'attack':60B 'audit':3A,9A,27B,45B,76C,88C,91C,96C,122C,128C,158C,177C 'auditd':21B 'beyond':62B 'bug':169C 'call':225C 'cap':127C 'case':147C 'caus':47B,161C 'cleanup':11A,199C 'compar':160C,179C 'control':129C 'corrupt':65B 'cve':15A,18A 'defer':231C 'dir':89C 'directori':13A,28B,133C 'drop':101C 'entri':102C,221C 'evalu':43B,142C 'exe':78C,92C 'execut':36B,152C,205C 'filter':113C 'fix':77C 'follow':71C 'free':7A,34B,52B,150C,166C,175C,223C,232C 'fsnotifi':148C 'get':61B 'grace':212C 'instal':120C 'kasan':167C,170C 'kernel':2A,22B,32B,69C 'kill':82C,84C 'linux':1A,23B,68C 'list':114C,191C 'mark':37B,79C,153C,159C,178C,206C,217C 'memori':64B 'mix':87C 'otherwis':224C 'period':213C 'provid':228C 'prune':99C 'publish':184C 'race':135C 'rcu':111C,189C,211C,226C 'rcu-vis':110C,188C 'reach':157C 'reader':156C 'remov':14A,30B,86C,105C,130C,215C 'report':168C 'requir':126C,230C 'resolv':75C 'retain':193C 'rule':10A,46B,83C,85C,93C,107C,117C,124C,144C,185C,197C,202C 'rule.exe':103C 'say':57B 'schedul':219C 'singl':210C 'slab':172C 'slab-use-after-fre':171C 'sourc':54B 'still':42B,141C 'synchron':235C 'task':40B,138C 'tree':97C,196C 'uaf':80C 'unlink':182C 'use':5A,50B,164C,173C 'use-after-fre':4A,49B,163C 'visibl':112C,190C 'vulner':72C 'wait':207C,236C 'watch':26B,132C 'without':233C 'x8d/0xa0':181C","nicknames":[],"mitigations":[],"who_affected":"Systems running the Linux kernel with audit rules that combine directory watches (AUDIT_DIR) and executable filters (AUDIT_EXE), where rules are added via AUDIT_ADD_RULE by a CAP_AUDIT_CONTROL holder. Systems without audit rules of that form are unlikely to be exposed, but the sources do not confirm the exact trigger conditions.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-18T16:17:40+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-98862","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98862","severity":null,"published_at":"2026-10-18T16:17:40+00:00","modified_at":"2026-10-21T13:21:50+00:00","first_seen_at":"2026-10-23T21:57:17+00:00","fetched_at":"2026-10-23T22:28:56+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}