CVE-2026-90057 (GCVE-0-2026-90057)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:05 – Updated: 2026-09-18 17:52
VLAI
Title
slip: remove slip_hangup() to fix use-after-free in slip_receive_buf()
Summary
In the Linux kernel, the following vulnerability has been resolved: slip: remove slip_hangup() to fix use-after-free in slip_receive_buf() Jaeyoung Chung and Eulgyu Kim reported a slab-use-after-free read in slip_receive_buf() when racing against tty hangup. tty_ldisc_hangup() calls ld->ops->hangup() while holding only a read lock on tty->ldisc_sem (via tty_ldisc_ref()). Because slip_hangup() simply called slip_close(), it ran concurrently with reader functions such as slip_receive_buf(). slip_close() unregisters and frees the net device and its private struct slip, causing concurrent reader threads in slip_receive_buf() to dereference freed memory. Line discipline close() is already guaranteed to be called under the write lock of tty->ldisc_sem during hangup processing (in tty_ldisc_reinit() or tty_ldisc_kill()). Remove slip_hangup() so teardown is serialized cleanly by slip_close().
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 5342b77c4123ba39f911d92a813295fb3bb21f69 , < 9a3b1edff1ecb47d323f2506b3ffc22178acd1c6 (git)
Affected: 5342b77c4123ba39f911d92a813295fb3bb21f69 , < a2dbac3fb03b4427ccf057debc83fc61ee102529 (git)
Affected: 5342b77c4123ba39f911d92a813295fb3bb21f69 , < de1f978c0f6ab42b28192d74dc59af52fdc76135 (git)
Affected: 5342b77c4123ba39f911d92a813295fb3bb21f69 , < ddbc5dc5a2e29b3934da09c1ba3c930fd8a40fd6 (git)
Affected: 5342b77c4123ba39f911d92a813295fb3bb21f69 , < a540a49fcca59d1c92c3a6462e67ca21676a88df (git)
Affected: 5342b77c4123ba39f911d92a813295fb3bb21f69 , < 23c53269f2baaedf2d92784290cb9ef6db2a3bce (git)
guessed Create a notification for this product.
Linux Linux Affected: 2.6.32
Unaffected: 0 , < 2.6.32 (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": [
            "drivers/net/slip/slip.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "9a3b1edff1ecb47d323f2506b3ffc22178acd1c6",
              "status": "affected",
              "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
              "versionType": "git"
            },
            {
              "lessThan": "a2dbac3fb03b4427ccf057debc83fc61ee102529",
              "status": "affected",
              "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
              "versionType": "git"
            },
            {
              "lessThan": "de1f978c0f6ab42b28192d74dc59af52fdc76135",
              "status": "affected",
              "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
              "versionType": "git"
            },
            {
              "lessThan": "ddbc5dc5a2e29b3934da09c1ba3c930fd8a40fd6",
              "status": "affected",
              "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
              "versionType": "git"
            },
            {
              "lessThan": "a540a49fcca59d1c92c3a6462e67ca21676a88df",
              "status": "affected",
              "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
              "versionType": "git"
            },
            {
              "lessThan": "23c53269f2baaedf2d92784290cb9ef6db2a3bce",
              "status": "affected",
              "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/slip/slip.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "2.6.32"
            },
            {
              "lessThan": "2.6.32",
              "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": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nslip: remove slip_hangup() to fix use-after-free in slip_receive_buf()\n\nJaeyoung Chung and Eulgyu Kim reported a slab-use-after-free read\nin slip_receive_buf() when racing against tty hangup.\n\ntty_ldisc_hangup() calls ld-\u003eops-\u003ehangup() while holding only\na read lock on tty-\u003eldisc_sem (via tty_ldisc_ref()).\nBecause slip_hangup() simply called slip_close(), it ran concurrently\nwith reader functions such as slip_receive_buf().\n\nslip_close() unregisters and frees the net device and its private\nstruct slip, causing concurrent reader threads in slip_receive_buf()\nto dereference freed memory.\n\nLine discipline close() is already guaranteed to be called under\nthe write lock of tty-\u003eldisc_sem during hangup processing\n(in tty_ldisc_reinit() or tty_ldisc_kill()).\n\nRemove slip_hangup() so teardown is serialized cleanly by slip_close()."
        }
      ],
      "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 reached by racing local TTY syscalls: ioctl(TIOCSETD, N_SLIP) then write() on a PTY master into pty_write\u2192tty_insert_flip_string_and_push_buffer\u2192flush_to_ldisc\u2192tty_port_default_receive_buf\u2192slip_receive_buf, while close() of that master runs pty_close\u2192tty_vhangup\u2192tty_ldisc_hangup\u2192slip_hangup. Hangup is a local TTY lifecycle event, not bytes from a remote SLIP peer.\nAC:L - The attacker owns both PTY fds and can loop write() on the master (driving slip_receive_buf under tty_ldisc_ref()\u0027s read lock) concurrently with close()\u2192pty_close\u2192tty_vhangup\u2192slip_hangup, which tty_ldisc_hangup() also invokes under only a read lock. Because hangup() is not serialized by ldisc_sem\u0027s write side, the attacker creates and retries the race.\nPR:L - Attaching N_SLIP requires slip_open()\u0027s capable(CAP_NET_ADMIN) check, which is ns_capable(\u0026init_user_ns) and is not granted by unshare -Urn. CAP_NET_ADMIN in the initial user namespace is still routinely given to non-root container/network workloads (Docker/K8s --cap-add=NET_ADMIN) without full host root, so privileges required are Low.\nUI:N - The attacker performs every step in its own processes: open(\"/dev/ptmx\"), ioctl(TIOCSETD, N_SLIP), write() to the master, and close() to force pty_close()\u2192tty_vhangup(). No separate victim user or administrator action is required at exploit time.\nS:U - The UAF corrupts the host-kernel net_device allocated in sl_alloc() via alloc_netdev() and its embedded struct slip (netdev_priv). Impact is standard local kernel privilege escalation, not a VM escape or IOMMU/DMA boundary bypass.\nC:H - slip_receive_buf() loads sl from tty-\u003edisc_data without an RCU read-side critical section, then reads sl-\u003emagic and sl-\u003edev after slip_hangup()\u2192slip_close()\u2192unregister_netdev() has freed that net_device (needs_free_netdev). A use-after-free of this object enables an arbitrary kernel read via heap spray.\nI:H - Once past those checks, slip_receive_buf() takes spin_lock_bh(\u0026sl-\u003elock) and slip_unesc() writes sl-\u003erbuff[sl-\u003ercount++] and sl-\u003eflags on the already-freed struct slip, giving a write primitive against a net_device that also carries netdev_ops function pointers.\nA:H - Use-after-free of the SLIP net_device/struct slip causes a kernel oops or panic even when not fully exploited; the report is a KASAN slab-use-after-free read in slip_receive_buf() racing tty hangup."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-18T17:52:47.908Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/9a3b1edff1ecb47d323f2506b3ffc22178acd1c6"
        },
        {
          "url": "https://git.kernel.org/stable/c/a2dbac3fb03b4427ccf057debc83fc61ee102529"
        },
        {
          "url": "https://git.kernel.org/stable/c/de1f978c0f6ab42b28192d74dc59af52fdc76135"
        },
        {
          "url": "https://git.kernel.org/stable/c/ddbc5dc5a2e29b3934da09c1ba3c930fd8a40fd6"
        },
        {
          "url": "https://git.kernel.org/stable/c/a540a49fcca59d1c92c3a6462e67ca21676a88df"
        },
        {
          "url": "https://git.kernel.org/stable/c/23c53269f2baaedf2d92784290cb9ef6db2a3bce"
        }
      ],
      "title": "slip: remove slip_hangup() to fix use-after-free in slip_receive_buf()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90057",
    "datePublished": "2026-09-17T16:05:41.670Z",
    "dateReserved": "2026-09-11T19:38:34.784Z",
    "dateUpdated": "2026-09-18T17:52:47.908Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90057",
      "date": "2026-09-25",
      "epss": "0.00171",
      "percentile": "0.05713"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/slip/slip.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "9a3b1edff1ecb47d323f2506b3ffc22178acd1c6",
                    "status": "affected",
                    "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a2dbac3fb03b4427ccf057debc83fc61ee102529",
                    "status": "affected",
                    "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "de1f978c0f6ab42b28192d74dc59af52fdc76135",
                    "status": "affected",
                    "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "ddbc5dc5a2e29b3934da09c1ba3c930fd8a40fd6",
                    "status": "affected",
                    "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a540a49fcca59d1c92c3a6462e67ca21676a88df",
                    "status": "affected",
                    "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "23c53269f2baaedf2d92784290cb9ef6db2a3bce",
                    "status": "affected",
                    "version": "5342b77c4123ba39f911d92a813295fb3bb21f69",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/net/slip/slip.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "2.6.32"
                  },
                  {
                    "lessThan": "2.6.32",
                    "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\nslip: remove slip_hangup() to fix use-after-free in slip_receive_buf()\n\nJaeyoung Chung and Eulgyu Kim reported a slab-use-after-free read\nin slip_receive_buf() when racing against tty hangup.\n\ntty_ldisc_hangup() calls ld-\u003eops-\u003ehangup() while holding only\na read lock on tty-\u003eldisc_sem (via tty_ldisc_ref()).\nBecause slip_hangup() simply called slip_close(), it ran concurrently\nwith reader functions such as slip_receive_buf().\n\nslip_close() unregisters and frees the net device and its private\nstruct slip, causing concurrent reader threads in slip_receive_buf()\nto dereference freed memory.\n\nLine discipline close() is already guaranteed to be called under\nthe write lock of tty-\u003eldisc_sem during hangup processing\n(in tty_ldisc_reinit() or tty_ldisc_kill()).\n\nRemove slip_hangup() so teardown is serialized cleanly by slip_close()."
          }
        ],
        "id": "CVE-2026-90057",
        "lastModified": "2026-09-18T18:17:40.053",
        "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-09-17T17:16:54.310",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/23c53269f2baaedf2d92784290cb9ef6db2a3bce"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/9a3b1edff1ecb47d323f2506b3ffc22178acd1c6"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a2dbac3fb03b4427ccf057debc83fc61ee102529"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a540a49fcca59d1c92c3a6462e67ca21676a88df"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/ddbc5dc5a2e29b3934da09c1ba3c930fd8a40fd6"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/de1f978c0f6ab42b28192d74dc59af52fdc76135"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



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…