{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2023-54325",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-12-30T12:35:56.209Z",
        "datePublished": "2025-12-30T12:37:09.015Z",
        "dateUpdated": "2026-08-05T09:19:16.226Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T09:19:16.226Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncrypto: qat - fix out-of-bounds read\n\nWhen preparing an AER-CTR request, the driver copies the key provided by\nthe user into a data structure that is accessible by the firmware.\nIf the target device is QAT GEN4, the key size is rounded up by 16 since\na rounded up size is expected by the device.\nIf the key size is rounded up before the copy, the size used for copying\nthe key might be bigger than the size of the region containing the key,\ncausing an out-of-bounds read.\n\nFix by doing the copy first and then update the keylen.\n\nThis is to fix the following warning reported by KASAN:\n\n\t[  138.150574] BUG: KASAN: global-out-of-bounds in qat_alg_skcipher_init_com.isra.0+0x197/0x250 [intel_qat]\n\t[  138.150641] Read of size 32 at addr ffffffff88c402c0 by task cryptomgr_test/2340\n\n\t[  138.150651] CPU: 15 PID: 2340 Comm: cryptomgr_test Not tainted 6.2.0-rc1+ #45\n\t[  138.150659] Hardware name: Intel Corporation ArcherCity/ArcherCity, BIOS EGSDCRB1.86B.0087.D13.2208261706 08/26/2022\n\t[  138.150663] Call Trace:\n\t[  138.150668]  <TASK>\n\t[  138.150922]  kasan_check_range+0x13a/0x1c0\n\t[  138.150931]  memcpy+0x1f/0x60\n\t[  138.150940]  qat_alg_skcipher_init_com.isra.0+0x197/0x250 [intel_qat]\n\t[  138.151006]  qat_alg_skcipher_init_sessions+0xc1/0x240 [intel_qat]\n\t[  138.151073]  crypto_skcipher_setkey+0x82/0x160\n\t[  138.151085]  ? prepare_keybuf+0xa2/0xd0\n\t[  138.151095]  test_skcipher_vec_cfg+0x2b8/0x800"
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
                        "baseScore": 7.1,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:L - The vulnerable `setkey` path is entered from a local process via an AF_ALG socket (`setsockopt(ALG_SET_KEY)` on `ctr(aes)`/`qat_aes_ctr`) or any other local crypto-API consumer; no network-facing service passes attacker-chosen key lengths into this driver.\nAC:L - The attacker fully and deterministically controls the trigger — simply install a 24-byte (AES-192) key on a `ctr(aes)` transform, since only the 24→32 round-up overreads; no race, timing, or memory-layout condition is involved.\nPR:L - Any unprivileged local user can open AF_ALG and call `ALG_SET_KEY`; `crypto/af_alg.c` and `crypto/algif_skcipher.c` contain no `capable()`/`CAP_*` checks, and QAT's priority-4001 `ctr(aes)` is selected automatically.\nUI:N - The attacker triggers the out-of-bounds read entirely from its own process by setting a key; no victim action is required (the crypto self-test even triggers it unattended at module load).\nS:U - The overread and its consequences stay within the kernel's own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Eight bytes of kernel memory adjacent to the key buffer — which under heap grooming can be attacker-influenced neighboring slab contents such as other keys or pointers — are read out of bounds and copied into a DMA-coherent buffer exposed to the accelerator firmware, taking kernel heap data outside the kernel's control.\nI:N - This is a read-only overread: the 64-byte `ucs_aes.key` destination comfortably holds the 32-byte store, so no out-of-bounds write or control-flow primitive exists, and the AES-192 key schedule ignores the stray trailing bytes.\nA:H - The 8-byte overread faults and oopses whenever the key buffer ends at a mapping boundary (KFENCE-guarded allocation, end of a vmapped region, or the section-end case seen in the reported `.rodata` KASAN report), and on KASAN/`panic_on_warn` kernels it is a hard crash that an unprivileged user can trigger repeatedly."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/crypto/qat/qat_common/qat_algs.c"
                    ],
                    "versions": [
                        {
                            "version": "67916c9516893528ecce060ada1f58af0ce33d93",
                            "lessThan": "7697139d5dfd491f4c495a914a1dd68f6e827a0f",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "67916c9516893528ecce060ada1f58af0ce33d93",
                            "lessThan": "dc3809f390357c8992f0a23083da934a20fef9af",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "67916c9516893528ecce060ada1f58af0ce33d93",
                            "lessThan": "2b1501f058245573a3aa6bf234d205dde1196184",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "67916c9516893528ecce060ada1f58af0ce33d93",
                            "lessThan": "f6044cc3030e139f60c281386f28bda6e3049d66",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/crypto/qat/qat_common/qat_algs.c"
                    ],
                    "versions": [
                        {
                            "version": "5.11",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "5.11",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.15.99",
                            "lessThanOrEqual": "5.15.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.16",
                            "lessThanOrEqual": "6.1.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.2.3",
                            "lessThanOrEqual": "6.2.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.3",
                            "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": "5.11",
                                    "versionEndExcluding": "5.15.99"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.11",
                                    "versionEndExcluding": "6.1.16"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.11",
                                    "versionEndExcluding": "6.2.3"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.11",
                                    "versionEndExcluding": "6.3"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/7697139d5dfd491f4c495a914a1dd68f6e827a0f"
                },
                {
                    "url": "https://git.kernel.org/stable/c/dc3809f390357c8992f0a23083da934a20fef9af"
                },
                {
                    "url": "https://git.kernel.org/stable/c/2b1501f058245573a3aa6bf234d205dde1196184"
                },
                {
                    "url": "https://git.kernel.org/stable/c/f6044cc3030e139f60c281386f28bda6e3049d66"
                }
            ],
            "title": "crypto: qat - fix out-of-bounds read",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}