CVE-2026-90069 (GCVE-0-2026-90069)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:05 – Updated: 2026-09-18 17:52
VLAI
Title
crypto: acomp - allocate async request context when cloning
Summary
In the Linux kernel, the following vulnerability has been resolved: crypto: acomp - allocate async request context when cloning ACOMP_REQUEST_ON_STACK() reserves only enough storage for the synchronous fallback. When an async implementation is selected, callers clone that stack request before retrying, but acomp_request_clone() currently copies only the stack-sized object. The clone therefore has no storage for the async provider request context, and providers such as QAT write past the allocation through acomp_request_ctx(). KASAN does report a slab OOB write. Allocate a zeroed clone large enough for the runtime acomp request size, copy only the bytes present in the source object, and preserve the existing fallback-on-allocation-failure behavior. Use the runtime reqsize because an implementation may adjust it during tfm initialization.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 097c432caaa6d91f87732fe991cb08139e31101a , < d48197cbd5d3476c7deea644972e9ec510865ec2 (git)
Affected: 097c432caaa6d91f87732fe991cb08139e31101a , < 889fa17a0af09ff93a9166abc82ee7a654faa49b (git)
Affected: 097c432caaa6d91f87732fe991cb08139e31101a , < ee440d4fc0d2f15894ab1f64c474a3adbc858880 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.16
Unaffected: 0 , < 6.16 (semver)
Unaffected: 6.18.52 , ≤ 6.18.* (semver)
Unaffected: 7.2.6 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "crypto/acompress.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "d48197cbd5d3476c7deea644972e9ec510865ec2",
              "status": "affected",
              "version": "097c432caaa6d91f87732fe991cb08139e31101a",
              "versionType": "git"
            },
            {
              "lessThan": "889fa17a0af09ff93a9166abc82ee7a654faa49b",
              "status": "affected",
              "version": "097c432caaa6d91f87732fe991cb08139e31101a",
              "versionType": "git"
            },
            {
              "lessThan": "ee440d4fc0d2f15894ab1f64c474a3adbc858880",
              "status": "affected",
              "version": "097c432caaa6d91f87732fe991cb08139e31101a",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "crypto/acompress.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.16"
            },
            {
              "lessThan": "6.16",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "6.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.16",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncrypto: acomp - allocate async request context when cloning\n\nACOMP_REQUEST_ON_STACK() reserves only enough storage for the\nsynchronous fallback. When an async implementation is selected, callers\nclone that stack request before retrying, but acomp_request_clone()\ncurrently copies only the stack-sized object. The clone therefore has no\nstorage for the async provider request context, and providers such as QAT\nwrite past the allocation through acomp_request_ctx(). KASAN does report\na slab OOB write.\n\nAllocate a zeroed clone large enough for the runtime acomp request size,\ncopy only the bytes present in the source object, and preserve the\nexisting fallback-on-allocation-failure behavior. Use the runtime reqsize\nbecause an implementation may adjust it during tfm initialization."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The undersized clone is produced only by ACOMP_REQUEST_CLONE in ubifs_compress_common()/ubifs_decompress_common(), reached from local VFS writeback (write/fsync \u2192 ubifs_writepage \u2192 do_writepage \u2192 ubifs_jnl_write_data \u2192 ubifs_compress_folio) or read (ubifs_read_folio \u2192 read_block \u2192 ubifs_decompress_folio). IPComp uses acomp_request_alloc_extra() and never clones, so no protocol message carries this bug.\nAC:L - When UBIFS\u0027s compressor tfm is async, crypto_acomp_compress()/crypto_acomp_decompress() return -EAGAIN for every ACOMP_REQUEST_ON_STACK request, and the following ACOMP_REQUEST_CLONE plus QAT qat_comp_alg_compress_decompress() write through acomp_request_ctx() always overflows the kmemdup; there is no race or uninfluenced layout to win.\nPR:L - An unprivileged user with write permission on a UBIFS inode that inherited UBIFS_COMPR_FL triggers the clone by writing \u2265 UBIFS_MIN_COMPR_LEN bytes and fsync(); ubifs_fs_type has no FS_USERNS_MOUNT, but an already-mounted volume needs no capability beyond ordinary file write access.\nUI:N - The attacker creates and writes their own file on the mounted UBIFS volume and forces writeback with fsync() into ubifs_jnl_write_data(); no other user must mount an image or open a file.\nS:U - qat_comp_alg_compress_decompress() writes struct qat_compression_req through acomp_request_ctx() into kernel slab adjacent to the clone; the corruption stays in kernel memory and does not cross a VM, IOMMU, or guest/host boundary.\nC:H - The entire qat_compression_req (firmware request, DMA buffer pointers, qat_compression_ctx * and acomp_req *) is stored past the kmemdup of sizeof(struct acomp_req), so qat_comp_generic_callback() later reads those fields from neighboring slab objects, giving an arbitrary kernel read after heap grooming.\nI:H - qat_comp_alg_compress_decompress() performs a slab out-of-bounds write of sizeof(struct qat_compression_req) via acomp_request_ctx() on the clone, overwriting adjacent heap objects including function pointers and providing a control-flow hijack and arbitrary-write primitive.\nA:H - KASAN reports a slab out-of-bounds write through acomp_request_ctx() on the undersized clone, and overflowing qat_compression_req into the next slab object oopses or panics on the QAT callback or allocator integrity check."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-18T17:52:52.872Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/d48197cbd5d3476c7deea644972e9ec510865ec2"
        },
        {
          "url": "https://git.kernel.org/stable/c/889fa17a0af09ff93a9166abc82ee7a654faa49b"
        },
        {
          "url": "https://git.kernel.org/stable/c/ee440d4fc0d2f15894ab1f64c474a3adbc858880"
        }
      ],
      "title": "crypto: acomp - allocate async request context when cloning",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90069",
    "datePublished": "2026-09-17T16:05:50.894Z",
    "dateReserved": "2026-09-11T19:38:34.784Z",
    "dateUpdated": "2026-09-18T17:52:52.872Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90069",
      "date": "2026-09-25",
      "epss": "0.00173",
      "percentile": "0.05984"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "crypto/acompress.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "d48197cbd5d3476c7deea644972e9ec510865ec2",
                    "status": "affected",
                    "version": "097c432caaa6d91f87732fe991cb08139e31101a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "889fa17a0af09ff93a9166abc82ee7a654faa49b",
                    "status": "affected",
                    "version": "097c432caaa6d91f87732fe991cb08139e31101a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "ee440d4fc0d2f15894ab1f64c474a3adbc858880",
                    "status": "affected",
                    "version": "097c432caaa6d91f87732fe991cb08139e31101a",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "crypto/acompress.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.16"
                  },
                  {
                    "lessThan": "6.16",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.52",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncrypto: acomp - allocate async request context when cloning\n\nACOMP_REQUEST_ON_STACK() reserves only enough storage for the\nsynchronous fallback. When an async implementation is selected, callers\nclone that stack request before retrying, but acomp_request_clone()\ncurrently copies only the stack-sized object. The clone therefore has no\nstorage for the async provider request context, and providers such as QAT\nwrite past the allocation through acomp_request_ctx(). KASAN does report\na slab OOB write.\n\nAllocate a zeroed clone large enough for the runtime acomp request size,\ncopy only the bytes present in the source object, and preserve the\nexisting fallback-on-allocation-failure behavior. Use the runtime reqsize\nbecause an implementation may adjust it during tfm initialization."
          }
        ],
        "id": "CVE-2026-90069",
        "lastModified": "2026-09-18T18:17:40.710",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-17T17:16:55.830",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/889fa17a0af09ff93a9166abc82ee7a654faa49b"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/d48197cbd5d3476c7deea644972e9ec510865ec2"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/ee440d4fc0d2f15894ab1f64c474a3adbc858880"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



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…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…