GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

GHSA-5CH2-359F-FP8J

Vulnerability from github – Published: 2026-09-04 18:31 – Updated: 2026-09-04 18:31
VLAI
Details

In the Linux kernel, the following vulnerability has been resolved:

crypto: qce - fix CCM AAD buffer underallocation

The AAD buffer allocated in qce_aead_ccm_prepare_buf_assoclen() can be smaller than the length later programmed into the DMA scatterlist.

The allocation size is currently calculated as:

ALIGN(assoclen, 16) + MAX_CCM_ADATA_HEADER_LEN

while the DMA length is set to:

ALIGN(assoclen + adata_header_len, 16)

Since ALIGN() does not distribute over addition, the allocation can be smaller than the DMA length. For example, when assoclen = 32 and adata_header_len = 2:

allocation = ALIGN(32, 16) + 6 = 38 DMA length = ALIGN(32 + 2, 16) = 48

As a result, the QCE hardware can read beyond the allocated buffer while computing the CBC-MAC over the associated data. The extra bytes are folded into the authentication tag, resulting in an incorrect tag and causing CCM self-test failures such as:

alg: aead: ccm-aes-qce encryption test failed (wrong result) on test vector 8

Fix the allocation by adding the maximum possible AAD header length before alignment:

ALIGN(assoclen + MAX_CCM_ADATA_HEADER_LEN, 16)

This guarantees that the allocated buffer is large enough for the fully padded AAD data for all supported header sizes.

Show details on source website

{
  "affected": [],
  "aliases": [
    "CVE-2026-80832"
  ],
  "database_specific": {
    "cwe_ids": [],
    "github_reviewed": false,
    "github_reviewed_at": null,
    "nvd_published_at": "2026-09-04T16:18:11Z",
    "severity": null
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\ncrypto: qce - fix CCM AAD buffer underallocation\n\nThe AAD buffer allocated in qce_aead_ccm_prepare_buf_assoclen()\ncan be smaller than the length later programmed into the DMA\nscatterlist.\n\nThe allocation size is currently calculated as:\n\n  ALIGN(assoclen, 16) + MAX_CCM_ADATA_HEADER_LEN\n\nwhile the DMA length is set to:\n\n  ALIGN(assoclen + adata_header_len, 16)\n\nSince ALIGN() does not distribute over addition, the allocation\ncan be smaller than the DMA length. For example, when\nassoclen = 32 and adata_header_len = 2:\n\n  allocation = ALIGN(32, 16) + 6 = 38\n  DMA length = ALIGN(32 + 2, 16) = 48\n\nAs a result, the QCE hardware can read beyond the allocated\nbuffer while computing the CBC-MAC over the associated data.\nThe extra bytes are folded into the authentication tag,\nresulting in an incorrect tag and causing CCM self-test\nfailures such as:\n\n  alg: aead: ccm-aes-qce encryption test failed (wrong result)\n  on test vector 8\n\nFix the allocation by adding the maximum possible AAD header\nlength before alignment:\n\n  ALIGN(assoclen + MAX_CCM_ADATA_HEADER_LEN, 16)\n\nThis guarantees that the allocated buffer is large enough\nfor the fully padded AAD data for all supported header sizes.",
  "id": "GHSA-5ch2-359f-fp8j",
  "modified": "2026-09-04T18:31:28Z",
  "published": "2026-09-04T18:31:28Z",
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-80832"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/002f1f99aef7ea631cb687fc17bce64e4963f6aa"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/11775b35ce9f27e73d62188d7d38aa0dc0a219aa"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/2f65718b9c1095eef1ae9b374aa0384b1b083f3c"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/46a84efe2dbaddde89073a3c00c694486937c34b"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/4839f4c21f9c577eedef2919ced878a3057c7fc3"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/7f2345f47dd189625f657cd72437179ab4170ee1"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/c9e0f06a023107694698a7930616aeb460d91816"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/cc56d2b0d77cfeea061e98114992ee687d5eb4dd"
    }
  ],
  "schema_version": "1.4.0",
  "severity": []
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…