CVE-2026-90176 (GCVE-0-2026-90176)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:07 – Updated: 2026-09-18 17:53
VLAI
Title
ksmbd: Do not skip lock checks for single-byte ranges
Summary
In the Linux kernel, the following vulnerability has been resolved: ksmbd: Do not skip lock checks for single-byte ranges check_lock_range() uses inclusive ranges. Its callers pass the end offset as start + length - 1, so start == end represents a valid single-byte range rather than an empty range. The start == end shortcut therefore skips mandatory byte-range lock checks for one-byte reads, writes, copychunk operations and one-byte truncate ranges. A conflicting lock covering that byte is not checked and the operation is allowed to proceed. Remove the shortcut. The truncate size == inode->i_size case is already handled by only calling check_lock_range() when the new size differs from the current file size.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 52fcbb92e0d3acfd1448b2a43b6595d540da5295 , < a89cc145832e81c32199d4ca2e1ea8bd51ed601d (git)
Affected: da29cd197246c85c0473259f1cad897d9d28faea , < 993e0158331d37c04da18efe551b5e1e35fb3078 (git)
Affected: a6f4cfa3783804336491e0edcb250c25f9b59d33 , < f751d6e39d4c937c45f8fedc66699aa7d2d52288 (git)
Affected: 571204e4758a528fbd67330bd4b0dfbdafb33dd8 , < 84c2d8e807ac489f5c91769293fb15dfdae8bae8 (git)
Affected: 5d510ac31626ed157d2182149559430350cf2104 , < 07a9e289ff7edcc004f58952405f8a65c4e37512 (git)
Affected: 5d510ac31626ed157d2182149559430350cf2104 , < d40c24634fe077a0dc91fd11fccf44ce12b454d5 (git)
Affected: 6.1.160 , < 6.1.188 (semver)
Affected: 6.6.120 , < 6.6.157 (semver)
Affected: 6.12.64 , < 6.12.110 (semver)
Affected: 6.18.3 , < 6.18.52 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 6.19
Unaffected: 0 , < 6.19 (semver)
Unaffected: 6.1.188 , ≤ 6.1.* (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (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": [
            "fs/smb/server/vfs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "a89cc145832e81c32199d4ca2e1ea8bd51ed601d",
              "status": "affected",
              "version": "52fcbb92e0d3acfd1448b2a43b6595d540da5295",
              "versionType": "git"
            },
            {
              "lessThan": "993e0158331d37c04da18efe551b5e1e35fb3078",
              "status": "affected",
              "version": "da29cd197246c85c0473259f1cad897d9d28faea",
              "versionType": "git"
            },
            {
              "lessThan": "f751d6e39d4c937c45f8fedc66699aa7d2d52288",
              "status": "affected",
              "version": "a6f4cfa3783804336491e0edcb250c25f9b59d33",
              "versionType": "git"
            },
            {
              "lessThan": "84c2d8e807ac489f5c91769293fb15dfdae8bae8",
              "status": "affected",
              "version": "571204e4758a528fbd67330bd4b0dfbdafb33dd8",
              "versionType": "git"
            },
            {
              "lessThan": "07a9e289ff7edcc004f58952405f8a65c4e37512",
              "status": "affected",
              "version": "5d510ac31626ed157d2182149559430350cf2104",
              "versionType": "git"
            },
            {
              "lessThan": "d40c24634fe077a0dc91fd11fccf44ce12b454d5",
              "status": "affected",
              "version": "5d510ac31626ed157d2182149559430350cf2104",
              "versionType": "git"
            },
            {
              "lessThan": "6.1.188",
              "status": "affected",
              "version": "6.1.160",
              "versionType": "semver"
            },
            {
              "lessThan": "6.6.157",
              "status": "affected",
              "version": "6.6.120",
              "versionType": "semver"
            },
            {
              "lessThan": "6.12.110",
              "status": "affected",
              "version": "6.12.64",
              "versionType": "semver"
            },
            {
              "lessThan": "6.18.52",
              "status": "affected",
              "version": "6.18.3",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/server/vfs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.19"
            },
            {
              "lessThan": "6.19",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.188",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "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.1.188",
                  "versionStartIncluding": "6.1.160",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "6.6.120",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "6.12.64",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "6.18.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nksmbd: Do not skip lock checks for single-byte ranges\n\ncheck_lock_range() uses inclusive ranges. Its callers pass the end\noffset as start + length - 1, so start == end represents a valid\nsingle-byte range rather than an empty range.\n\nThe start == end shortcut therefore skips mandatory byte-range lock\nchecks for one-byte reads, writes, copychunk operations and one-byte\ntruncate ranges. A conflicting lock covering that byte is not checked\nand the operation is allowed to proceed.\n\nRemove the shortcut. The truncate size == inode-\u003ei_size case is already\nhandled by only calling check_lock_range() when the new size differs\nfrom the current file size."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - The skip is driven by attacker-controlled range length in SMB2 PDUs: smb2_read()/smb2_write() pass Length==1 into ksmbd_vfs_read/write, set_end_of_file_info() passes a 1-byte size change to ksmbd_vfs_truncate(), and FSCTL_SRV_COPYCHUNK Length==1 reaches ksmbd_vfs_copy_file_ranges(); those messages arrive on the ksmbd TCP connection in ksmbd_conn_handler_loop().\nAC:L - Callers pass an inclusive end of start+length-1, so Length==1 makes start==end and the shortcut in check_lock_range() returns 0 before walking ctx-\u003eflc_posix; the attacker sets Length, Offset, EndOfFile, or COPYCHUNK Length in the PDU, and the skip is deterministic with no race or uncontrollable layout.\nPR:L - smb2_check_user_session() requires SMB2_SESSION_VALID before SMB2_READ/WRITE/SET_INFO/IOCTL, smb2_get_ksmbd_tcon() requires a tree connect, and the handlers resolve a fid via ksmbd_lookup_fd_slow(); this is not negotiate or session-setup, so an authenticated SMB share user is required.\nUI:N - The attacker, holding their own session, tree connect, and open handle, sends the one-byte SMB2 READ, WRITE, SET_INFO FILE_END_OF_FILE_INFORMATION, or FSCTL_SRV_COPYCHUNK; no other user must mount media or confirm an action.\nS:U - Bypassing check_lock_range() only allows this ksmbd worker to read or write host file bytes that conflicting FL_POSIX locks on flc_posix should have denied; there is no VM escape, IOMMU bypass, or sandbox boundary crossing.\nC:H - ksmbd_vfs_read() and the COPYCHUNK source check skip exclusive F_WRLCK locks belonging to another filp when start==end, so kernel_read() returns that byte; repeating SMB2 READ at chosen offsets discloses every exclusively locked byte of a file the attacker can open.\nI:H - ksmbd_vfs_write(), ksmbd_vfs_truncate() for size==i_size\u00b11, and COPYCHUNK dest checks likewise skip conflicting F_RDLCK/F_WRLCK, so kernel_write() and vfs_truncate() can overwrite locked bytes or change size by one at attacker-chosen offsets.\nA:N - When the shortcut hits, check_lock_range() returns 0 and the existing kernel_read/kernel_write/vfs_truncate path runs normally; the bug does not NULL-deref, BUG, deadlock, or panic, and the ksmbd worker keeps serving."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-18T17:53:36.125Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/a89cc145832e81c32199d4ca2e1ea8bd51ed601d"
        },
        {
          "url": "https://git.kernel.org/stable/c/993e0158331d37c04da18efe551b5e1e35fb3078"
        },
        {
          "url": "https://git.kernel.org/stable/c/f751d6e39d4c937c45f8fedc66699aa7d2d52288"
        },
        {
          "url": "https://git.kernel.org/stable/c/84c2d8e807ac489f5c91769293fb15dfdae8bae8"
        },
        {
          "url": "https://git.kernel.org/stable/c/07a9e289ff7edcc004f58952405f8a65c4e37512"
        },
        {
          "url": "https://git.kernel.org/stable/c/d40c24634fe077a0dc91fd11fccf44ce12b454d5"
        }
      ],
      "title": "ksmbd: Do not skip lock checks for single-byte ranges",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90176",
    "datePublished": "2026-09-17T16:07:02.433Z",
    "dateReserved": "2026-09-11T19:38:34.791Z",
    "dateUpdated": "2026-09-18T17:53:36.125Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90176",
      "date": "2026-09-25",
      "epss": "0.00522",
      "percentile": "0.41889"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "fs/smb/server/vfs.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "a89cc145832e81c32199d4ca2e1ea8bd51ed601d",
                    "status": "affected",
                    "version": "52fcbb92e0d3acfd1448b2a43b6595d540da5295",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "993e0158331d37c04da18efe551b5e1e35fb3078",
                    "status": "affected",
                    "version": "da29cd197246c85c0473259f1cad897d9d28faea",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "f751d6e39d4c937c45f8fedc66699aa7d2d52288",
                    "status": "affected",
                    "version": "a6f4cfa3783804336491e0edcb250c25f9b59d33",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "84c2d8e807ac489f5c91769293fb15dfdae8bae8",
                    "status": "affected",
                    "version": "571204e4758a528fbd67330bd4b0dfbdafb33dd8",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "07a9e289ff7edcc004f58952405f8a65c4e37512",
                    "status": "affected",
                    "version": "5d510ac31626ed157d2182149559430350cf2104",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "d40c24634fe077a0dc91fd11fccf44ce12b454d5",
                    "status": "affected",
                    "version": "5d510ac31626ed157d2182149559430350cf2104",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "6.1.188",
                    "status": "affected",
                    "version": "6.1.160",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "6.6.157",
                    "status": "affected",
                    "version": "6.6.120",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "6.12.110",
                    "status": "affected",
                    "version": "6.12.64",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "6.18.52",
                    "status": "affected",
                    "version": "6.18.3",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "fs/smb/server/vfs.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.19"
                  },
                  {
                    "lessThan": "6.19",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.188",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.157",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.110",
                    "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\nksmbd: Do not skip lock checks for single-byte ranges\n\ncheck_lock_range() uses inclusive ranges. Its callers pass the end\noffset as start + length - 1, so start == end represents a valid\nsingle-byte range rather than an empty range.\n\nThe start == end shortcut therefore skips mandatory byte-range lock\nchecks for one-byte reads, writes, copychunk operations and one-byte\ntruncate ranges. A conflicting lock covering that byte is not checked\nand the operation is allowed to proceed.\n\nRemove the shortcut. The truncate size == inode-\u003ei_size case is already\nhandled by only calling check_lock_range() when the new size differs\nfrom the current file size."
          }
        ],
        "id": "CVE-2026-90176",
        "lastModified": "2026-09-18T18:17:45.533",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "NONE",
                "baseScore": 8.1,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N",
                "version": "3.1"
              },
              "exploitabilityScore": 2.8,
              "impactScore": 5.2,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-17T17:17:11.387",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/07a9e289ff7edcc004f58952405f8a65c4e37512"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/84c2d8e807ac489f5c91769293fb15dfdae8bae8"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/993e0158331d37c04da18efe551b5e1e35fb3078"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a89cc145832e81c32199d4ca2e1ea8bd51ed601d"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/d40c24634fe077a0dc91fd11fccf44ce12b454d5"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/f751d6e39d4c937c45f8fedc66699aa7d2d52288"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-21T16:31:34Z",
      "cve": "CVE-2026-90176",
      "id": "CVE-2026-90176",
      "initial_release_date": "2026-09-18T00:20:20Z",
      "product_status:known_not_affected": "347",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-90176",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-90176.json",
      "version": "4"
    }
  }
}



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…