CVE-2026-23220 (GCVE-0-2026-23220)

Vulnerability from cvelistv5 – Published: 2026-02-18 14:53 – Updated: 2026-02-23 03:16
VLAI?
Title
ksmbd: fix infinite loop caused by next_smb2_rcv_hdr_off reset in error paths
Summary
In the Linux kernel, the following vulnerability has been resolved: ksmbd: fix infinite loop caused by next_smb2_rcv_hdr_off reset in error paths The problem occurs when a signed request fails smb2 signature verification check. In __process_request(), if check_sign_req() returns an error, set_smb2_rsp_status(work, STATUS_ACCESS_DENIED) is called. set_smb2_rsp_status() set work->next_smb2_rcv_hdr_off as zero. By resetting next_smb2_rcv_hdr_off to zero, the pointer to the next command in the chain is lost. Consequently, is_chained_smb2_message() continues to point to the same request header instead of advancing. If the header's NextCommand field is non-zero, the function returns true, causing __handle_ksmbd_work() to repeatedly process the same failed request in an infinite loop. This results in the kernel log being flooded with "bad smb2 signature" messages and high CPU usage. This patch fixes the issue by changing the return value from SERVER_HANDLER_CONTINUE to SERVER_HANDLER_ABORT. This ensures that the processing loop terminates immediately rather than attempting to continue from an invalidated offset.
Severity ?
No CVSS data available.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 943cebf9ea3415ddefcd670d24d8883e97ba3d60 , < fb3b66bd72deb5543addaefa67963b34fb163a7b (git)
Affected: be0f89d4419dc5413a1cf06db3671c9949be0d52 , < 5accdc5b7f28a81bbc5880ac0b8886e60c86e8c8 (git)
Affected: be0f89d4419dc5413a1cf06db3671c9949be0d52 , < f7b1c2f5642bbd60b1beef1f3298cbac81eb232c (git)
Affected: be0f89d4419dc5413a1cf06db3671c9949be0d52 , < 71b5e7c528315ca360a1825a4ad2f8ae48c5dc16 (git)
Affected: be0f89d4419dc5413a1cf06db3671c9949be0d52 , < 9135e791ec2709bcf0cda0335535c74762489498 (git)
Affected: be0f89d4419dc5413a1cf06db3671c9949be0d52 , < 010eb01ce23b34b50531448b0da391c7f05a72af (git)
Affected: 4b9b7ea1ffb1e34f01fa5726d0c184931b9ba565 (git)
Create a notification for this product.
    Linux Linux Affected: 6.6
