GHSA-JG2J-FXRH-W676
Vulnerability from github – Published: 2026-10-18 18:32 – Updated: 2026-10-30 15:33In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: RFCOMM: Fix initial port reference race
For RFCOMM_RELEASE_ONHUP devices, rfcomm_tty_install() and __rfcomm_release_dev() both use RFCOMM_TTY_OWNED to decide who drops the initial tty_port reference. The release path tests the bit separately from the install path setting it, so both can drop that reference.
The synchronous hangup does not prevent this race: port->tty is not assigned until tty_port_open(), after installation. The following interleaving is possible:
- Install and release each obtain a reference with rfcomm_dev_get().
- Release observes RFCOMM_TTY_OWNED clear.
- Install sets RFCOMM_TTY_OWNED and drops the initial reference.
- Release drops the same initial reference again.
- TTY cleanup drops its reference and frees the device.
- Release performs its final tty_port_put() on the freed port.
KASAN reported:
BUG: KASAN: slab-use-after-free in tty_port_put+0x22/0x190 Write of size 4 at addr ffff8881001d3d5c by task poc/92
Call Trace: tty_port_put+0x22/0x190 rfcomm_dev_ioctl+0x1d4/0x1930 sock_do_ioctl+0x110/0x260 sock_ioctl+0x380/0x590 __x64_sys_ioctl+0x134/0x1c0
Allocated by task 88: rfcomm_dev_ioctl+0x8f6/0x1930 sock_do_ioctl+0x110/0x260 sock_ioctl+0x380/0x590 __x64_sys_ioctl+0x134/0x1c0
Freed by task 65: kfree+0x131/0x3c0 rfcomm_dev_destruct+0x23b/0x2f0 release_one_tty+0xc1/0x370 process_one_work+0x661/0x1090
Use test_and_set_bit() in both paths so that only the caller that changes RFCOMM_TTY_OWNED from clear to set drops the initial reference. Each path keeps its own lookup reference until release or TTY cleanup, preserving the existing callback ordering and error handling.
{
"affected": [],
"aliases": [
"CVE-2026-98739"
],
"database_specific": {
"cwe_ids": [],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-10-18T16:17:27Z",
"severity": null
},
"details": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: RFCOMM: Fix initial port reference race\n\nFor RFCOMM_RELEASE_ONHUP devices, rfcomm_tty_install() and\n__rfcomm_release_dev() both use RFCOMM_TTY_OWNED to decide who drops the\ninitial tty_port reference. The release path tests the bit separately\nfrom the install path setting it, so both can drop that reference.\n\nThe synchronous hangup does not prevent this race: port-\u003etty is not\nassigned until tty_port_open(), after installation. The following\ninterleaving is possible:\n\n 1. Install and release each obtain a reference with rfcomm_dev_get().\n 2. Release observes RFCOMM_TTY_OWNED clear.\n 3. Install sets RFCOMM_TTY_OWNED and drops the initial reference.\n 4. Release drops the same initial reference again.\n 5. TTY cleanup drops its reference and frees the device.\n 6. Release performs its final tty_port_put() on the freed port.\n\nKASAN reported:\n\n BUG: KASAN: slab-use-after-free in tty_port_put+0x22/0x190\n Write of size 4 at addr ffff8881001d3d5c by task poc/92\n\n Call Trace:\n tty_port_put+0x22/0x190\n rfcomm_dev_ioctl+0x1d4/0x1930\n sock_do_ioctl+0x110/0x260\n sock_ioctl+0x380/0x590\n __x64_sys_ioctl+0x134/0x1c0\n\n Allocated by task 88:\n rfcomm_dev_ioctl+0x8f6/0x1930\n sock_do_ioctl+0x110/0x260\n sock_ioctl+0x380/0x590\n __x64_sys_ioctl+0x134/0x1c0\n\n Freed by task 65:\n kfree+0x131/0x3c0\n rfcomm_dev_destruct+0x23b/0x2f0\n release_one_tty+0xc1/0x370\n process_one_work+0x661/0x1090\n\nUse test_and_set_bit() in both paths so that only the caller that changes\nRFCOMM_TTY_OWNED from clear to set drops the initial reference. Each path\nkeeps its own lookup reference until release or TTY cleanup, preserving\nthe existing callback ordering and error handling.",
"id": "GHSA-jg2j-fxrh-w676",
"modified": "2026-10-30T15:33:58Z",
"published": "2026-10-18T18:32:01Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98739"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/0a554901bd227537f79220443b2b36d585d62893"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/2d696c1ed3468dcb62578a3911e687110d463520"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/55d162aa00d1ee33c3e6fa88b71f1e2d6e1441e9"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/a03ccf1ab77380d4c4a3c56552e12de4a83efa21"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/c50360a019766fafa27318928bfea96dcce8a37d"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/cd247e38b14df48d6b3940c4573a9f7acb10c363"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/d3dd18e85c140df72e0f2b5ee156ebfba04c06cb"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/e5aa7fbf7a4446bb89f0b8394b2dfc1a6b6aba5b"
}
],
"schema_version": "1.4.0",
"severity": []
}
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
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.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
Loading timeline…
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
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.