{"id":"CVE-2026-99096","kind":"vulnerability","aliases":["CVE-2026-99096"],"related":[],"title":"Linux kernel: disabled io_uring rings skip task register restrictions","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nio_uring/register: don't exempt disabled rings from task restrictions\n\nA ring created with IORING_SETUP_R_DISABLED is exempt from its register\nrestrictions until it is enabled. This lets the creator register the\nrestrictions and then enable the ring with IORING_REGISTER_ENABLE_RINGS,\nwhether or not that opcode is in the allowed set.\n\nSince commit ed82f35b926b (\"io_uring: allow registration of per-task\nrestrictions\"), a ring also inherits restrictions from the task that\ncreates it, and the same exemption applies to those. A task whose\nregister opcodes are restricted can therefore create a disabled ring,\nissue any register opcode on it, and then enable it.\n\nMark rings whose restrictions were inherited from the task, and keep\nchecking register opcodes for them while the ring is disabled. Enabling\nsuch a ring now requires IORING_REGISTER_ENABLE_RINGS to be in the\ntask's allowed set. Per-ring restrictions registered on a disabled ring\nwork as before.\n\n[axboe: amend with inheritance flag fixup]","summary":"A task restricted from certain io_uring register opcodes can create a disabled ring, issue any register opcode on it, then enable it, bypassing the restriction. The fix makes disabled rings that inherit task restrictions keep enforcing them.","severity":"low","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["io_uring","linux-kernel","runtime","self-hosted"],"not_affected_if":["io_uring-disabled","no-task-restrictions"],"how_to_check":"- unknown","fix":"- Update the Linux kernel to a release containing the io_uring/register fix (commit referenced in the NVD entry; exact fixed version unknown)","status":"open","published_at":"2026-10-26T15:16:48+00:00","first_seen_at":"2026-10-26T16:02:26+00:00","triaged_at":"2026-10-26T16:04:04+00:00","updated_at":"2026-10-26T16:04:04+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-26T16:04:04Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Linux kernel to a release containing the io_uring/register fix (commit referenced in the NVD entry; exact fixed version unknown)","reach":"local","title":"Linux kernel: disabled io_uring rings skip task register restrictions","impact":"medium","summary":"A task restricted from certain io_uring register opcodes can create a disabled ring, issue any register opcode on it, then enable it, bypassing the restriction. The fix makes disabled rings that inherit task restrictions keep enforcing them.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","io_uring","self-hosted"],"confidence":0.6,"needs_auth":"yes","worst_case":"restricted task bypasses io_uring register opcode limits locally","analyst_note":"Confirm affected kernel version range and fixed release from the NVD entry or kernel stable commit referenced there.","how_to_check":"- unknown","needs_analyst":true,"not_affected_if":["io_uring-disabled","no-task-restrictions"],"who_is_affected":"Systems running a Linux kernel with io_uring, where a process has per-task io_uring register restrictions applied (for example sandboxed or container workloads that restrict io_uring opcodes). Hosts that do not restrict io_uring register opcodes are not meaningfully exposed by this flaw. The sources do not say which kernel versions are affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000617,"input_tokens":3595,"output_tokens":515,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-99096':13A,16A 'allow':126C,133C,218C 'also':142C 'amend':233C 'appli':155C 'axbo':232C 'bypass':49B 'certain':30B 'check':192C 'commit':129C 'creat':36B,85C,149C,167C 'creator':104C 'cve':11A,14A 'disabl':3A,38B,55B,78C,90C,169C,201C,227C 'ed82f35b926b':130C 'enabl':47B,100C,110C,116C,179C,202C,210C 'enforc':62B 'exempt':77C,92C,154C 'fix':53B 'fixup':237C 'flag':236C 'follow':68C 'host':25B 'inherit':58B,143C,186C,235C 'io':4A,17B,31B,73C,131C 'ior':87C,114C,208C 'issu':40B,171C 'keep':61B,191C 'kernel':2A,21B,66C 'let':102C 'linux':1A,20B,65C 'linux-kernel':19B 'make':54B 'mark':181C 'opcod':34B,43B,122C,162C,174C,194C 'per':137C,221C 'per-r':220C 'per-task':136C 'r':89C 'regist':9A,33B,42B,95C,105C,115C,161C,173C,193C,209C,224C 'registr':134C 'requir':207C 'resolv':72C 'restrict':10A,28B,51B,60B,82C,96C,107C,139C,144C,164C,184C,223C 'ring':6A,39B,56B,79C,84C,112C,117C,141C,170C,182C,199C,205C,211C,222C,228C 'runtim':22B 'self':24B 'self-host':23B 'set':127C,219C 'setup':88C 'sinc':128C 'skip':7A 'task':8A,27B,59B,81C,138C,147C,159C,189C,216C 'therefor':166C 'ure':5A,18B,32B,132C 'uring/register':74C 'vulner':69C 'whether':118C 'whose':160C,183C 'work':229C","nicknames":[],"mitigations":[],"who_affected":"Systems running a Linux kernel with io_uring, where a process has per-task io_uring register restrictions applied (for example sandboxed or container workloads that restrict io_uring opcodes). Hosts that do not restrict io_uring register opcodes are not meaningfully exposed by this flaw. The sources do not say which kernel versions are affected.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-26T15:16:48+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-99096","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99096","severity":null,"published_at":"2026-10-26T15:16:48+00:00","modified_at":"2026-10-26T15:16:48+00:00","first_seen_at":"2026-10-26T16:02:26+00:00","fetched_at":"2026-10-26T16:02:26+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"}