{"id":"CVE-2026-98628","kind":"vulnerability","aliases":["CVE-2026-98628"],"related":[],"title":"Linux kernel BPF: slow program rewrites could not be interrupted by SIGKILL","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Make post-verification instruction rewrites killable\n\nAfter do_check() returns, the verifier runs several instruction rewrite\npasses. Some of them patch or remove one instruction at a time. Each\noperation moves the remaining instruction and auxiliary-data arrays and\nadjusts all branch offsets, making the overall work quadratic in the\nprogram length.\n\nA privileged loader can submit 131072 unconditional jumps by zero followed\nby a valid return. Verification finishes quickly, but bpf_opt_remove_nops()\nthen spends a long time removing each jump separately. Since this\npost-verification work neither checks for signals nor reschedules, a pending\nSIGKILL cannot terminate the task until the rewrite finishes.\n\nMake bpf_patch_insn_data() and verifier_remove_insns() common cancellation\nand rescheduling points. These helpers run from BPF_PROG_LOAD process\ncontext, and bpf_patch_insn_data() can already sleep while reallocating\nauxiliary data.\n\nReport interrupted constant blinding as -EINTR and propagate it through\nboth JIT paths, including kernels that permit interpreter fallback.\nOther blinding failures retain the existing fallback behavior.\n\nThis does not reduce the quadratic cost of the rewrite passes, but it makes\nthe work preemptible and allows a killed loader to be torn down promptly.","summary":"A privileged loader can submit a BPF program with many jumps that makes verifier rewrite passes run for a long time. The kernel did not check for pending signals during these passes, so a killed loader could not be torn down promptly.","severity":"low","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["bpf","linux-kernel","runtime"],"not_affected_if":["bpf-disabled","unprivileged-bpf-disabled"],"how_to_check":"- unknown","fix":"- unknown","status":"open","published_at":"2026-10-18T16:17:15+00:00","first_seen_at":"2026-10-23T21:57:16+00:00","triaged_at":"2026-10-25T05:21:07+00:00","updated_at":"2026-10-25T05:21:07+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-25T05:21:07Z","model":"claude-haiku-5-5","output":{"fix":"- unknown","reach":"local","title":"Linux kernel BPF: slow program rewrites could not be interrupted by SIGKILL","impact":"low","summary":"A privileged loader can submit a BPF program with many jumps that makes verifier rewrite passes run for a long time. The kernel did not check for pending signals during these passes, so a killed loader could not be torn down promptly.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","bpf"],"confidence":0.6,"needs_auth":"yes","worst_case":"A privileged loader stalls the kernel task for a long period","analyst_note":"Check the kernel.org stable commits for affected and fixed kernel versions; the NVD entry gives no ranges.","how_to_check":"- unknown","needs_analyst":true,"not_affected_if":["bpf-disabled","unprivileged-bpf-disabled"],"who_is_affected":"Affects Linux kernels with BPF enabled where the loader must already have privileges to call BPF_PROG_LOAD. Systems where only trusted root processes load BPF programs face a denial-of-service risk only from those processes. The sources do not name affected kernel versions.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"low"},"cost_usd":0.00059,"input_tokens":3685,"output_tokens":444,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-98628':15A,18A '131072':136C 'adjust':118C 'allow':266C 'alreadi':215C 'array':116C 'auxiliari':114C,219C 'auxiliary-data':113C 'behavior':247C 'blind':224C,241C 'bpf':3A,19B,30B,76C,150C,187C,204C,210C 'branch':120C 'cancel':196C 'cannot':178C 'check':49B,86C,170C 'common':195C 'constant':223C 'context':208C 'cost':254C 'could':7A,60B 'cve':13A,16A 'data':115C,190C,213C,220C 'eintr':226C 'exist':245C 'failur':242C 'fallback':239C,246C 'finish':147C,185C 'follow':71C,141C 'helper':201C 'includ':234C 'insn':189C,194C,212C 'instruct':81C,92C,102C,111C 'interpret':238C 'interrupt':10A,222C 'jit':232C 'jump':34B,138C,161C 'kernel':2A,22B,46B,69C,235C 'kill':58B,268C 'killabl':83C 'length':130C 'linux':1A,21B,68C 'linux-kernel':20B 'load':206C 'loader':26B,59B,133C,269C 'long':43B,157C 'make':36B,77C,122C,186C,261C 'mani':33B 'move':108C 'neither':169C 'nop':153C 'offset':121C 'one':101C 'oper':107C 'opt':151C 'overal':124C 'pass':39B,55B,94C,258C 'patch':98C,188C,211C 'path':233C 'pend':51B,176C 'permit':237C 'point':199C 'post':79C,166C 'post-verif':78C,165C 'preemptibl':264C 'privileg':25B,132C 'process':207C 'prog':205C 'program':5A,31B,129C 'prompt':65B,274C 'propag':228C 'quadrat':126C,253C 'quick':148C 'realloc':218C 'reduc':251C 'remain':110C 'remov':100C,152C,159C,193C 'report':221C 'reschedul':174C,198C 'resolv':75C 'retain':243C 'return':87C,145C 'rewrit':6A,38B,82C,93C,184C,257C 'run':40B,90C,202C 'runtim':23B 'separ':162C 'sever':91C 'sigkil':12A,177C 'signal':52B,172C 'sinc':163C 'sleep':216C 'slow':4A 'spend':155C 'submit':28B,135C 'task':181C 'termin':179C 'time':44B,105C,158C 'torn':63B,272C 'uncondit':137C 'valid':144C 'verif':80C,146C,167C 'verifi':37B,89C,192C 'vulner':72C 'work':125C,168C,263C 'zero':140C","nicknames":[],"mitigations":[],"who_affected":"Affects Linux kernels with BPF enabled where the loader must already have privileges to call BPF_PROG_LOAD. Systems where only trusted root processes load BPF programs face a denial-of-service risk only from those processes. The sources do not name affected kernel versions.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-18T16:17:15+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-98628","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98628","severity":null,"published_at":"2026-10-18T16:17:15+00:00","modified_at":"2026-10-19T10:19:27+00:00","first_seen_at":"2026-10-23T21:57:16+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"}