{"id":"CVE-2026-98540","kind":"vulnerability","aliases":["CVE-2026-98540"],"related":[],"title":"Linux kernel fprobe: unused tracing slots can run exit handlers twice","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nfprobe: Terminate the fgraph_data list when the reservation is not filled\n\nfprobe_fgraph_entry() reserves shadow stack space for every fprobe with\nan exit handler, but only fills it for those whose entry handler returns\n0. fgraph_reserve_data() does not clear the area, so fprobe_return()\nparses the unused tail as headers left over from an earlier call, and an\nexit handler can run twice or despite its entry handler asking to skip\nit.\n\nWrite a zero word after the last entry to terminate the walk. A zeroed\nslot does not decode to a NULL fprobe on the arches that encode the\nheader into one unsigned long, since arch_decode_fprobe_header_fp() ORs\nin FPROBE_HEADER_MSB_PATTERN, so make read_fprobe_header() return NULL\nfor a zeroed slot.","summary":"In the Linux kernel's fprobe tracing code, the return path can read leftover data from an unused slot, so an exit handler may run twice or run after its entry handler asked to skip it. The sources do not describe a direct way for an attacker to gain code execution or read data.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["infrastructure","linux-kernel","self-hosted"],"not_affected_if":["default-config"],"how_to_check":"- unknown","fix":"- Move to a Linux kernel release that includes the upstream fprobe fix (the commit that terminates the fgraph_data list); the sources do not name the fixed version.","status":"open","published_at":"2026-10-18T16:17:05+00:00","first_seen_at":"2026-10-23T21:57:15+00:00","triaged_at":"2026-10-25T05:23:41+00:00","updated_at":"2026-10-25T05:23:41+00:00","category":"infrastructure","confidence":0.4,"triage":{"at":"2026-10-25T05:23:41Z","model":"claude-haiku-5-5","output":{"fix":"- Move to a Linux kernel release that includes the upstream fprobe fix (the commit that terminates the fgraph_data list); the sources do not name the fixed version.","reach":"local","title":"Linux kernel fprobe: unused tracing slots can run exit handlers twice","impact":"low","summary":"In the Linux kernel's fprobe tracing code, the return path can read leftover data from an unused slot, so an exit handler may run twice or run after its entry handler asked to skip it. The sources do not describe a direct way for an attacker to gain code execution or read data.","category":"infrastructure","nicknames":[],"who_cares":["linux-kernel","self-hosted"],"confidence":0.4,"needs_auth":"unknown","worst_case":"unknown; the sources describe handler misfires, not data theft or code execution","analyst_note":"Find the fixed kernel versions and the upstream commit for the fprobe fgraph_data termination fix, and check whether any security impact beyond handler misfires is stated.","how_to_check":"- unknown","needs_analyst":true,"not_affected_if":["default-config"],"who_is_affected":"Systems running a Linux kernel build that includes the fprobe and function graph tracing code with the affected fprobe exit handlers. Exposure depends on whether fprobe tracing is used on the machine; the sources do not say who can trigger it. Teams on unaffected kernel versions or without fprobe usage can skip it.","user_interaction":"unknown","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000618,"input_tokens":3518,"output_tokens":533,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-98540':14A,17A '0':125C 'arch':189C,199C 'area':133C 'ask':57B,161C 'attack':71B 'call':148C 'clear':131C 'code':32B,74B 'cve':12A,15A 'data':39B,78B,93C,128C 'decod':182C,200C 'describ':65B 'despit':157C 'direct':67B 'earlier':147C 'encod':191C 'entri':55B,103C,122C,159C,172C 'everi':109C 'execut':75B 'exit':9A,46B,113C,151C 'fgraph':92C,102C,126C 'fill':100C,117C 'follow':84C 'fp':203C 'fprobe':3A,30B,89C,101C,110C,135C,186C,201C,206C,213C 'gain':73B 'handler':10A,47B,56B,114C,123C,152C,160C 'header':142C,193C,202C,207C,214C 'host':24B 'infrastructur':18B 'kernel':2A,21B,28B,82C 'last':171C 'left':143C 'leftov':38B 'linux':1A,20B,27B,81C 'linux-kernel':19B 'list':94C 'long':197C 'make':211C 'may':48B 'msb':208C 'null':185C,216C 'one':195C 'or':204C 'pars':137C 'path':35B 'pattern':209C 'read':37B,77B,212C 'reserv':97C,104C,127C 'resolv':88C 'return':34B,124C,136C,215C 'run':8A,49B,52B,154C 'self':23B 'self-host':22B 'shadow':105C 'sinc':198C 'skip':59B,163C 'slot':6A,43B,179C,220C 'sourc':62B 'space':107C 'stack':106C 'tail':140C 'termin':90C,174C 'trace':5A,31B 'twice':11A,50B,155C 'unsign':196C 'unus':4A,42B,139C 'vulner':85C 'walk':176C 'way':68B 'whose':121C 'word':168C 'write':165C 'zero':167C,178C,219C","nicknames":[],"mitigations":[],"who_affected":"Systems running a Linux kernel build that includes the fprobe and function graph tracing code with the affected fprobe exit handlers. Exposure depends on whether fprobe tracing is used on the machine; the sources do not say who can trigger it. Teams on unaffected kernel versions or without fprobe usage can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-18T16:17:05+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-98540","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98540","severity":null,"published_at":"2026-10-18T16:17:05+00:00","modified_at":"2026-10-19T10:19:09+00:00","first_seen_at":"2026-10-23T21:57:15+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"}