GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-89641 (GCVE-0-2026-89641)

Vulnerability from cvelistv5 – Published: 2026-09-11 19:45 – Updated: 2026-09-13 06:32
VLAI
Title
cifs: clear tcon after cifsFileInfo_put() in cifs_file_set_size()
Summary
In the Linux kernel, the following vulnerability has been resolved: cifs: clear tcon after cifsFileInfo_put() in cifs_file_set_size() When the else branch of cifs_file_set_size() finds a writable file handle via find_writable_file(), it borrows tcon and server from the handle's tlink, attempts the handle-based set_file_size() RPC, and then releases the handle with cifsFileInfo_put(). If set_file_size() fails, execution falls through to the path-based fallback, which reuses the borrowed tcon and server under the "if (tcon == NULL)" guard. Since tcon is not NULL at that point, the guard is skipped. If cifsFileInfo_put() dropped the last reference on a tlink that was already removed from the tlink tree (TCON_LINK_IN_TREE cleared, as happens during reconnection or session teardown), cifs_put_tlink() will have freed tcon; the subsequent set_path_size() call is then a use-after-free. Setting tcon = NULL after cifsFileInfo_put() causes the existing guard to take the cifs_sb_tlink() path, which acquires a fresh reference for the path-based operation or fails cleanly if the session is gone.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 110fee6b9bb58a5c50047fc2594d415f741b591e , < 4f18c9e7ee464aaae5cd9fccdb943b3fcb4655d4 (git)
Affected: 110fee6b9bb58a5c50047fc2594d415f741b591e , < 4bea15d9c7683218f57b8c1f5f0aa75cab76af8d (git)
Affected: 110fee6b9bb58a5c50047fc2594d415f741b591e , < b96db32fed8dfb2478d7c208f89bf383beed1535 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.18
Unaffected: 0 , < 6.18 (semver)
Unaffected: 6.18.50 , ≤ 6.18.* (semver)
Unaffected: 7.2.4 , ≤ 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/client/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "4f18c9e7ee464aaae5cd9fccdb943b3fcb4655d4",
              "status": "affected",
              "version": "110fee6b9bb58a5c50047fc2594d415f741b591e",
              "versionType": "git"
            },
            {
              "lessThan": "4bea15d9c7683218f57b8c1f5f0aa75cab76af8d",
              "status": "affected",
              "version": "110fee6b9bb58a5c50047fc2594d415f741b591e",
              "versionType": "git"
            },
            {
              "lessThan": "b96db32fed8dfb2478d7c208f89bf383beed1535",
              "status": "affected",
              "version": "110fee6b9bb58a5c50047fc2594d415f741b591e",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/client/inode.c"
          ],
          "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.50",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.4",
              "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.18.50",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.4",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncifs: clear tcon after cifsFileInfo_put() in cifs_file_set_size()\n\nWhen the else branch of cifs_file_set_size() finds a writable file handle\nvia find_writable_file(), it borrows tcon and server from the handle\u0027s\ntlink, attempts the handle-based set_file_size() RPC, and then releases\nthe handle with cifsFileInfo_put().\n\nIf set_file_size() fails, execution falls through to the path-based\nfallback, which reuses the borrowed tcon and server under the\n\"if (tcon == NULL)\" guard.  Since tcon is not NULL at that point, the\nguard is skipped.  If cifsFileInfo_put() dropped the last reference on a\ntlink that was already removed from the tlink tree (TCON_LINK_IN_TREE\ncleared, as happens during reconnection or session teardown),\ncifs_put_tlink() will have freed tcon; the subsequent set_path_size()\ncall is then a use-after-free.\n\nSetting tcon = NULL after cifsFileInfo_put() causes the existing guard\nto take the cifs_sb_tlink() path, which acquires a fresh reference for\nthe path-based operation or fails cleanly if the session is gone."
        }
      ],
      "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 UAF is in the CIFS client setattr path (fs/smb/client/inode.c cifs_file_set_size), reached only via local VFS truncate/setattr on a mounted SMB share (sys_truncate \u2192 vfs_truncate \u2192 notify_change \u2192 cifs_setattr), not via ksmbd or unsolicited SMB receive processing.\nAC:L - A local attacker controls both sides: keep a writable handle open, issue truncate(2) to hit the find_writable_file() else branch, fail handle-based set_file_size (controlled/malicious server or reconnect), and concurrently umount/teardown so TCON_LINK_IN_TREE is already cleared when cifsFileInfo_put() drops the last tlink ref.\nPR:L - Any unprivileged user with write access on an existing CIFS mount can invoke truncate(2); vfs_truncate only requires MAY_WRITE and setattr_prepare does not demand CAP_SYS_ADMIN. CIFS is not FS_USERNS_MOUNT, but the vulnerable path itself needs no init-namespace capability.\nUI:N - The attacker performs open/truncate (and optional umount) themselves on a reachable CIFS mount such as an enterprise automount or a share they mounted; no separate victim action is required at exploit time.\nS:U - This is a standard in-kernel heap use-after-free of struct cifs_tcon on the client host, enabling privilege escalation within the same kernel security authority and not a VM, IOMMU, or sandbox escape.\nC:H - After cifsFileInfo_put() can free tcon, set_path_size()/smb2_compound_op() reads the freed cifs_tcon; kernel UAF of this heap object enables reuse/spraying and arbitrary kernel memory disclosure.\nI:H - The same freed tcon is passed into SMB2 compound operations that write tcon fields and follow tcon-\u003eses pointers, so heap spraying yields arbitrary write and potential control-flow hijack primitives.\nA:H - Use-after-free of tcon in the path-based set_path_size fallback causes kernel oops/panic even without full exploitation, fully denying availability."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-13T06:32:21.616Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4f18c9e7ee464aaae5cd9fccdb943b3fcb4655d4"
        },
        {
          "url": "https://git.kernel.org/stable/c/4bea15d9c7683218f57b8c1f5f0aa75cab76af8d"
        },
        {
          "url": "https://git.kernel.org/stable/c/b96db32fed8dfb2478d7c208f89bf383beed1535"
        }
      ],
      "title": "cifs: clear tcon after cifsFileInfo_put() in cifs_file_set_size()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-89641",
    "datePublished": "2026-09-11T19:45:34.036Z",
    "dateReserved": "2026-09-11T19:38:34.740Z",
    "dateUpdated": "2026-09-13T06:32:21.616Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-89641",
      "date": "2026-09-16",
      "epss": "0.0014",
      "percentile": "0.03695"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-89641\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-09-11T20:19:49.867\",\"lastModified\":\"2026-09-13T07:17:29.377\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ncifs: clear tcon after cifsFileInfo_put() in cifs_file_set_size()\\n\\nWhen the else branch of cifs_file_set_size() finds a writable file handle\\nvia find_writable_file(), it borrows tcon and server from the handle\u0027s\\ntlink, attempts the handle-based set_file_size() RPC, and then releases\\nthe handle with cifsFileInfo_put().\\n\\nIf set_file_size() fails, execution falls through to the path-based\\nfallback, which reuses the borrowed tcon and server under the\\n\\\"if (tcon == NULL)\\\" guard.  Since tcon is not NULL at that point, the\\nguard is skipped.  If cifsFileInfo_put() dropped the last reference on a\\ntlink that was already removed from the tlink tree (TCON_LINK_IN_TREE\\ncleared, as happens during reconnection or session teardown),\\ncifs_put_tlink() will have freed tcon; the subsequent set_path_size()\\ncall is then a use-after-free.\\n\\nSetting tcon = NULL after cifsFileInfo_put() causes the existing guard\\nto take the cifs_sb_tlink() path, which acquires a fresh reference for\\nthe path-based operation or fails cleanly if the session is gone.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"fs/smb/client/inode.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"110fee6b9bb58a5c50047fc2594d415f741b591e\",\"lessThan\":\"4f18c9e7ee464aaae5cd9fccdb943b3fcb4655d4\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"110fee6b9bb58a5c50047fc2594d415f741b591e\",\"lessThan\":\"4bea15d9c7683218f57b8c1f5f0aa75cab76af8d\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"110fee6b9bb58a5c50047fc2594d415f741b591e\",\"lessThan\":\"b96db32fed8dfb2478d7c208f89bf383beed1535\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"fs/smb/client/inode.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.18\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.18\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.50\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2.4\",\"lessThanOrEqual\":\"7.2.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.3-rc1\",\"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/4bea15d9c7683218f57b8c1f5f0aa75cab76af8d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/4f18c9e7ee464aaae5cd9fccdb943b3fcb4655d4\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b96db32fed8dfb2478d7c208f89bf383beed1535\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-15T06:19:15+00:00",
      "cve": "CVE-2026-89641",
      "id": "CVE-2026-89641",
      "initial_release_date": "2026-09-11T00:00:00+00:00",
      "product_status:known_affected": "185",
      "product_status:known_not_affected": "91",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: cifs: clear tcon after cifsFileInfo_put() in cifs_file_set_size()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89641.json",
      "version": "3"
    }
  }
}



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…

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…