{"id":"CVE-2026-99222","revision":"1e518f0b337241828c5e2ddbd45f5a23","records":[{"revision":"1e518f0b337241828c5e2ddbd45f5a23","observedAt":"2026-11-03T21:57:16.832+00:00","statement":{"source":"cve-program","id":"CVE-2026-99222","aliases":[],"title":"keys: Protect the read method check against type removal","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nkeys: Protect the read method check against type removal\n\nkeyctl_read_key() checks key->type->read without holding key->sem.\nA reference keeps the key alive, but does not pin the module containing\nits type. A surviving RxRPC key can therefore be read while AF_RXRPC\nis being unloaded:\n\n  KEYCTL_READ task                    Module unload and key GC\n  ----------------                   ------------------------\n  lookup_user_key()\n  permission / possession checks\n  load key->type\n                                     af_rxrpc_exit()\n                                       unregister_key_type()\n                                         GC: down_write(key->sem)\n                                         GC: retype to key_type_dead\n                                         GC: up_write(key->sem)\n                                       unregister_key_type() returns\n                                     free_module()\n  read saved type's read member\n\nThe final access can read freed module storage. The read invocation in\n__keyctl_read_key() is already protected by key->sem, but the earlier\nmethod check is outside that critical section.\n\nMove the method check into __keyctl_read_key(), after key_validate() and\nunder its existing read hold on key->sem. The check and invocation then\nuse the same protected type for length queries and every read retry.\nThe GC cannot retype the key until the semaphore is released, and type\nunregistration waits for that GC pass before the module can be freed.\n\nReturn -EOPNOTSUPP when validation succeeds and the type has no read\nmethod. A temporary buffer may now be allocated before this result;\nallocation and copying to userspace remain outside the semaphore.","state":0,"publishedAt":"2026-11-02T16:06:32.844+00:00","modifiedAt":"2026-11-03T19:12:56.503+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"security/keys/keyctl.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"e5f830ae6611cddbfc504c43f14155f60b63206a\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"ff11cfed85cbfdd7fe1185ebd18d2c7a8353ad8d\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"1486caee47b4909f52835a957c3293e970113e44\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"ff44f1b303aa76a818d898e85c56ed4852c031e2\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"6a36e2a1a017c51f8a8ad2a094566bad97c46a9b\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"3edc064069d07e7d37359fcb4d03d3bab15ee3ab\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"cf1af7df80e38bf58bd74c2cccce32fcbd1a596a\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"e2a2deda08d91644f5e30c17d267b1cdc5f124b2\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"d3ec10aa95819bff18a0d936b18884c7816d0914\",\n                            \"lessThan\": \"925c84e3cc21caf09de92d9bcafab0147790debf\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"7fa67aa30509ad0da72ac0f757aa76e53c0ea3de\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"18779eac17b5df9dff57138d07631573553a41d4\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"f1afcf9488fc45765e20e2047d3b776981900e0b\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"212d3adb1af4e34acb158d6c6def370016a1011d\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"4.14.177\",\n                            \"lessThan\": \"4.15\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"4.19.118\",\n                            \"lessThan\": \"4.20\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.4.35\",\n                            \"lessThan\": \"5.5\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.6.7\",\n                            \"lessThan\": \"5.7\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"security/keys/keyctl.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"5.7\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"5.7\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.10.273\",\n                            \"lessThanOrEqual\": \"5.10.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.15.224\",\n                            \"lessThanOrEqual\": \"5.15.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.1.191\",\n                            \"lessThanOrEqual\": \"6.1.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.6.161\",\n                            \"lessThanOrEqual\": \"6.6.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.12.115\",\n                            \"lessThanOrEqual\": \"6.12.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.18.60\",\n                            \"lessThanOrEqual\": \"6.18.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.2.14\",\n                            \"lessThanOrEqual\": \"7.2.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.3.1\",\n                            \"lessThanOrEqual\": \"7.3.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.4-rc1\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[],"references":["https://git.kernel.org/stable/c/e5f830ae6611cddbfc504c43f14155f60b63206a","https://git.kernel.org/stable/c/ff11cfed85cbfdd7fe1185ebd18d2c7a8353ad8d","https://git.kernel.org/stable/c/1486caee47b4909f52835a957c3293e970113e44","https://git.kernel.org/stable/c/ff44f1b303aa76a818d898e85c56ed4852c031e2","https://git.kernel.org/stable/c/6a36e2a1a017c51f8a8ad2a094566bad97c46a9b","https://git.kernel.org/stable/c/3edc064069d07e7d37359fcb4d03d3bab15ee3ab","https://git.kernel.org/stable/c/cf1af7df80e38bf58bd74c2cccce32fcbd1a596a","https://git.kernel.org/stable/c/e2a2deda08d91644f5e30c17d267b1cdc5f124b2","https://git.kernel.org/stable/c/925c84e3cc21caf09de92d9bcafab0147790debf"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-99222","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-99222","identifiers":["CVE-2026-99222"]},"retained":false,"historicalAffected":[]}],"coverage":[]}