CVE-2025-40182 (GCVE-0-2025-40182)

Vulnerability from cvelistv5 – Published: 2025-11-12 21:56 – Updated: 2026-08-05 12:08
VLAI
Title
crypto: skcipher - Fix reqsize handling
Summary
In the Linux kernel, the following vulnerability has been resolved: crypto: skcipher - Fix reqsize handling Commit afddce13ce81d ("crypto: api - Add reqsize to crypto_alg") introduced cra_reqsize field in crypto_alg struct to replace type specific reqsize fields. It looks like this was introduced specifically for ahash and acomp from the commit description as subsequent commits add necessary changes in these alg frameworks. However, this is being recommended for use in all crypto algs [1] instead of setting reqsize using crypto_*_set_reqsize(). Using cra_reqsize in skcipher algorithms, hence, causes memory corruptions and crashes as the underlying functions in the algorithm framework have not been updated to set the reqsize properly from cra_reqsize. [2] Add proper set_reqsize calls in the skcipher init function to properly initialize reqsize for these algorithms in the framework. [1]: https://lore.kernel.org/linux-crypto/aCL8BxpHr5OpT04k@gondor.apana.org.au/ [2]: https://gist.github.com/Pratham-T/24247446f1faf4b7843e4014d5089f6b
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: afddce13ce81d52a13898fa0700917835c71acd6 , < f041339d6b9a5a46437f0c48fc7279c92af7a513 (git)
Affected: afddce13ce81d52a13898fa0700917835c71acd6 , < 229c586b5e86979badb7cb0d38717b88a9e95ddd (git)
Create a notification for this product.
Linux Linux Affected: 6.16
Unaffected: 0 , < 6.16 (semver)
Unaffected: 6.17.4 , ≤ 6.17.* (semver)
Unaffected: 6.18 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "crypto/skcipher.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "f041339d6b9a5a46437f0c48fc7279c92af7a513",
              "status": "affected",
              "version": "afddce13ce81d52a13898fa0700917835c71acd6",
              "versionType": "git"
            },
            {
              "lessThan": "229c586b5e86979badb7cb0d38717b88a9e95ddd",
              "status": "affected",
              "version": "afddce13ce81d52a13898fa0700917835c71acd6",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "crypto/skcipher.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.17.*",
              "status": "unaffected",
              "version": "6.17.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.18",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.17.4",
                  "versionStartIncluding": "6.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18",
                  "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: skcipher - Fix reqsize handling\n\nCommit afddce13ce81d (\"crypto: api - Add reqsize to crypto_alg\")\nintroduced cra_reqsize field in crypto_alg struct to replace type\nspecific reqsize fields. It looks like this was introduced specifically\nfor ahash and acomp from the commit description as subsequent commits\nadd necessary changes in these alg frameworks.\n\nHowever, this is being recommended for use in all crypto algs [1]\ninstead of setting reqsize using crypto_*_set_reqsize(). Using\ncra_reqsize in skcipher algorithms, hence, causes memory\ncorruptions and crashes as the underlying functions in the algorithm\nframework have not been updated to set the reqsize properly from\ncra_reqsize. [2]\n\nAdd proper set_reqsize calls in the skcipher init function to\nproperly initialize reqsize for these algorithms in the framework.\n\n[1]: https://lore.kernel.org/linux-crypto/aCL8BxpHr5OpT04k@gondor.apana.org.au/\n[2]: https://gist.github.com/Pratham-T/24247446f1faf4b7843e4014d5089f6b"
        }
      ],
      "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 vulnerable skcipher request path is entered through local interfaces \u2014 an `AF_ALG` socket bound to `ecb(aes)`/`cbc(aes)`, or ordinary file I/O on a dm-crypt/fscrypt volume on an affected SoC. It is not itself a network-facing subsystem, and the async-only driver is excluded from the sync/on-stack consumers such as Bluetooth SMP.\nAC:L - With `reqsize == 0` the out-of-bounds write happens deterministically on the very first encrypt/decrypt request; there is no race and no condition outside the attacker\u0027s control. The attacker fully controls allocation size, timing and repetition, making `kmalloc-96` heap grooming of the adjacent victim object reliable.\nPR:L - Opening an `AF_ALG` socket and selecting the algorithm (by name or by `cra_driver_name`) requires no capability whatsoever \u2014 any unprivileged local user suffices, as does simply reading/writing a dm-crypt or fscrypt-encrypted file.\nUI:N - The attacker triggers the corrupting crypto operation entirely on their own via a socket write or file I/O; no victim action or cooperation is needed.\nS:U - The out-of-bounds write corrupts kernel slab memory within the same kernel security authority; there is no VM, IOMMU, or sandbox boundary crossed.\nC:H - A controlled ~40-byte heap out-of-bounds write into an adjacent `kmalloc-96` object, plus type confusion onto dm-crypt\u0027s `dm_crypt_request` pointer fields (`ctx`, `sg_in`, `sg_out`), is readily leveraged into an arbitrary kernel-memory read primitive and disclosure of adjacent object contents.\nI:H - This is a straight out-of-bounds heap write with partially attacker-controlled content, and the clobbered region contains a `struct completion` whose `list_head` is linked and unlinked by `wait_for_completion_timeout()`/`complete()`, yielding pointer writes usable for control-flow hijacking or privilege escalation.\nA:H - The commit explicitly states the defect \"causes memory corruptions and crashes,\" and the referenced reproducer demonstrates kernel oopses; slab corruption plus a bogus spinlock/list in freed-adjacent memory reliably panics the system."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:08:22.418Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/f041339d6b9a5a46437f0c48fc7279c92af7a513"
        },
        {
          "url": "https://git.kernel.org/stable/c/229c586b5e86979badb7cb0d38717b88a9e95ddd"
        }
      ],
      "title": "crypto: skcipher - Fix reqsize handling",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-40182",
    "datePublished": "2025-11-12T21:56:26.699Z",
    "dateReserved": "2025-04-16T07:20:57.177Z",
    "dateUpdated": "2026-08-05T12:08:22.418Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-40182",
      "date": "2026-08-07",
      "epss": "0.0014",
      "percentile": "0.03785"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-40182\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-11-12T22:15:44.963\",\"lastModified\":\"2026-07-30T06:24:16.397\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ncrypto: skcipher - Fix reqsize handling\\n\\nCommit afddce13ce81d (\\\"crypto: api - Add reqsize to crypto_alg\\\")\\nintroduced cra_reqsize field in crypto_alg struct to replace type\\nspecific reqsize fields. It looks like this was introduced specifically\\nfor ahash and acomp from the commit description as subsequent commits\\nadd necessary changes in these alg frameworks.\\n\\nHowever, this is being recommended for use in all crypto algs [1]\\ninstead of setting reqsize using crypto_*_set_reqsize(). Using\\ncra_reqsize in skcipher algorithms, hence, causes memory\\ncorruptions and crashes as the underlying functions in the algorithm\\nframework have not been updated to set the reqsize properly from\\ncra_reqsize. [2]\\n\\nAdd proper set_reqsize calls in the skcipher init function to\\nproperly initialize reqsize for these algorithms in the framework.\\n\\n[1]: https://lore.kernel.org/linux-crypto/aCL8BxpHr5OpT04k@gondor.apana.org.au/\\n[2]: https://gist.github.com/Pratham-T/24247446f1faf4b7843e4014d5089f6b\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"crypto/skcipher.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"afddce13ce81d52a13898fa0700917835c71acd6\",\"lessThan\":\"f041339d6b9a5a46437f0c48fc7279c92af7a513\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"afddce13ce81d52a13898fa0700917835c71acd6\",\"lessThan\":\"229c586b5e86979badb7cb0d38717b88a9e95ddd\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"crypto/skcipher.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.16\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.16\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.17.4\",\"lessThanOrEqual\":\"6.17.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/229c586b5e86979badb7cb0d38717b88a9e95ddd\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f041339d6b9a5a46437f0c48fc7279c92af7a513\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-30T08:47:55+00:00",
      "cve": "CVE-2025-40182",
      "id": "CVE-2025-40182",
      "initial_release_date": "2025-11-12T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: crypto: skcipher - Fix reqsize handling",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-40182.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-07-25T16:50:19Z",
      "cve": "CVE-2025-40182",
      "id": "CVE-2025-40182",
      "initial_release_date": "2025-11-14T00:24:08Z",
      "product_status:known_not_affected": "408",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-40182",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-40182.json",
      "version": "6"
    }
  }
}



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…