CVE-2024-26584 (GCVE-0-2024-26584)
Vulnerability from cvelistv5
Published
2024-02-21 14:59
Modified
2026-08-05 11:26
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: net: tls: handle backlogging of crypto requests Since we're setting the CRYPTO_TFM_REQ_MAY_BACKLOG flag on our requests to the crypto API, crypto_aead_{encrypt,decrypt} can return -EBUSY instead of -EINPROGRESS in valid situations. For example, when the cryptd queue for AESNI is full (easy to trigger with an artificially low cryptd.cryptd_max_cpu_qlen), requests will be enqueued to the backlog but still processed. In that case, the async callback will also be called twice: first with err == -EINPROGRESS, which it seems we can just ignore, then with err == 0. Compared to Sabrina's original patch this version uses the new tls_*crypt_async_wait() helpers and converts the EBUSY to EINPROGRESS to avoid having to modify all the error handling paths. The handling is identical.
Impacted products
Vendor Product Version
Linux Linux Version: a54667f6728c2714a400f3c884727da74b6d1717
Version: a54667f6728c2714a400f3c884727da74b6d1717
Version: a54667f6728c2714a400f3c884727da74b6d1717
Version: a54667f6728c2714a400f3c884727da74b6d1717
Version: a54667f6728c2714a400f3c884727da74b6d1717
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-26584",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-02-26T17:14:36.035758Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-07-05T17:21:03.401Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2025-11-04T18:29:47.526Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/3ade391adc584f17b5570fd205de3ad029090368"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/cd1bbca03f3c1d845ce274c0d0a66de8e5929f72"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/13eca403876bbea3716e82cdfe6f1e6febb38754"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/ab6397f072e5097f267abf5cb08a8004e6b17694"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/8590541473188741055d27b955db0777569438e3"
          },
          {
            "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/EZOU3745CWCDZ7EMKMXB2OEEIB5Q3IWM/"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/tls/tls_sw.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "3ade391adc584f17b5570fd205de3ad029090368",
              "status": "affected",
              "version": "a54667f6728c2714a400f3c884727da74b6d1717",
              "versionType": "git"
            },
            {
              "lessThan": "cd1bbca03f3c1d845ce274c0d0a66de8e5929f72",
              "status": "affected",
              "version": "a54667f6728c2714a400f3c884727da74b6d1717",
              "versionType": "git"
            },
            {
              "lessThan": "13eca403876bbea3716e82cdfe6f1e6febb38754",
              "status": "affected",
              "version": "a54667f6728c2714a400f3c884727da74b6d1717",
              "versionType": "git"
            },
            {
              "lessThan": "ab6397f072e5097f267abf5cb08a8004e6b17694",
              "status": "affected",
              "version": "a54667f6728c2714a400f3c884727da74b6d1717",
              "versionType": "git"
            },
            {
              "lessThan": "8590541473188741055d27b955db0777569438e3",
              "status": "affected",
              "version": "a54667f6728c2714a400f3c884727da74b6d1717",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/tls/tls_sw.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.16"
            },
            {
              "lessThan": "4.16",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.160",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.84",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.18",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.7.*",
              "status": "unaffected",
              "version": "6.7.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.8",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.160",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.84",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.18",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.7.6",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8",
                  "versionStartIncluding": "4.16",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: tls: handle backlogging of crypto requests\n\nSince we\u0027re setting the CRYPTO_TFM_REQ_MAY_BACKLOG flag on our\nrequests to the crypto API, crypto_aead_{encrypt,decrypt} can return\n -EBUSY instead of -EINPROGRESS in valid situations. For example, when\nthe cryptd queue for AESNI is full (easy to trigger with an\nartificially low cryptd.cryptd_max_cpu_qlen), requests will be enqueued\nto the backlog but still processed. In that case, the async callback\nwill also be called twice: first with err == -EINPROGRESS, which it\nseems we can just ignore, then with err == 0.\n\nCompared to Sabrina\u0027s original patch this version uses the new\ntls_*crypt_async_wait() helpers and converts the EBUSY to\nEINPROGRESS to avoid having to modify all the error handling\npaths. The handling is identical."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - The flaw is in net/tls software crypto submission, and the decrypt path is driven directly by TLS records received from the remote peer while the encrypt path is driven by data sent back over the same connection. A remote client of a kTLS-terminating server reaches the vulnerable code purely by sending network traffic.\nAC:L - The triggering condition is a full crypto backlog queue, which is a load condition the attacker creates by driving concurrent TLS records across many kTLS sockets; on hardware crypto accelerators with shallow rings, -EBUSY occurs under ordinary attacker-generated throughput. No memory layout or victim state outside the attacker\u0027s influence is required.\nPR:N - A kTLS-offloading server accepts connections from arbitrary unauthenticated clients (no client certificates in the typical deployment), and once the session is established the attacker only needs to send record data. No account or privilege on the target system is required.\nUI:N - The bug triggers automatically during normal kTLS record encryption and decryption on an established connection. No action by any local user or administrator is needed.\nS:U - The use-after-free, double free and page refcount underflow all occur within kernel memory managed by the same security authority. No VM, IOMMU or sandbox boundary is crossed.\nC:H - The freed tls_rec / aead_req+tls_decrypt_ctx blocks are re-read after being reclaimed, yielding an attacker-groomable sock pointer and scatterlist, and the page refcount underflow from the spurious put_page() lets freed pages holding other tenants\u0027 data be re-observed. This is leverageable into arbitrary kernel memory disclosure.\nI:H - The stale callback writes into freed memory (rec-\u003etx_ready, sge-\u003eoffset, ctx-\u003easync_wait.err) and the crypto engine writes attacker-supplied plaintext into pages already released, giving a controlled-content write primitive, compounded by a double kfree() of the decrypt buffer.\nA:H - The use-after-free, double free and page refcount underflow reliably produce slab corruption and kernel panics, and the encrypt_pending/decrypt_pending underflow leaves tls_*crypt_async_wait() waiting on a completion that never arrives, hanging the socket close path."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:26:03.272Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/3ade391adc584f17b5570fd205de3ad029090368"
        },
        {
          "url": "https://git.kernel.org/stable/c/cd1bbca03f3c1d845ce274c0d0a66de8e5929f72"
        },
        {
          "url": "https://git.kernel.org/stable/c/13eca403876bbea3716e82cdfe6f1e6febb38754"
        },
        {
          "url": "https://git.kernel.org/stable/c/ab6397f072e5097f267abf5cb08a8004e6b17694"
        },
        {
          "url": "https://git.kernel.org/stable/c/8590541473188741055d27b955db0777569438e3"
        }
      ],
      "title": "net: tls: handle backlogging of crypto requests",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-26584",
    "datePublished": "2024-02-21T14:59:12.452Z",
    "dateReserved": "2024-02-19T14:20:24.125Z",
    "dateUpdated": "2026-08-05T11:26:03.272Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/3ade391adc584f17b5570fd205de3ad029090368\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/cd1bbca03f3c1d845ce274c0d0a66de8e5929f72\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/13eca403876bbea3716e82cdfe6f1e6febb38754\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/ab6397f072e5097f267abf5cb08a8004e6b17694\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/8590541473188741055d27b955db0777569438e3\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/EZOU3745CWCDZ7EMKMXB2OEEIB5Q3IWM/\"}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2025-11-04T18:29:47.526Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-26584\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-02-26T17:14:36.035758Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-07-05T15:20:37.699Z\"}}], \"cna\": {\"title\": \"net: tls: handle backlogging of crypto requests\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 9.8, \"baseSeverity\": \"CRITICAL\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:N - The flaw is in net/tls software crypto submission, and the decrypt path is driven directly by TLS records received from the remote peer while the encrypt path is driven by data sent back over the same connection. A remote client of a kTLS-terminating server reaches the vulnerable code purely by sending network traffic.\\nAC:L - The triggering condition is a full crypto backlog queue, which is a load condition the attacker creates by driving concurrent TLS records across many kTLS sockets; on hardware crypto accelerators with shallow rings, -EBUSY occurs under ordinary attacker-generated throughput. No memory layout or victim state outside the attacker\u0027s influence is required.\\nPR:N - A kTLS-offloading server accepts connections from arbitrary unauthenticated clients (no client certificates in the typical deployment), and once the session is established the attacker only needs to send record data. No account or privilege on the target system is required.\\nUI:N - The bug triggers automatically during normal kTLS record encryption and decryption on an established connection. No action by any local user or administrator is needed.\\nS:U - The use-after-free, double free and page refcount underflow all occur within kernel memory managed by the same security authority. No VM, IOMMU or sandbox boundary is crossed.\\nC:H - The freed tls_rec / aead_req+tls_decrypt_ctx blocks are re-read after being reclaimed, yielding an attacker-groomable sock pointer and scatterlist, and the page refcount underflow from the spurious put_page() lets freed pages holding other tenants\u0027 data be re-observed. This is leverageable into arbitrary kernel memory disclosure.\\nI:H - The stale callback writes into freed memory (rec-\u003etx_ready, sge-\u003eoffset, ctx-\u003easync_wait.err) and the crypto engine writes attacker-supplied plaintext into pages already released, giving a controlled-content write primitive, compounded by a double kfree() of the decrypt buffer.\\nA:H - The use-after-free, double free and page refcount underflow reliably produce slab corruption and kernel panics, and the encrypt_pending/decrypt_pending underflow leaves tls_*crypt_async_wait() waiting on a completion that never arrives, hanging the socket close path.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"a54667f6728c2714a400f3c884727da74b6d1717\", \"lessThan\": \"3ade391adc584f17b5570fd205de3ad029090368\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a54667f6728c2714a400f3c884727da74b6d1717\", \"lessThan\": \"cd1bbca03f3c1d845ce274c0d0a66de8e5929f72\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a54667f6728c2714a400f3c884727da74b6d1717\", \"lessThan\": \"13eca403876bbea3716e82cdfe6f1e6febb38754\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a54667f6728c2714a400f3c884727da74b6d1717\", \"lessThan\": \"ab6397f072e5097f267abf5cb08a8004e6b17694\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a54667f6728c2714a400f3c884727da74b6d1717\", \"lessThan\": \"8590541473188741055d27b955db0777569438e3\", \"versionType\": \"git\"}], \"programFiles\": [\"net/tls/tls_sw.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"4.16\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"4.16\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"5.15.160\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.15.*\"}, {\"status\": \"unaffected\", \"version\": \"6.1.84\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.18\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.7.6\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.7.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"net/tls/tls_sw.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/3ade391adc584f17b5570fd205de3ad029090368\"}, {\"url\": \"https://git.kernel.org/stable/c/cd1bbca03f3c1d845ce274c0d0a66de8e5929f72\"}, {\"url\": \"https://git.kernel.org/stable/c/13eca403876bbea3716e82cdfe6f1e6febb38754\"}, {\"url\": \"https://git.kernel.org/stable/c/ab6397f072e5097f267abf5cb08a8004e6b17694\"}, {\"url\": \"https://git.kernel.org/stable/c/8590541473188741055d27b955db0777569438e3\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnet: tls: handle backlogging of crypto requests\\n\\nSince we\u0027re setting the CRYPTO_TFM_REQ_MAY_BACKLOG flag on our\\nrequests to the crypto API, crypto_aead_{encrypt,decrypt} can return\\n -EBUSY instead of -EINPROGRESS in valid situations. For example, when\\nthe cryptd queue for AESNI is full (easy to trigger with an\\nartificially low cryptd.cryptd_max_cpu_qlen), requests will be enqueued\\nto the backlog but still processed. In that case, the async callback\\nwill also be called twice: first with err == -EINPROGRESS, which it\\nseems we can just ignore, then with err == 0.\\n\\nCompared to Sabrina\u0027s original patch this version uses the new\\ntls_*crypt_async_wait() helpers and converts the EBUSY to\\nEINPROGRESS to avoid having to modify all the error handling\\npaths. The handling is identical.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.15.160\", \"versionStartIncluding\": \"4.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.1.84\", \"versionStartIncluding\": \"4.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.18\", \"versionStartIncluding\": \"4.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.7.6\", \"versionStartIncluding\": \"4.16\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8\", \"versionStartIncluding\": \"4.16\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:26:03.272Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-26584\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:26:03.272Z\", \"dateReserved\": \"2024-02-19T14:20:24.125Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-02-21T14:59:12.452Z\", \"assignerShortName\": \"Linux\"}",
      "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…