{"api_version":"1","generated_at":"2026-11-12T20:29:02+00:00","cve":"CVE-2026-99226","urls":{"html":"https://cve.report/CVE-2026-99226","api":"https://cve.report/api/cve/CVE-2026-99226.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-99226","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-99226"},"summary":{"title":"keys: Avoid the owner account dereference in named keyring lookup","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nkeys: Avoid the owner account dereference in named keyring lookup\n\nNamed keyring lookup must keep the storage containing the owner UID\nalive through the namespace mapping check.  find_keyring_by_name()\nreads keyring->user->uid under keyring_name_lock, but that lock protects\nthe keyring's name entry and allocation, not its separate key_user.\n\nA named session-keyring join can overlap a privileged KEYCTL_CHOWN on\nanother CPU.  If the keyring holds the last reference to its old dynamic\nkey_user and the ownership transfer succeeds, the following ordering is\npossible:\n\n    Named join                         Chown\n    find_keyring_by_name()              keyctl_chown_key()\n      read_lock(keyring_name_lock)       down_write(key->sem)\n      load old keyring->user\n                                         replace key->user and key->uid\n                                         up_write(key->sem)\n                                         key_put(key)\n                                         key_user_put(old user): free\n      read old user->uid\n      read_unlock(keyring_name_lock)\n\nChown neither takes keyring_name_lock nor key_session_mutex, so it can\nfree the old account between the pointer load and the UID read.  The\nlookup then reads freed memory even though the keyring itself is alive.\n\nUse keyring->uid for the mapping check.  key_alloc() initializes this\ninline owner UID and keyctl_chown_key() updates it on chown.\nThe existing name lock keeps its containing keyring allocated throughout\nthe check, so lookup no longer depends on the account's lifetime.  This\nalso matches the owner UID used by the permission check.\n\nKASAN report as below:\n\n    BUG: KASAN: slab-use-after-free in find_keyring_by_name+0x577/0x5d0\n    Read of size 4 at addr ffff8881128ae2ec by task keycase/500","state":"PUBLISHED","assigner":"Linux","published_at":"2026-11-02 16:17:47","updated_at":"2026-11-03 20:18:28"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/c9664f780f861dd9f11f120c7a03ed0993671ebb","name":"https://git.kernel.org/stable/c/c9664f780f861dd9f11f120c7a03ed0993671ebb","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/aa03c8fb4334f14d218020f7431debf2b7766865","name":"https://git.kernel.org/stable/c/aa03c8fb4334f14d218020f7431debf2b7766865","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/6763329f673d261641c79212abf773af77b2c922","name":"https://git.kernel.org/stable/c/6763329f673d261641c79212abf773af77b2c922","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/5c6a9512887a6cc694d594d9c0b57c0841d215b5","name":"https://git.kernel.org/stable/c/5c6a9512887a6cc694d594d9c0b57c0841d215b5","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/77249d4b1bb5ad43552b7023c4a0978937aa7a56","name":"https://git.kernel.org/stable/c/77249d4b1bb5ad43552b7023c4a0978937aa7a56","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/40b12b93ae4ab9e22c3d571e9b09fd08afad53f6","name":"https://git.kernel.org/stable/c/40b12b93ae4ab9e22c3d571e9b09fd08afad53f6","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/0b865fa477d94ac96c26848aab1fd176397de3f6","name":"https://git.kernel.org/stable/c/0b865fa477d94ac96c26848aab1fd176397de3f6","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/51409aaa01f8602552c336009fd22b226b0cdf1d","name":"https://git.kernel.org/stable/c/51409aaa01f8602552c336009fd22b226b0cdf1d","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/b0830a26e2c3008a6e21863126b4a0e68b2761cd","name":"https://git.kernel.org/stable/c/b0830a26e2c3008a6e21863126b4a0e68b2761cd","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-99226","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99226","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a 77249d4b1bb5ad43552b7023c4a0978937aa7a56 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a 0b865fa477d94ac96c26848aab1fd176397de3f6 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a 6763329f673d261641c79212abf773af77b2c922 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a aa03c8fb4334f14d218020f7431debf2b7766865 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a c9664f780f861dd9f11f120c7a03ed0993671ebb git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a b0830a26e2c3008a6e21863126b4a0e68b2761cd git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a 5c6a9512887a6cc694d594d9c0b57c0841d215b5 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a 40b12b93ae4ab9e22c3d571e9b09fd08afad53f6 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2ea190d0a006ce5218baa6e798512652446a605a 51409aaa01f8602552c336009fd22b226b0cdf1d git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2.6.30","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 2.6.30 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.273 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.224 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.191 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.161 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.115 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.60 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.14 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3.1 7.3.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.4-rc1 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"99226","cve":"CVE-2026-99226","epss":"0.001650000","percentile":"0.057350000","score_date":"2026-11-03","updated_at":"2026-11-04 00:14:34"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["security/keys/keyring.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"77249d4b1bb5ad43552b7023c4a0978937aa7a56","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"},{"lessThan":"0b865fa477d94ac96c26848aab1fd176397de3f6","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"},{"lessThan":"6763329f673d261641c79212abf773af77b2c922","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"},{"lessThan":"aa03c8fb4334f14d218020f7431debf2b7766865","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"},{"lessThan":"c9664f780f861dd9f11f120c7a03ed0993671ebb","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"},{"lessThan":"b0830a26e2c3008a6e21863126b4a0e68b2761cd","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"},{"lessThan":"5c6a9512887a6cc694d594d9c0b57c0841d215b5","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"},{"lessThan":"40b12b93ae4ab9e22c3d571e9b09fd08afad53f6","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"},{"lessThan":"51409aaa01f8602552c336009fd22b226b0cdf1d","status":"affected","version":"2ea190d0a006ce5218baa6e798512652446a605a","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["security/keys/keyring.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"2.6.30"},{"lessThan":"2.6.30","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.273","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.224","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.191","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.161","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.115","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.60","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.14","versionType":"semver"},{"lessThanOrEqual":"7.3.*","status":"unaffected","version":"7.3.1","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.4-rc1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.10.273","versionStartIncluding":"2.6.30","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.224","versionStartIncluding":"2.6.30","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.191","versionStartIncluding":"2.6.30","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.161","versionStartIncluding":"2.6.30","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.115","versionStartIncluding":"2.6.30","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.60","versionStartIncluding":"2.6.30","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.14","versionStartIncluding":"2.6.30","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3.1","versionStartIncluding":"2.6.30","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.4-rc1","versionStartIncluding":"2.6.30","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nkeys: Avoid the owner account dereference in named keyring lookup\n\nNamed keyring lookup must keep the storage containing the owner UID\nalive through the namespace mapping check.  find_keyring_by_name()\nreads keyring->user->uid under keyring_name_lock, but that lock protects\nthe keyring's name entry and allocation, not its separate key_user.\n\nA named session-keyring join can overlap a privileged KEYCTL_CHOWN on\nanother CPU.  If the keyring holds the last reference to its old dynamic\nkey_user and the ownership transfer succeeds, the following ordering is\npossible:\n\n    Named join                         Chown\n    find_keyring_by_name()              keyctl_chown_key()\n      read_lock(keyring_name_lock)       down_write(key->sem)\n      load old keyring->user\n                                         replace key->user and key->uid\n                                         up_write(key->sem)\n                                         key_put(key)\n                                         key_user_put(old user): free\n      read old user->uid\n      read_unlock(keyring_name_lock)\n\nChown neither takes keyring_name_lock nor key_session_mutex, so it can\nfree the old account between the pointer load and the UID read.  The\nlookup then reads freed memory even though the keyring itself is alive.\n\nUse keyring->uid for the mapping check.  key_alloc() initializes this\ninline owner UID and keyctl_chown_key() updates it on chown.\nThe existing name lock keeps its containing keyring allocated throughout\nthe check, so lookup no longer depends on the account's lifetime.  This\nalso matches the owner UID used by the permission check.\n\nKASAN report as below:\n\n    BUG: KASAN: slab-use-after-free in find_keyring_by_name+0x577/0x5d0\n    Read of size 4 at addr ffff8881128ae2ec by task keycase/500"}],"providerMetadata":{"dateUpdated":"2026-11-03T19:12:58.803Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/77249d4b1bb5ad43552b7023c4a0978937aa7a56"},{"url":"https://git.kernel.org/stable/c/0b865fa477d94ac96c26848aab1fd176397de3f6"},{"url":"https://git.kernel.org/stable/c/6763329f673d261641c79212abf773af77b2c922"},{"url":"https://git.kernel.org/stable/c/aa03c8fb4334f14d218020f7431debf2b7766865"},{"url":"https://git.kernel.org/stable/c/c9664f780f861dd9f11f120c7a03ed0993671ebb"},{"url":"https://git.kernel.org/stable/c/b0830a26e2c3008a6e21863126b4a0e68b2761cd"},{"url":"https://git.kernel.org/stable/c/5c6a9512887a6cc694d594d9c0b57c0841d215b5"},{"url":"https://git.kernel.org/stable/c/40b12b93ae4ab9e22c3d571e9b09fd08afad53f6"},{"url":"https://git.kernel.org/stable/c/51409aaa01f8602552c336009fd22b226b0cdf1d"}],"title":"keys: Avoid the owner account dereference in named keyring lookup","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-99226","datePublished":"2026-11-02T16:06:35.362Z","dateReserved":"2026-09-25T10:25:14.402Z","dateUpdated":"2026-11-03T19:12:58.803Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-11-02 16:17:47","lastModifiedDate":"2026-11-03 20:18:28","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"99226","Ordinal":"1","Title":"keys: Avoid the owner account dereference in named keyring looku","CVE":"CVE-2026-99226","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"99226","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nkeys: Avoid the owner account dereference in named keyring lookup\n\nNamed keyring lookup must keep the storage containing the owner UID\nalive through the namespace mapping check.  find_keyring_by_name()\nreads keyring->user->uid under keyring_name_lock, but that lock protects\nthe keyring's name entry and allocation, not its separate key_user.\n\nA named session-keyring join can overlap a privileged KEYCTL_CHOWN on\nanother CPU.  If the keyring holds the last reference to its old dynamic\nkey_user and the ownership transfer succeeds, the following ordering is\npossible:\n\n    Named join                         Chown\n    find_keyring_by_name()              keyctl_chown_key()\n      read_lock(keyring_name_lock)       down_write(key->sem)\n      load old keyring->user\n                                         replace key->user and key->uid\n                                         up_write(key->sem)\n                                         key_put(key)\n                                         key_user_put(old user): free\n      read old user->uid\n      read_unlock(keyring_name_lock)\n\nChown neither takes keyring_name_lock nor key_session_mutex, so it can\nfree the old account between the pointer load and the UID read.  The\nlookup then reads freed memory even though the keyring itself is alive.\n\nUse keyring->uid for the mapping check.  key_alloc() initializes this\ninline owner UID and keyctl_chown_key() updates it on chown.\nThe existing name lock keeps its containing keyring allocated throughout\nthe check, so lookup no longer depends on the account's lifetime.  This\nalso matches the owner UID used by the permission check.\n\nKASAN report as below:\n\n    BUG: KASAN: slab-use-after-free in find_keyring_by_name+0x577/0x5d0\n    Read of size 4 at addr ffff8881128ae2ec by task keycase/500","Type":"Description","Title":"keys: Avoid the owner account dereference in named keyring looku"}]}}}