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

CVE-2026-89583 (GCVE-0-2026-89583)

Vulnerability from cvelistv5 – Published: 2026-09-11 19:44 – Updated: 2026-09-14 12:01
VLAI
Title
Bluetooth: eir: Fix OOB read in eir_get_service_data()
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: eir: Fix OOB read in eir_get_service_data() eir_get_service_data() walks the advertising data for a Service Data field with a matching UUID. On a mismatch it advances: eir += dlen; eir_len -= dlen; eir_get_data() reports dlen as the field's data length, but the field spans dlen + 2 bytes once its length and type bytes count, and more when non-Service-Data fields were skipped to reach it. The pointer lands correctly on the next field. eir_len does not, and the shortfall compounds across fields until eir_get_data() reads the length and type bytes of a "field" past the end of the buffer. For an ISO broadcast sink that buffer is hcon->le_per_adv_data[], filled from the periodic advertising reports of a remote broadcaster. A PA payload packed with mismatching Service Data fields walks off the array into the rest of struct hci_conn. A drifted field that matches the BAA UUID puts those bytes in iso_pi(sk)->base, where user space reads them back with getsockopt(BT_ISO_BASE). Recompute eir_len from the end of the buffer each iteration.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 8f9ae5b3ae80f168a6224529e3787f4fb27f299a , < b6902adf81ea2ce14b1040dd97b6980050a8125a (git)
Affected: 8f9ae5b3ae80f168a6224529e3787f4fb27f299a , < 1a28aae7f1fc8c06c0d02f153541be4fc7bacb74 (git)
Affected: 8f9ae5b3ae80f168a6224529e3787f4fb27f299a , < 815fc98c227a78cbd93d4c29f2833705b7c2bc0f (git)
Affected: 8f9ae5b3ae80f168a6224529e3787f4fb27f299a , < c21fa79301d7d6ac0a4ec6c51e8ba10beaa08c50 (git)
Affected: 8f9ae5b3ae80f168a6224529e3787f4fb27f299a , < bb56e97bd67614238c1c0a4084704ccadbb875b4 (git)
Affected: 8f9ae5b3ae80f168a6224529e3787f4fb27f299a , < 4beb198bc59b242404a47c21990bc84165052c8a (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.19
Unaffected: 0 , < 5.19 (semver)
Unaffected: 6.1.188 , ≤ 6.1.* (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.109 , ≤ 6.12.* (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": [
            "net/bluetooth/eir.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b6902adf81ea2ce14b1040dd97b6980050a8125a",
              "status": "affected",
              "version": "8f9ae5b3ae80f168a6224529e3787f4fb27f299a",
              "versionType": "git"
            },
            {
              "lessThan": "1a28aae7f1fc8c06c0d02f153541be4fc7bacb74",
              "status": "affected",
              "version": "8f9ae5b3ae80f168a6224529e3787f4fb27f299a",
              "versionType": "git"
            },
            {
              "lessThan": "815fc98c227a78cbd93d4c29f2833705b7c2bc0f",
              "status": "affected",
              "version": "8f9ae5b3ae80f168a6224529e3787f4fb27f299a",
              "versionType": "git"
            },
            {
              "lessThan": "c21fa79301d7d6ac0a4ec6c51e8ba10beaa08c50",
              "status": "affected",
              "version": "8f9ae5b3ae80f168a6224529e3787f4fb27f299a",
              "versionType": "git"
            },
            {
              "lessThan": "bb56e97bd67614238c1c0a4084704ccadbb875b4",
              "status": "affected",
              "version": "8f9ae5b3ae80f168a6224529e3787f4fb27f299a",
              "versionType": "git"
            },
            {
              "lessThan": "4beb198bc59b242404a47c21990bc84165052c8a",
              "status": "affected",
              "version": "8f9ae5b3ae80f168a6224529e3787f4fb27f299a",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/eir.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.19"
            },
            {
              "lessThan": "5.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.109",
              "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.1.188",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.109",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.50",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.4",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "5.19",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: eir: Fix OOB read in eir_get_service_data()\n\neir_get_service_data() walks the advertising data for a Service Data\nfield with a matching UUID.  On a mismatch it advances:\n\n    eir += dlen;\n    eir_len -= dlen;\n\neir_get_data() reports dlen as the field\u0027s data length, but the field\nspans dlen + 2 bytes once its length and type bytes count, and more\nwhen non-Service-Data fields were skipped to reach it.  The pointer\nlands correctly on the next field.  eir_len does not, and the shortfall\ncompounds across fields until eir_get_data() reads the length and type\nbytes of a \"field\" past the end of the buffer.\n\nFor an ISO broadcast sink that buffer is hcon-\u003ele_per_adv_data[], filled\nfrom the periodic advertising reports of a remote broadcaster.  A PA\npayload packed with mismatching Service Data fields walks off the array\ninto the rest of struct hci_conn.  A drifted field that matches the BAA\nUUID puts those bytes in iso_pi(sk)-\u003ebase, where user space reads them\nback with getsockopt(BT_ISO_BASE).\n\nRecompute eir_len from the end of the buffer each iteration."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:A - The OOB read is in eir_get_service_data() parsing LE periodic advertising. An ISO broadcast sink copies HCI_EV_LE_PER_ADV_REPORT payloads from a remote broadcaster into hcon-\u003ele_per_adv_data[] via iso_connect_ind(), which is an adjacent Bluetooth radio path, not IP or a local-only syscall.\nAC:L - An in-range attacker fully controls the PA payload and can pack mismatching Service Data fields to inflate eir_len, then a trailing BAA-UUID field whose declared length extends past the buffer; triggering is deterministic with no race or layout the attacker cannot influence.\nPR:N - Periodic advertising is unauthenticated connectionless LE traffic; iso_connect_ind() parses PA reports with no pairing, HCI authentication, or capability check, and iso_sock_create() has no CAP_NET_ADMIN gate, so the attacker needs no Linux credentials on the victim.\nUI:N - LE Audio/Auracast stacks keep ISO broadcast-sink listeners during normal operation; once PA sync exists, iso_connect_ind() parses each HCI_EV_LE_PER_ADV_REPORT automatically and returns HCI_LM_ACCEPT without further user clicks, pairing, or setup.\nS:U - The out-of-bounds read of struct hci_conn and the copy into the ISO socket BASE buffer remain in the host kernel Bluetooth stack and do not cross a VM, container, or IOMMU security boundary.\nC:H - Inflated eir_len lets a matching BAA (0x1851) Service Data field extend past the 1650-byte le_per_adv_data[] into the rest of hci_conn; up to BASE_MAX_LENGTH (248) bytes are memcpy\u0027d into iso_pi(sk)-\u003ebase and returned via getsockopt(BT_ISO_BASE), leaking kernel pointers and adjacent object bytes.\nI:N - This is an out-of-bounds read only; the memcpy into iso_pi(sk)-\u003ebase is capped by BASE_MAX_LENGTH, and there is no out-of-bounds write, use-after-free, or control-flow hijack primitive.\nA:H - Continuing the EIR walk with an overstated remaining length can read hundreds of bytes past le_per_adv_data[] into adjacent slab or unmapped memory, causing a kernel oops or KASAN panic that the attacker can retrigger with further PA reports."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-14T12:01:11.801Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b6902adf81ea2ce14b1040dd97b6980050a8125a"
        },
        {
          "url": "https://git.kernel.org/stable/c/1a28aae7f1fc8c06c0d02f153541be4fc7bacb74"
        },
        {
          "url": "https://git.kernel.org/stable/c/815fc98c227a78cbd93d4c29f2833705b7c2bc0f"
        },
        {
          "url": "https://git.kernel.org/stable/c/c21fa79301d7d6ac0a4ec6c51e8ba10beaa08c50"
        },
        {
          "url": "https://git.kernel.org/stable/c/bb56e97bd67614238c1c0a4084704ccadbb875b4"
        },
        {
          "url": "https://git.kernel.org/stable/c/4beb198bc59b242404a47c21990bc84165052c8a"
        }
      ],
      "title": "Bluetooth: eir: Fix OOB read in eir_get_service_data()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-89583",
    "datePublished": "2026-09-11T19:44:49.094Z",
    "dateReserved": "2026-09-11T19:38:34.728Z",
    "dateUpdated": "2026-09-14T12:01:11.801Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-89583",
      "date": "2026-09-15",
      "epss": "0.00271",
      "percentile": "0.19343"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-89583\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-09-11T20:19:42.660\",\"lastModified\":\"2026-09-14T13:19:12.587\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nBluetooth: eir: Fix OOB read in eir_get_service_data()\\n\\neir_get_service_data() walks the advertising data for a Service Data\\nfield with a matching UUID.  On a mismatch it advances:\\n\\n    eir += dlen;\\n    eir_len -= dlen;\\n\\neir_get_data() reports dlen as the field\u0027s data length, but the field\\nspans dlen + 2 bytes once its length and type bytes count, and more\\nwhen non-Service-Data fields were skipped to reach it.  The pointer\\nlands correctly on the next field.  eir_len does not, and the shortfall\\ncompounds across fields until eir_get_data() reads the length and type\\nbytes of a \\\"field\\\" past the end of the buffer.\\n\\nFor an ISO broadcast sink that buffer is hcon-\u003ele_per_adv_data[], filled\\nfrom the periodic advertising reports of a remote broadcaster.  A PA\\npayload packed with mismatching Service Data fields walks off the array\\ninto the rest of struct hci_conn.  A drifted field that matches the BAA\\nUUID puts those bytes in iso_pi(sk)-\u003ebase, where user space reads them\\nback with getsockopt(BT_ISO_BASE).\\n\\nRecompute eir_len from the end of the buffer each iteration.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"net/bluetooth/eir.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"8f9ae5b3ae80f168a6224529e3787f4fb27f299a\",\"lessThan\":\"b6902adf81ea2ce14b1040dd97b6980050a8125a\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8f9ae5b3ae80f168a6224529e3787f4fb27f299a\",\"lessThan\":\"1a28aae7f1fc8c06c0d02f153541be4fc7bacb74\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8f9ae5b3ae80f168a6224529e3787f4fb27f299a\",\"lessThan\":\"815fc98c227a78cbd93d4c29f2833705b7c2bc0f\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8f9ae5b3ae80f168a6224529e3787f4fb27f299a\",\"lessThan\":\"c21fa79301d7d6ac0a4ec6c51e8ba10beaa08c50\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8f9ae5b3ae80f168a6224529e3787f4fb27f299a\",\"lessThan\":\"bb56e97bd67614238c1c0a4084704ccadbb875b4\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8f9ae5b3ae80f168a6224529e3787f4fb27f299a\",\"lessThan\":\"4beb198bc59b242404a47c21990bc84165052c8a\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"net/bluetooth/eir.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.19\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.19\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.188\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.157\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.109\",\"lessThanOrEqual\":\"6.12.*\",\"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:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H\",\"baseScore\":8.1,\"baseSeverity\":\"HIGH\",\"attackVector\":\"ADJACENT_NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.8,\"impactScore\":5.2}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/1a28aae7f1fc8c06c0d02f153541be4fc7bacb74\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/4beb198bc59b242404a47c21990bc84165052c8a\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/815fc98c227a78cbd93d4c29f2833705b7c2bc0f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/b6902adf81ea2ce14b1040dd97b6980050a8125a\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/bb56e97bd67614238c1c0a4084704ccadbb875b4\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c21fa79301d7d6ac0a4ec6c51e8ba10beaa08c50\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-14T18:38:27+00:00",
      "cve": "CVE-2026-89583",
      "id": "CVE-2026-89583",
      "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: Bluetooth: eir: Fix OOB read in eir_get_service_data()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89583.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-16T00:01:53Z",
      "cve": "CVE-2026-89583",
      "id": "CVE-2026-89583",
      "initial_release_date": "2026-09-12T16:25:38Z",
      "product_status:known_affected": "84",
      "product_status:known_not_affected": "269",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-89583",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-89583.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…

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…