{"success":true,"data":{"threats":[{"id":"5300c9e4-acb8-48ba-b1d5-072ff3ade240","slug":"cve-2026-98163","externalId":"CVE-2026-98163","source":"NVD","sourceType":"cve-db","type":"vulnerability","title":"CVE-2026-98163 — In the Linux kernel, the following vulnerability has been resolved:\n\ncgroup: Avoid iteration of dying tasks with zero refcount\n\nThe commit 260fbcb9…","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ncgroup: Avoid iteration of dying tasks with zero refcount\n\nThe commit 260fbcb92bbea (\"cgroup: Move dying_tasks cleanup from\ncgroup_task_release() to cgroup_task_free()\") extended the lifetime of\ntasks on the dying_tasks list.\nThe iterators have provision to go through dying_tasks because of\ndying threadgroup leaders or explicit CSS_TASK_ITER_WITH_DEAD, however,\nit was expected that such tasks can obtain a new reference (that is\npossible before cgroup_task_release()/put_task_struct_rcu_user()).\nThe tasks after cgroup_task_release() and before cgroup_task_free()\nare subject to race when they may or may not have ->usage count > 0.\n\nThe race window is between css_task_iter_next() invocations\nwhen css_set_lock is released and we may arrive at a new ->task_pos.\nThe iterator should not attempt to resurrect tasks whose ->usage count\ndropped to zero. (When that happens, __put_task_struct_rcu_cb() is\nalready imminent and the returned task_struct would could be used\nafter free.)\n\nAs for the fix, we cannot simply check the signal->live count of a task\non the dying list because that won't distinguish regular zombies waiting\nto be reaped from RCU remnant tasks that are going to be free'd.\nTherefore add an extra check to rule out ->usage==0 tasks from any\niteration.\n\nThe repeat: loop in css_task_iter_advance() doesn't consider ->usage\ncount, so add a new loop to css_task_iter_next() to skip de-used tasks\non the dying_list.\n\nRough illustration of the possible race\n\n  R (reader of cgroup.procs)         T (thread)                       L (group leader)\n  ---------------------------------  -------------------------------- --------------------------------\n                                                                      L exits, signal->live > 0\n                                                                      cgroup_task_dead(L)\n                                                                        css_set_skip_task_iters() // skips only cset->tasks\n                                                                        list_add_tail(&L->cg_list, &cset->dying_tasks)\n  css_task_iter_next()\n    take css_set_lock\n    css_task_iter_advance()\n      leader && signal->live != 0\n      => it->task_pos = &L->cg_list\n    release css_set_lock\n                                     T exits\n                                     --signal->live == 0\n\t\t\t\t     cgroup_task_dead(T) // css_set_lock\n                                     release_task(T)\n                                       cgroup_task_release(T)\n                                       release_task(L) // zap_leader\n                                         cgroup_task_release(L)\n                                         put_task_struct_rcu_user(L)\n                                         ...RCU...\n                                         put_task_struct(L)\n                                           L->usage = 0\n                                           /* L still on dying_tasks */\n                                           ...RCU...\n                                           __put_task_struct(L)\n  css_task_iter_next() // another iteration\n    take css_set_lock\n    it->task_pos = &L->cg_list\n    get_task_struct(L)\n      => addition on 0\n    drop css_set_lock\n                                           cgroup_task_free(L)\n                                             css_set_skip_task_iters() // dying skip comes too late\n                                           free_task(L)\n  cgroup_procs_show()\n    task_pid_vnr(L)","cveId":"CVE-2026-98163","cvssScore":7,"cvssVector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H","severity":"high","vendor":"linux","product":"linux kernel","affectedVersions":[">= 6.19, < 7.2.8","7.3"],"cwes":["CWE-362","CWE-416"],"tags":["nvd","status:received","status:awaiting-analysis","status:analyzed","status:modified"],"relatedCves":[],"titleFingerprint":null,"countryCodes":[],"knownExploited":false,"patchAvailable":true,"patchLinks":["https://git.kernel.org/stable/c/057dac23d329d5c5ed62352f2659a39fd46c6d4a","https://git.kernel.org/stable/c/828938118d6c2bb711301748c3e39e4bed6a62f5"],"references":[{"url":"https://git.kernel.org/stable/c/057dac23d329d5c5ed62352f2659a39fd46c6d4a","type":"patch","title":"Patch"},{"url":"https://git.kernel.org/stable/c/828938118d6c2bb711301748c3e39e4bed6a62f5","type":"patch","title":"Patch"}],"epssScore":0.00105,"epssPercentile":0.01013,"nucleiTemplatePath":null,"nucleiSeverity":null,"enrichment":null,"publishedAt":"2026-09-26T09:16:38.303Z","addedAt":"2026-09-26T09:50:37.559Z","updatedAt":"2026-10-07T08:39:32.539Z","epssUpdatedAt":"2026-10-08T12:00:21.000Z","nucleiUpdatedAt":null,"links":[{"label":"NVD","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98163","note":"ingested from NVD"},{"label":"CVE Program","url":"https://www.cve.org/CVERecord?id=CVE-2026-98163","note":"authoritative record"}],"raw":{"id":"CVE-2026-98163","cveTags":[],"metrics":{"cvssMetricV31":[{"type":"Secondary","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","cvssData":{"scope":"UNCHANGED","version":"3.1","baseScore":7.8,"attackVector":"LOCAL","baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"LOW","confidentialityImpact":"HIGH"},"impactScore":5.9,"exploitabilityScore":1.8},{"type":"Primary","source":"nvd@nist.gov","cvssData":{"scope":"UNCHANGED","version":"3.1","baseScore":7,"attackVector":"LOCAL","baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"HIGH","availabilityImpact":"HIGH","privilegesRequired":"LOW","confidentialityImpact":"HIGH"},"impactScore":5.9,"exploitabilityScore":1}]},"affected":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","affectedData":[{"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","product":"Linux","versions":[{"status":"affected","version":"260fbcb92bbeacfcd050410fdc2d24ab15044400","lessThan":"828938118d6c2bb711301748c3e39e4bed6a62f5","versionType":"git"},{"status":"affected","version":"260fbcb92bbeacfcd050410fdc2d24ab15044400","lessThan":"057dac23d329d5c5ed62352f2659a39fd46c6d4a","versionType":"git"}],"programFiles":["kernel/cgroup/cgroup.c"],"defaultStatus":"unaffected"},{"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","product":"Linux","versions":[{"status":"affected","version":"6.19"},{"status":"unaffected","version":"0","lessThan":"6.19","versionType":"semver"},{"status":"unaffected","version":"7.2.8","versionType":"semver","lessThanOrEqual":"7.2.*"},{"status":"unaffected","version":"7.3-rc4","versionType":"original_commit_for_fix","lessThanOrEqual":"*"}],"programFiles":["kernel/cgroup/cgroup.c"],"defaultStatus":"affected"}]}],"published":"2026-09-26T09:16:38.303","references":[{"url":"https://git.kernel.org/stable/c/057dac23d329d5c5ed62352f2659a39fd46c6d4a","tags":["Patch"],"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/828938118d6c2bb711301748c3e39e4bed6a62f5","tags":["Patch"],"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"}],"vulnStatus":"Modified","weaknesses":[{"type":"Primary","source":"nvd@nist.gov","description":[{"lang":"en","value":"CWE-362"},{"lang":"en","value":"CWE-416"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ncgroup: Avoid iteration of dying tasks with zero refcount\n\nThe commit 260fbcb92bbea (\"cgroup: Move dying_tasks cleanup from\ncgroup_task_release() to cgroup_task_free()\") extended the lifetime of\ntasks on the dying_tasks list.\nThe iterators have provision to go through dying_tasks because of\ndying threadgroup leaders or explicit CSS_TASK_ITER_WITH_DEAD, however,\nit was expected that such tasks can obtain a new reference (that is\npossible before cgroup_task_release()/put_task_struct_rcu_user()).\nThe tasks after cgroup_task_release() and before cgroup_task_free()\nare subject to race when they may or may not have ->usage count > 0.\n\nThe race window is between css_task_iter_next() invocations\nwhen css_set_lock is released and we may arrive at a new ->task_pos.\nThe iterator should not attempt to resurrect tasks whose ->usage count\ndropped to zero. (When that happens, __put_task_struct_rcu_cb() is\nalready imminent and the returned task_struct would could be used\nafter free.)\n\nAs for the fix, we cannot simply check the signal->live count of a task\non the dying list because that won't distinguish regular zombies waiting\nto be reaped from RCU remnant tasks that are going to be free'd.\nTherefore add an extra check to rule out ->usage==0 tasks from any\niteration.\n\nThe repeat: loop in css_task_iter_advance() doesn't consider ->usage\ncount, so add a new loop to css_task_iter_next() to skip de-used tasks\non the dying_list.\n\nRough illustration of the possible race\n\n  R (reader of cgroup.procs)         T (thread)                       L (group leader)\n  ---------------------------------  -------------------------------- --------------------------------\n                                                                      L exits, signal->live > 0\n                                                                      cgroup_task_dead(L)\n                                                                        css_set_skip_task_iters() // skips only cset->tasks\n                                                                        list_add_tail(&L->cg_list, &cset->dying_tasks)\n  css_task_iter_next()\n    take css_set_lock\n    css_task_iter_advance()\n      leader && signal->live != 0\n      => it->task_pos = &L->cg_list\n    release css_set_lock\n                                     T exits\n                                     --signal->live == 0\n\t\t\t\t     cgroup_task_dead(T) // css_set_lock\n                                     release_task(T)\n                                       cgroup_task_release(T)\n                                       release_task(L) // zap_leader\n                                         cgroup_task_release(L)\n                                         put_task_struct_rcu_user(L)\n                                         ...RCU...\n                                         put_task_struct(L)\n                                           L->usage = 0\n                                           /* L still on dying_tasks */\n                                           ...RCU...\n                                           __put_task_struct(L)\n  css_task_iter_next() // another iteration\n    take css_set_lock\n    it->task_pos = &L->cg_list\n    get_task_struct(L)\n      => addition on 0\n    drop css_set_lock\n                                           cgroup_task_free(L)\n                                             css_set_skip_task_iters() // dying skip comes too late\n                                           free_task(L)\n  cgroup_procs_show()\n    task_pid_vnr(L)"}],"lastModified":"2026-10-07T07:17:02.973","configurations":[{"nodes":[{"negate":false,"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","vulnerable":true,"matchCriteriaId":"03F96438-F355-42FE-99A2-E7C298C7580F","versionEndExcluding":"7.2.8","versionStartIncluding":"6.19"},{"criteria":"cpe:2.3:o:linux:linux_kernel:7.3:rc1:*:*:*:*:*:*","vulnerable":true,"matchCriteriaId":"11E35E1B-5DB4-4AB9-9706-CD73B799EADF"},{"criteria":"cpe:2.3:o:linux:linux_kernel:7.3:rc2:*:*:*:*:*:*","vulnerable":true,"matchCriteriaId":"14FD7B9A-4946-4511-8E63-6E13870CD4A8"},{"criteria":"cpe:2.3:o:linux:linux_kernel:7.3:rc3:*:*:*:*:*:*","vulnerable":true,"matchCriteriaId":"F06EDE17-AD0F-4C81-AF8C-D86B6AF0F622"}],"operator":"OR"}]}],"sourceIdentifier":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"}}],"pagination":{"page":1,"limit":20,"total":1,"totalPages":1,"hasNext":false,"hasPrev":false}},"meta":{"apiVersion":"v1","requestedAt":"2026-10-09T00:27:56.856Z","durationMs":11,"filters":{"search":null,"severity":[],"type":[],"country":[],"tag":[],"cwe":[],"vendor":null,"product":null,"cve":"CVE-2026-98163","source":[],"days":null,"publishedAfter":null,"publishedBefore":null,"minCvss":null,"maxCvss":null,"minEpss":null,"knownExploited":null,"hasPatch":null,"hasNucleiTemplate":null},"sort":"newest","unknownParams":["include"],"warnings":[]}}