CVE-2026-68178 (GCVE-0-2026-68178)

Vulnerability from cvelistv5 – Published: 2026-08-10 11:59 – Updated: 2026-08-17 05:00
VLAI
Title
misc: nsm: pin the module while the device is open
Summary
In the Linux kernel, the following vulnerability has been resolved: misc: nsm: pin the module while the device is open misc_open() installs a misc driver's file operations with fops_get(), which pins file_operations::owner before replacing the file's f_op. The NSM misc device leaves nsm_dev_fops.owner unset, so opening /dev/nsm does not take a module reference on the nsm driver. If the driver is built as a module, an open file descriptor can therefore survive rmmod of the module that provides its ioctl callbacks. A later ioctl through that descriptor can call into unloaded module text. Set nsm_dev_fops.owner to THIS_MODULE so the misc core holds the module while any /dev/nsm file descriptor is open, matching the lifetime expectation for the installed file operations.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: b9873755a6c8ccfce79094c4dce9efa3ecb1a749 , < 1996639f824ce9468395cdb7bcb8f467fa787e77 (git)
Affected: b9873755a6c8ccfce79094c4dce9efa3ecb1a749 , < 1da310b94504d42001e9c32c43c5dc105b777e5f (git)
Affected: b9873755a6c8ccfce79094c4dce9efa3ecb1a749 , < 9e9a82d00c3d10129fc310a7547b24a679d5d920 (git)
Affected: b9873755a6c8ccfce79094c4dce9efa3ecb1a749 , < 3b231f1e9990f4c21220d0a69733ce2105891ff9 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.8
Unaffected: 0 , < 6.8 (semver)
Unaffected: 6.12.101 , ≤ 6.12.* (semver)
Unaffected: 6.18.42 , ≤ 6.18.* (semver)
Unaffected: 7.1.6 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/misc/nsm.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "1996639f824ce9468395cdb7bcb8f467fa787e77",
              "status": "affected",
              "version": "b9873755a6c8ccfce79094c4dce9efa3ecb1a749",
              "versionType": "git"
            },
            {
              "lessThan": "1da310b94504d42001e9c32c43c5dc105b777e5f",
              "status": "affected",
              "version": "b9873755a6c8ccfce79094c4dce9efa3ecb1a749",
              "versionType": "git"
            },
            {
              "lessThan": "9e9a82d00c3d10129fc310a7547b24a679d5d920",
              "status": "affected",
              "version": "b9873755a6c8ccfce79094c4dce9efa3ecb1a749",
              "versionType": "git"
            },
            {
              "lessThan": "3b231f1e9990f4c21220d0a69733ce2105891ff9",
              "status": "affected",
              "version": "b9873755a6c8ccfce79094c4dce9efa3ecb1a749",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/misc/nsm.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.8"
            },
            {
              "lessThan": "6.8",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.101",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.42",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.101",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.42",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.6",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmisc: nsm: pin the module while the device is open\n\nmisc_open() installs a misc driver\u0027s file operations with fops_get(),\nwhich pins file_operations::owner before replacing the file\u0027s f_op.  The\nNSM misc device leaves nsm_dev_fops.owner unset, so opening /dev/nsm does\nnot take a module reference on the nsm driver.\n\nIf the driver is built as a module, an open file descriptor can therefore\nsurvive rmmod of the module that provides its ioctl callbacks.  A later\nioctl through that descriptor can call into unloaded module text.\n\nSet nsm_dev_fops.owner to THIS_MODULE so the misc core holds the module\nwhile any /dev/nsm file descriptor is open, matching the lifetime\nexpectation for the installed file operations."
        }
      ],
      "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 bug is reached only via local open()/ioctl syscalls on /dev/nsm (misc_open through vfs_ioctl to nsm_dev_ioctl); the Nitro Secure Module virtio driver has no network, adjacent-wireless, or physical attack surface.\nAC:L - When CONFIG_NSM=m the attacker controls the full sequence: open /dev/nsm to install fops, delete_module(\"nsm\") while fops_get(NULL) leaves the module unpinned, then ioctl on the stale fd to call unloaded text without races or external timing.\nPR:L - /dev/nsm is registered mode 0666 with no capable() checks in nsm_dev_ioctl, so any local process can open and ioctl; unloading the module needs CAP_SYS_MODULE, treated as low-privilege local capability per similar module-lifetime UAF scoring on permissive/user-namespace kernels.\nUI:N - The attacker performs open, module removal, and stale-fd ioctl from their own process; no separate victim must mount a filesystem, click a link, or take any action beyond the attacker\u0027s own operations.\nS:U - The use-after-free corrupts guest kernel memory and executes in kernel context within the Nitro Enclave; impact does not cross hypervisor, parent-instance, VM, or IOMMU security boundaries.\nC:H - Stale ioctl calls into freed module text and file_to_nsm() dereferences freed devm nsm state, exposing reclaimed kernel/module memory and adjacent virtio message buffers through the UAF window.\nI:H - Dispatching nsm_dev_ioctl through freed vmalloc module text is a kernel use-after-free that can be shaped with heap spraying to hijack control flow and achieve arbitrary kernel code execution.\nA:H - Executing code from an unloaded module or dereferencing freed nsm/virtqueue state on ioctl reliably causes kernel oops or panic, and the attacker can repeat the stale-fd ioctl to deny service."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:00:19.564Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/1996639f824ce9468395cdb7bcb8f467fa787e77"
        },
        {
          "url": "https://git.kernel.org/stable/c/1da310b94504d42001e9c32c43c5dc105b777e5f"
        },
        {
          "url": "https://git.kernel.org/stable/c/9e9a82d00c3d10129fc310a7547b24a679d5d920"
        },
        {
          "url": "https://git.kernel.org/stable/c/3b231f1e9990f4c21220d0a69733ce2105891ff9"
        }
      ],
      "title": "misc: nsm: pin the module while the device is open",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-68178",
    "datePublished": "2026-08-10T11:59:49.344Z",
    "dateReserved": "2026-07-30T09:28:09.373Z",
    "dateUpdated": "2026-08-17T05:00:19.564Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-68178",
      "date": "2026-09-22",
      "epss": "0.00163",
      "percentile": "0.05975"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/misc/nsm.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "1996639f824ce9468395cdb7bcb8f467fa787e77",
                    "status": "affected",
                    "version": "b9873755a6c8ccfce79094c4dce9efa3ecb1a749",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "1da310b94504d42001e9c32c43c5dc105b777e5f",
                    "status": "affected",
                    "version": "b9873755a6c8ccfce79094c4dce9efa3ecb1a749",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "9e9a82d00c3d10129fc310a7547b24a679d5d920",
                    "status": "affected",
                    "version": "b9873755a6c8ccfce79094c4dce9efa3ecb1a749",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "3b231f1e9990f4c21220d0a69733ce2105891ff9",
                    "status": "affected",
                    "version": "b9873755a6c8ccfce79094c4dce9efa3ecb1a749",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/misc/nsm.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.8"
                  },
                  {
                    "lessThan": "6.8",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.101",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.42",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.1.*",
                    "status": "unaffected",
                    "version": "7.1.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "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\nmisc: nsm: pin the module while the device is open\n\nmisc_open() installs a misc driver\u0027s file operations with fops_get(),\nwhich pins file_operations::owner before replacing the file\u0027s f_op.  The\nNSM misc device leaves nsm_dev_fops.owner unset, so opening /dev/nsm does\nnot take a module reference on the nsm driver.\n\nIf the driver is built as a module, an open file descriptor can therefore\nsurvive rmmod of the module that provides its ioctl callbacks.  A later\nioctl through that descriptor can call into unloaded module text.\n\nSet nsm_dev_fops.owner to THIS_MODULE so the misc core holds the module\nwhile any /dev/nsm file descriptor is open, matching the lifetime\nexpectation for the installed file operations."
          }
        ],
        "id": "CVE-2026-68178",
        "lastModified": "2026-08-17T05:18:19.463",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-08-10T13:20:04.720",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/1996639f824ce9468395cdb7bcb8f467fa787e77"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/1da310b94504d42001e9c32c43c5dc105b777e5f"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3b231f1e9990f4c21220d0a69733ce2105891ff9"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/9e9a82d00c3d10129fc310a7547b24a679d5d920"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-31T11:17:55+00:00",
      "cve": "CVE-2026-68178",
      "id": "CVE-2026-68178",
      "initial_release_date": "2026-08-10T11:59:49.344000+00:00",
      "product_status:known_affected": "1",
      "product_status:known_not_affected": "276",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: misc: nsm: pin the module while the device is open",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-68178.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-13T16:23:32Z",
      "cve": "CVE-2026-68178",
      "id": "CVE-2026-68178",
      "initial_release_date": "2026-08-13T16:23:32Z",
      "product_status:known_not_affected": "296",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-68178",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-68178.json",
      "version": "2"
    }
  }
}



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…