CVE-2026-64502

Linux kernel (GCP) vulnerabilities

Beschreibung

Im Linux-Kernel wurde die folgende Schwachstelle behoben: iio: adc: ad_sigma_delta: Behebung von clear_pending_event für registerlose Geräte Die Funktion `ad_sigma_delta_clear_pending_event()` fällt bei Geräten mit `has_registers = false` und ohne `rdy_gpiod` in den Pfad zum Statusregister. Bei solchen Geräten überspringt `ad_sd_read_reg()` den Adressbyte vollständig und schaltet rohe MISO-Bytes ohne Adressphase – was zu einer byte-für-byte Identität beim Lesen der Umwandlungsdaten führt. Wenn ein umzuwandelndes Ergebnis vorliegt, wird dieses teilweise verbraucht und die Datenströmung für den folgenden `ad_sd_read_reg()`-Aufruf in `ad_sigma_delta_single_conversion()` korrupt. Darüber hinaus bewertet sich bei diesen Geräten mit `num_resetclks = 0` `data_read_len` auf 0. Wenn der geschaltete Byte Bit 7 nicht gesetzt ist, wird `pending_event` gesetzt und der Code versucht `memset(data + 2, 0xff, 0 - 1)`, was zu einem Überlauf bis `SIZE_MAX` führt und den Heap korruptiert. Die Behebung erfolgt durch das sofortige Zurückgeben von 0, wenn weder `rdy_gpiod` noch `has_registers` gesetzt ist. Dies ist sicher für alle aktuellen registerlosen Geräte: ad7191 und ad7780 (mit Powerdown-GPIO) werden zwischen Umwandlungen durch CS-Deassertion zurückgesetzt, sodass kein veraltetes Ergebnis abgeleitet werden muss; ad7780 (ohne Powerdown-GPIO) und max11205 sind kontinuierlich umwandelnd und zyklisch ~DRDY an der Ausgabedatenrate unabhängig davon, ob das vorherige Ergebnis gelesen wurde, sodass die nächste fallende Flanke natürlich ausgelöst wird. Ein zukünftiges registerloses Gerät, das ~DRDY bis zum Lesen der Daten gesetzt hält, würde durch diesen frühen Rückgabewert beeinträchtigt und benötigte entweder `num_resetclks` oder ein rdy-gpio. Die gleiche Heap-Korruption ist auf jedem Gerät mit `rdy_gpiod` gesetzt aber `num_resetclks = 0` erreichbar: wenn die GPIO einen anstehenden Ereignisstatus anzeigt, wird der Abflusspfad `memset(data + 2, 0xff, 0 - 1)` unabhängig von `has_registers` ausführen. Füge eine explizite Schutzbedingung `data_read_len == 0` nach der Überprüfung des anstehenden Ereignisses hinzu; das veraltete Ergebnis wird dann durch den ersten `ad_sd_read_reg()`-Aufruf in `ad_sigma_delta_single_conversion()` konsumiert.

Metriken

Severity
high
kein öffentlicher PoC bekannt
7.8
Quelle: nvd-v3
2.0 %
Niedrig — CVE gehört zu den unteren 10 % der heute bewerteten CVEs.
0.1 %
Niedrig — Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Veröffentlicht
2026-09-07 09:05 UTC

Re-Analyse & Statuswechsel

Chronologie der NVD-Audit-Events für diese CVE — Reanalyses, CVSS-Updates, CPE-Diffs.

  1. CVE Modified2026-08-17 05:17 UTC· 416baaa9-dc9f-4396-8d5f-8c081fb06d67
    • Affected: Linux, LinuxLinux, Linux
  2. New CVE Received2026-07-25 10:17 UTC· 416baaa9-dc9f-4396-8d5f-8c081fb06d67
    • Affected: Linux, Linux
    • Description: In the Linux kernel, the following vulnerability has been resolved: iio: adc: ad_sigma_delta: fix clear_pending_event for registerless devices ad_sigma_delta_clear_pending_event() falls through to the status register read path for devices with has_registers = false and no rdy_gpiod. For such devices, ad_sd_read_reg() skips the address byte entirely and clocks raw MISO bytes with no address phase — making it byte-for-byte identical to reading conversion data. If a pending conversion result is present, this partially consumes it and corrupts the data stream for the subsequent ad_sd_read_reg() call in ad_sigma_delta_single_conversion(). Furthermore, with num_resetclks = 0 on these devices, data_read_len evaluates to 0. If the clocked byte has bit 7 clear, pending_event is set and the code attempts memset(data + 2, 0xff, 0 - 1), overflowing to SIZE_MAX and corrupting the heap. Fix by returning 0 immediately when neither rdy_gpiod nor has_registers is set. This is safe for all current registerless devices: ad7191 and ad7780 (with powerdown GPIO) are reset between conversions by CS deassertion, so there is no stale result to drain; ad7780 (without powerdown GPIO) and max11205 are continuously-converting and cycle ~DRDY at the output data rate regardless of whether the previous result was read, so the next falling edge fires naturally. A future registerless device that holds ~DRDY asserted until data is read would be broken by this early return and would require either num_resetclks set or a rdy-gpio. The same heap corruption is reachable on any device with rdy_gpiod set but num_resetclks = 0: if the GPIO indicates a pending event, the drain path executes memset(data + 2, 0xff, 0 - 1) regardless of has_registers. Add an explicit data_read_len == 0 guard after the pending event check; the stale result is then consumed by the first ad_sd_read_reg() call in ad_sigma_delta_single_conversion().
    • Reference: https://git.kernel.org/stable/c/3394e0b3328422431cadaf314fa58d3717ed4936
    • Reference: https://git.kernel.org/stable/c/3bceb26dfaf7ba805b459e41c1d0ba916862dade

Betroffene Betriebssysteme

  • linux

    redhat / enterprise_linux10.0

  • linux

    redhat / enterprise_linux7.0

  • linux

    redhat / enterprise_linux8.0

  • linux

    redhat / enterprise_linux9.0

  • linux

    ubuntu / linux-aws-6.8jammy

  • linux

    ubuntu / linux-azureresolute

  • linux

    ubuntu / linux-azuretrusty

  • linux

    ubuntu / linux-azurexenial

  • linux

    ubuntu / linux-azure-4.15bionic

  • linux

    ubuntu / linux-azure-5.4bionic

  • linux

    ubuntu / linux-azure-fdenoble

  • linux

    ubuntu / linux-azure-fderesolute

  • linux

    ubuntu / linux-azure-fde-6.8jammy

  • linux

    ubuntu / linux-azure-fipsbionic

  • linux

    ubuntu / linux-azure-fipsfocal

  • linux

    ubuntu / linux-azure-fipsnoble

  • linux

    ubuntu / linux-fipsjammy

  • linux

    ubuntu / linux-gcp-7.0noble

  • linux

    ubuntu / linux-gkejammy

  • linux

    ubuntu / linux-nvidia-tegranoble

  • linux

    ubuntu / linux-raspinoble

  • linux

    ubuntu / linux-raspi-realtimenoble

  • linux

    linux / linux_kernel2.6.12

  • linux

    linux / linux_kernel2.6.15

Quellen & Referenzen

Verknüpfte CVEs

1392 weitere CVEs anzeigen
IDCVE-2026-64502
Linux kernel (GCP) vulnerabilities — CVE-2026-64502 | NEOSEC Intel