CVE-2023-54325 (GCVE-0-2023-54325)
Vulnerability from cvelistv5
Published
2025-12-30 12:37
Modified
2026-08-05 09:19
Summary
In the Linux kernel, the following vulnerability has been resolved: crypto: qat - fix out-of-bounds read When preparing an AER-CTR request, the driver copies the key provided by the user into a data structure that is accessible by the firmware. If the target device is QAT GEN4, the key size is rounded up by 16 since a rounded up size is expected by the device. If the key size is rounded up before the copy, the size used for copying the key might be bigger than the size of the region containing the key, causing an out-of-bounds read. Fix by doing the copy first and then update the keylen. This is to fix the following warning reported by KASAN: [ 138.150574] BUG: KASAN: global-out-of-bounds in qat_alg_skcipher_init_com.isra.0+0x197/0x250 [intel_qat] [ 138.150641] Read of size 32 at addr ffffffff88c402c0 by task cryptomgr_test/2340 [ 138.150651] CPU: 15 PID: 2340 Comm: cryptomgr_test Not tainted 6.2.0-rc1+ #45 [ 138.150659] Hardware name: Intel Corporation ArcherCity/ArcherCity, BIOS EGSDCRB1.86B.0087.D13.2208261706 08/26/2022 [ 138.150663] Call Trace: [ 138.150668] <TASK> [ 138.150922] kasan_check_range+0x13a/0x1c0 [ 138.150931] memcpy+0x1f/0x60 [ 138.150940] qat_alg_skcipher_init_com.isra.0+0x197/0x250 [intel_qat] [ 138.151006] qat_alg_skcipher_init_sessions+0xc1/0x240 [intel_qat] [ 138.151073] crypto_skcipher_setkey+0x82/0x160 [ 138.151085] ? prepare_keybuf+0xa2/0xd0 [ 138.151095] test_skcipher_vec_cfg+0x2b8/0x800
Impacted products
Vendor Product Version
Linux Linux Version: 67916c9516893528ecce060ada1f58af0ce33d93
Version: 67916c9516893528ecce060ada1f58af0ce33d93
Version: 67916c9516893528ecce060ada1f58af0ce33d93
Version: 67916c9516893528ecce060ada1f58af0ce33d93
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/crypto/qat/qat_common/qat_algs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "7697139d5dfd491f4c495a914a1dd68f6e827a0f",
              "status": "affected",
              "version": "67916c9516893528ecce060ada1f58af0ce33d93",
              "versionType": "git"
            },
            {
              "lessThan": "dc3809f390357c8992f0a23083da934a20fef9af",
              "status": "affected",
              "version": "67916c9516893528ecce060ada1f58af0ce33d93",
              "versionType": "git"
            },
            {
              "lessThan": "2b1501f058245573a3aa6bf234d205dde1196184",
              "status": "affected",
              "version": "67916c9516893528ecce060ada1f58af0ce33d93",
              "versionType": "git"
            },
            {
              "lessThan": "f6044cc3030e139f60c281386f28bda6e3049d66",
              "status": "affected",
              "version": "67916c9516893528ecce060ada1f58af0ce33d93",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/crypto/qat/qat_common/qat_algs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.11"
            },
            {
              "lessThan": "5.11",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.99",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.16",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.2.*",
              "status": "unaffected",
              "version": "6.2.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.99",
                  "versionStartIncluding": "5.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.16",
                  "versionStartIncluding": "5.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2.3",
                  "versionStartIncluding": "5.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3",
                  "versionStartIncluding": "5.11",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "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]  \u003cTASK\u003e\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": {
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
            "version": "3.1"
          },
          "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 \u2014 simply install a 24-byte (AES-192) key on a `ctr(aes)` transform, since only the 24\u219232 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\u0027s 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\u0027s own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Eight bytes of kernel memory adjacent to the key buffer \u2014 which under heap grooming can be attacker-influenced neighboring slab contents such as other keys or pointers \u2014 are read out of bounds and copied into a DMA-coherent buffer exposed to the accelerator firmware, taking kernel heap data outside the kernel\u0027s 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."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:19:16.226Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "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"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54325",
    "datePublished": "2025-12-30T12:37:09.015Z",
    "dateReserved": "2025-12-30T12:35:56.209Z",
    "dateUpdated": "2026-08-05T09:19:16.226Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…