{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-31719", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-03-09T15:48:24.134Z", "datePublished": "2026-05-01T13:56:13.385Z", "dateUpdated": "2026-08-05T12:24:50.735Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T12:24:50.735Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncrypto: krb5enc - fix async decrypt skipping hash verification\n\nkrb5enc_dispatch_decrypt() sets req->base.complete as the skcipher\ncallback, which is the caller's own completion handler. When the\nskcipher completes asynchronously, this signals \"done\" to the caller\nwithout executing krb5enc_dispatch_decrypt_hash(), completely bypassing\nthe integrity verification (hash check).\n\nCompare with the encrypt path which correctly uses\nkrb5enc_encrypt_done as an intermediate callback to chain into the\nhash computation on async completion.\n\nFix by adding krb5enc_decrypt_done as an intermediate callback that\nchains into krb5enc_dispatch_decrypt_hash() upon async skcipher\ncompletion, matching the encrypt path's callback pattern.\n\nAlso fix EBUSY/EINPROGRESS handling throughout: remove\nkrb5enc_request_complete() which incorrectly swallowed EINPROGRESS\nnotifications that must be passed up to callers waiting on backlogged\nrequests, and add missing EBUSY checks in krb5enc_encrypt_ahash_done\nfor the dispatch_encrypt return value.\n\n\nUnset MAY_BACKLOG on the async completion path so the user won't\nsee back-to-back EINPROGRESS notifications." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N", "baseScore": 7.5, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:N - The vulnerable AEAD decrypt path is used by Kerberos crypto for network-facing consumers such as RxRPC/AFS and Ceph. A remote peer or network attacker can supply or tamper with encrypted protocol packets that reach `crypto_krb5_decrypt()` and then `krb5enc_decrypt()`.\nAC:L - There is no attacker-uncontrolled race; on a vulnerable deployment using an asynchronous skcipher provider, the bypass follows directly from an async decrypt completion. When uncertain about async-provider deployment details, the higher-severity Low complexity is selected.\nPR:N - The attack can be carried in network traffic toward a kernel network filesystem/protocol endpoint and does not require local privileges on the target. In the strongest plausible scenario, a network attacker tampering with an existing protected flow needs no target-system account.\nUI:N - No victim user action is required once the affected service or client connection is active. Packet processing reaches the vulnerable decrypt path automatically.\nS:U - The impact remains within the kernel/protocol security authority handling the protected traffic. This is not a VM escape, sandbox escape, or cross-authority boundary violation.\nC:N - The bug skips integrity verification after decryption but does not by itself disclose plaintext or kernel memory. I found no memory corruption or read primitive associated with the fix.\nI:H - An async decrypt can complete successfully without checking the Kerberos checksum, allowing tampered ciphertext to be accepted as authenticated plaintext. For network storage/filesystem protocols, that can permit forgery or unauthorized modification of protected protocol data.\nA:N - The fixed flaw is an authentication/integrity bypass, and the investigation did not identify a new kernel crash, hang, or resource exhaustion primitive. Bad packets may be rejected or abort protocol state, but that is not a distinct high-availability impact from this bug." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "crypto/krb5enc.c" ], "versions": [ { "version": "d1775a177f7f38156d541c8a3e3c91eaa6e69699", "lessThan": "07cbb1bd424370671814a862913c99a6e1441588", "status": "affected", "versionType": "git" }, { "version": "d1775a177f7f38156d541c8a3e3c91eaa6e69699", "lessThan": "e51f42114abbdf47f29dda43e7826be28907fcd2", "status": "affected", "versionType": "git" }, { "version": "d1775a177f7f38156d541c8a3e3c91eaa6e69699", "lessThan": "3bfbf5f0a99c991769ec562721285df7ab69240b", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "crypto/krb5enc.c" ], "versions": [ { "version": "6.15", "status": "affected" }, { "version": "0", "lessThan": "6.15", "status": "unaffected", "versionType": "semver" }, { "version": "6.18.25", "lessThanOrEqual": "6.18.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.0.2", "lessThanOrEqual": "7.0.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.1", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.15", "versionEndExcluding": "6.18.25" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.15", "versionEndExcluding": "7.0.2" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.15", "versionEndExcluding": "7.1" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/07cbb1bd424370671814a862913c99a6e1441588" }, { "url": "https://git.kernel.org/stable/c/e51f42114abbdf47f29dda43e7826be28907fcd2" }, { "url": "https://git.kernel.org/stable/c/3bfbf5f0a99c991769ec562721285df7ab69240b" } ], "title": "crypto: krb5enc - fix async decrypt skipping hash verification", "x_generator": { "engine": "bippy-1.2.0" } } } }