Unaffected: 0 , < 6.6 (semver)
Unaffected: 6.1.164 , ≤ 6.1.* (semver)
Unaffected: 6.6.125 , ≤ 6.6.* (semver)
Unaffected: 6.12.72 , ≤ 6.12.* (semver)
Unaffected: 6.18.11 , ≤ 6.18.* (semver)
Unaffected: 6.19.1 , ≤ 6.19.* (semver)
Unaffected: 7.0-rc1 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/server/server.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "fb3b66bd72deb5543addaefa67963b34fb163a7b",
              "status": "affected",
              "version": "943cebf9ea3415ddefcd670d24d8883e97ba3d60",
              "versionType": "git"
            },
            {
              "lessThan": "5accdc5b7f28a81bbc5880ac0b8886e60c86e8c8",
              "status": "affected",
              "version": "be0f89d4419dc5413a1cf06db3671c9949be0d52",
              "versionType": "git"
            },
            {
              "lessThan": "f7b1c2f5642bbd60b1beef1f3298cbac81eb232c",
              "status": "affected",
              "version": "be0f89d4419dc5413a1cf06db3671c9949be0d52",
              "versionType": "git"
            },
            {
              "lessThan": "71b5e7c528315ca360a1825a4ad2f8ae48c5dc16",
              "status": "affected",
              "version": "be0f89d4419dc5413a1cf06db3671c9949be0d52",
              "versionType": "git"
            },
            {
              "lessThan": "9135e791ec2709bcf0cda0335535c74762489498",
              "status": "affected",
              "version": "be0f89d4419dc5413a1cf06db3671c9949be0d52",
              "versionType": "git"
            },
            {
              "lessThan": "010eb01ce23b34b50531448b0da391c7f05a72af",
              "status": "affected",
              "version": "be0f89d4419dc5413a1cf06db3671c9949be0d52",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "4b9b7ea1ffb1e34f01fa5726d0c184931b9ba565",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/server/server.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.6"
            },
            {
              "lessThan": "6.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.164",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.125",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.72",
              "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-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.164",
                  "versionStartIncluding": "6.1.71",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.125",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.72",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.11",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19.1",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0-rc1",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.15.145",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: fix infinite loop caused by next_smb2_rcv_hdr_off reset in error paths\n\nThe problem occurs when a signed request fails smb2 signature verification\ncheck. In __process_request(), if check_sign_req() returns an error,\nset_smb2_rsp_status(work, STATUS_ACCESS_DENIED) is called.\nset_smb2_rsp_status() set work-\u003enext_smb2_rcv_hdr_off as zero. By resetting\nnext_smb2_rcv_hdr_off to zero, the pointer to the next command in the chain\nis lost. Consequently, is_chained_smb2_message() continues to point to\nthe same request header instead of advancing. If the header\u0027s NextCommand\nfield is non-zero, the function returns true, causing __handle_ksmbd_work()\nto repeatedly process the same failed request in an infinite loop.\nThis results in the kernel log being flooded with \"bad smb2 signature\"\nmessages and high CPU usage.\n\nThis patch fixes the issue by changing the return value from\nSERVER_HANDLER_CONTINUE to SERVER_HANDLER_ABORT. This ensures that\nthe processing loop terminates immediately rather than attempting to\ncontinue from an invalidated offset."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-02-23T03:16:23.982Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/fb3b66bd72deb5543addaefa67963b34fb163a7b"
        },
        {
          "url": "https://git.kernel.org/stable/c/5accdc5b7f28a81bbc5880ac0b8886e60c86e8c8"
        },
        {
          "url": "https://git.kernel.org/stable/c/f7b1c2f5642bbd60b1beef1f3298cbac81eb232c"
        },
        {
          "url": "https://git.kernel.org/stable/c/71b5e7c528315ca360a1825a4ad2f8ae48c5dc16"
        },
        {
          "url": "https://git.kernel.org/stable/c/9135e791ec2709bcf0cda0335535c74762489498"
        },
        {
          "url": "https://git.kernel.org/stable/c/010eb01ce23b34b50531448b0da391c7f05a72af"
        }
      ],
      "title": "ksmbd: fix infinite loop caused by next_smb2_rcv_hdr_off reset in error paths",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-23220",
    "datePublished": "2026-02-18T14:53:23.376Z",
    "dateReserved": "2026-01-13T15:37:45.987Z",
    "dateUpdated": "2026-02-23T03:16:23.982Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-23220\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-02-18T16:22:31.700\",\"lastModified\":\"2026-02-23T04:16:00.267\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nksmbd: fix infinite loop caused by next_smb2_rcv_hdr_off reset in error paths\\n\\nThe problem occurs when a signed request fails smb2 signature verification\\ncheck. In __process_request(), if check_sign_req() returns an error,\\nset_smb2_rsp_status(work, STATUS_ACCESS_DENIED) is called.\\nset_smb2_rsp_status() set work-\u003enext_smb2_rcv_hdr_off as zero. By resetting\\nnext_smb2_rcv_hdr_off to zero, the pointer to the next command in the chain\\nis lost. Consequently, is_chained_smb2_message() continues to point to\\nthe same request header instead of advancing. If the header\u0027s NextCommand\\nfield is non-zero, the function returns true, causing __handle_ksmbd_work()\\nto repeatedly process the same failed request in an infinite loop.\\nThis results in the kernel log being flooded with \\\"bad smb2 signature\\\"\\nmessages and high CPU usage.\\n\\nThis patch fixes the issue by changing the return value from\\nSERVER_HANDLER_CONTINUE to SERVER_HANDLER_ABORT. This ensures that\\nthe processing loop terminates immediately rather than attempting to\\ncontinue from an invalidated offset.\"},{\"lang\":\"es\",\"value\":\"Se ha resuelto la siguiente vulnerabilidad en el kernel de Linux:\\n\\nksmbd: corrige un bucle infinito causado por el reinicio de next_smb2_rcv_hdr_off en las rutas de error\\n\\nEl problema ocurre cuando una solicitud firmada falla la verificaci\u00f3n de firma smb2. En __process_request(), si check_sign_req() devuelve un error, se llama a set_smb2_rsp_status(work, STATUS_ACCESS_DENIED). set_smb2_rsp_status() establece work-\u0026gt;next_smb2_rcv_hdr_off a cero. Al reiniciar next_smb2_rcv_hdr_off a cero, el puntero al siguiente comando en la cadena se pierde. En consecuencia, is_chained_smb2_message() contin\u00faa apuntando a la misma cabecera de solicitud en lugar de avanzar. Si el campo NextCommand de la cabecera no es cero, la funci\u00f3n devuelve verdadero, lo que hace que __handle_ksmbd_work() procese repetidamente la misma solicitud fallida en un bucle infinito. Esto resulta en el registro del kernel siendo inundado con mensajes de \u0027firma smb2 incorrecta\u0027 y un alto uso de CPU.\\n\\nEste parche corrige el problema cambiando el valor de retorno de SERVER_HANDLER_CONTINUE a SERVER_HANDLER_ABORT. Esto asegura que el bucle de procesamiento termine inmediatamente en lugar de intentar continuar desde un desplazamiento invalidado.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/010eb01ce23b34b50531448b0da391c7f05a72af\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/5accdc5b7f28a81bbc5880ac0b8886e60c86e8c8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/71b5e7c528315ca360a1825a4ad2f8ae48c5dc16\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/9135e791ec2709bcf0cda0335535c74762489498\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f7b1c2f5642bbd60b1beef1f3298cbac81eb232c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/fb3b66bd72deb5543addaefa67963b34fb163a7b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
  }
}


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 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…