CVE-2026-31539 (GCVE-0-2026-31539)
Vulnerability from cvelistv5
Published
2026-04-24 14:30
Modified
2026-10-19 18:55
Summary
In the Linux kernel, the following vulnerability has been resolved: smb: smbdirect: introduce smbdirect_socket.recv_io.credits.available The logic off managing recv credits by counting posted recv_io and granted credits is racy. That's because the peer might already consumed a credit, but between receiving the incoming recv at the hardware and processing the completion in the 'recv_done' functions we likely have a window where we grant credits, which don't really exist. So we better have a decicated counter for the available credits, which will be incremented when we posted new recv buffers and drained when we grant the credits to the peer.
Impacted products
Vendor Product Version
Linux Linux Version: 5fb9b459b3686e366640edd4e62805ef7b4de927
Version: 5fb9b459b3686e366640edd4e62805ef7b4de927
Version: 5fb9b459b3686e366640edd4e62805ef7b4de927
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-31539",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "yes"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-16T15:10:46.426998Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "cweId": "CWE-362",
                "description": "CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization (\u0027Race Condition\u0027)",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-19T18:55:58.491Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/common/smbdirect/smbdirect_socket.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "e811e60e1cc79923c4388146eb1fa26a7482731e",
              "status": "affected",
              "version": "5fb9b459b3686e366640edd4e62805ef7b4de927",
              "versionType": "git"
            },
            {
              "lessThan": "f99996870222b598914a1f49d7375dc23752c237",
              "status": "affected",
              "version": "5fb9b459b3686e366640edd4e62805ef7b4de927",
              "versionType": "git"
            },
            {
              "lessThan": "6e3c5052f9686192e178806e017b7377155f4bab",
              "status": "affected",
              "version": "5fb9b459b3686e366640edd4e62805ef7b4de927",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/common/smbdirect/smbdirect_socket.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.18"
            },
            {
              "lessThan": "6.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.11",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.19.*",
              "status": "unaffected",
              "version": "6.19.1",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.0",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.11",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19.1",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nsmb: smbdirect: introduce smbdirect_socket.recv_io.credits.available\n\nThe logic off managing recv credits by counting posted recv_io and\ngranted credits is racy.\n\nThat\u0027s because the peer might already consumed a credit,\nbut between receiving the incoming recv at the hardware\nand processing the completion in the \u0027recv_done\u0027 functions\nwe likely have a window where we grant credits, which\ndon\u0027t really exist.\n\nSo we better have a decicated counter for the\navailable credits, which will be incremented\nwhen we posted new recv buffers and drained when\nwe grant the credits to the peer."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - SMBDirect is reached by a remote RDMA peer through RDMA CM listeners on SMBDirect/SMB ports such as 5445 and 445. The ksmbd server path processes the affected negotiation and data-transfer credit handling from network-originated RDMA messages.\nAC:L - The issue is a receive-credit accounting race, but the remote peer can repeatedly drive both message arrival and credit-request/response behavior with crafted SMBDirect traffic. No unusual victim state or uncontrollable condition is required beyond an enabled SMBDirect RDMA deployment.\nPR:N - The server-side path accepts the RDMA connection and performs SMBDirect negotiation and data-transfer credit handling before SMB session authentication. A remote peer does not need SMB credentials to reach the vulnerable credit logic.\nUI:N - Exploitation against the server path requires only network/RDMA traffic from the attacker. No local user or administrator action is needed after the service is exposed.\nS:U - The impact remains within the kernel SMBDirect/SMB service security authority. There is no VM escape, IOMMU bypass, or cross-authority boundary crossing.\nC:N - The bug overgrants receive credits but does not expose a kernel read primitive; incoming payload bounds are checked before reassembly. An RDMA send without a posted receive should produce transport/RNR failure rather than disclose memory.\nI:N - The investigation did not identify an arbitrary write or memory-corruption primitive. The false credit causes receive-queue/transport state inconsistency, not attacker-controlled modification of kernel data.\nA:H - False credits can allow the peer to send when no real receive buffer is posted, causing RDMA QP/transport errors and SMBDirect disconnects with RNR retries disabled. Because this is remotely and unauthenticatedly repeatable against the exposed SMBDirect service, availability impact is high."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:23:24.146Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/e811e60e1cc79923c4388146eb1fa26a7482731e"
        },
        {
          "url": "https://git.kernel.org/stable/c/f99996870222b598914a1f49d7375dc23752c237"
        },
        {
          "url": "https://git.kernel.org/stable/c/6e3c5052f9686192e178806e017b7377155f4bab"
        }
      ],
      "title": "smb: smbdirect: introduce smbdirect_socket.recv_io.credits.available",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-31539",
    "datePublished": "2026-04-24T14:30:26.326Z",
    "dateReserved": "2026-03-09T15:48:24.114Z",
    "dateUpdated": "2026-10-19T18:55:58.491Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-31539\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-10-16T15:10:46.426998Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-362\", \"description\": \"CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization (\u0027Race Condition\u0027)\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-10-16T15:10:46.960Z\"}}], \"cna\": {\"title\": \"smb: smbdirect: introduce smbdirect_socket.recv_io.credits.available\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.5, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:N - SMBDirect is reached by a remote RDMA peer through RDMA CM listeners on SMBDirect/SMB ports such as 5445 and 445. The ksmbd server path processes the affected negotiation and data-transfer credit handling from network-originated RDMA messages.\\nAC:L - The issue is a receive-credit accounting race, but the remote peer can repeatedly drive both message arrival and credit-request/response behavior with crafted SMBDirect traffic. No unusual victim state or uncontrollable condition is required beyond an enabled SMBDirect RDMA deployment.\\nPR:N - The server-side path accepts the RDMA connection and performs SMBDirect negotiation and data-transfer credit handling before SMB session authentication. A remote peer does not need SMB credentials to reach the vulnerable credit logic.\\nUI:N - Exploitation against the server path requires only network/RDMA traffic from the attacker. No local user or administrator action is needed after the service is exposed.\\nS:U - The impact remains within the kernel SMBDirect/SMB service security authority. There is no VM escape, IOMMU bypass, or cross-authority boundary crossing.\\nC:N - The bug overgrants receive credits but does not expose a kernel read primitive; incoming payload bounds are checked before reassembly. An RDMA send without a posted receive should produce transport/RNR failure rather than disclose memory.\\nI:N - The investigation did not identify an arbitrary write or memory-corruption primitive. The false credit causes receive-queue/transport state inconsistency, not attacker-controlled modification of kernel data.\\nA:H - False credits can allow the peer to send when no real receive buffer is posted, causing RDMA QP/transport errors and SMBDirect disconnects with RNR retries disabled. Because this is remotely and unauthenticatedly repeatable against the exposed SMBDirect service, availability impact is high.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5fb9b459b3686e366640edd4e62805ef7b4de927\", \"lessThan\": \"e811e60e1cc79923c4388146eb1fa26a7482731e\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"5fb9b459b3686e366640edd4e62805ef7b4de927\", \"lessThan\": \"f99996870222b598914a1f49d7375dc23752c237\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"5fb9b459b3686e366640edd4e62805ef7b4de927\", \"lessThan\": \"6e3c5052f9686192e178806e017b7377155f4bab\", \"versionType\": \"git\"}], \"programFiles\": [\"fs/smb/common/smbdirect/smbdirect_socket.h\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.18\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.18\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.18.11\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.18.*\"}, {\"status\": \"unaffected\", \"version\": \"6.19.1\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.19.*\"}, {\"status\": \"unaffected\", \"version\": \"7.0\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"fs/smb/common/smbdirect/smbdirect_socket.h\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/e811e60e1cc79923c4388146eb1fa26a7482731e\"}, {\"url\": \"https://git.kernel.org/stable/c/f99996870222b598914a1f49d7375dc23752c237\"}, {\"url\": \"https://git.kernel.org/stable/c/6e3c5052f9686192e178806e017b7377155f4bab\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nsmb: smbdirect: introduce smbdirect_socket.recv_io.credits.available\\n\\nThe logic off managing recv credits by counting posted recv_io and\\ngranted credits is racy.\\n\\nThat\u0027s because the peer might already consumed a credit,\\nbut between receiving the incoming recv at the hardware\\nand processing the completion in the \u0027recv_done\u0027 functions\\nwe likely have a window where we grant credits, which\\ndon\u0027t really exist.\\n\\nSo we better have a decicated counter for the\\navailable credits, which will be incremented\\nwhen we posted new recv buffers and drained when\\nwe grant the credits to the peer.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.18.11\", \"versionStartIncluding\": \"6.18\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.19.1\", \"versionStartIncluding\": \"6.18\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"7.0\", \"versionStartIncluding\": \"6.18\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T12:23:24.146Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-31539\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-10-19T18:55:58.491Z\", \"dateReserved\": \"2026-03-09T15:48:24.114Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2026-04-24T14:30:26.326Z\", \"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…