CVE-2026-12520 in Zephyr
Zusammenfassung
von VulDB • 18.08.2026
Der Treiber für das Sierra Wireless HL7800-Zellmodem (drivers/modem/vendor_standalone/hl7800.c, in v4.4.0 und früher unter drivers/modem/hl7800.c zu finden) parst AT-Antworten mit etwa zwanzig Handlern, die net_buf_linearize(value, sizeof(value), *buf, 0, len) in einen 128-Byte großen Stack-Puffer aufrufen und anschließend value[out_len] = 0 schreiben. Da net_buf_linearize() (lib/net_buf/buf.c) eine Anzahl zurückgeben kann, die gleich seinem Ziel-Längenargument ist, führt ein Feld, das den Puffer genau füllt dazu, dass das abschließende NUL-Byte einen Byte jenseits des Endes landet; dies stellt einen Einzelbyte-Out-of-Bounds-Schreibzugriff in benachbarten Stack-Speicher dar.
Der +KCELLMEAS-Zellmessungs-Handler on_cmd_atcmdinfo_rssi() ist noch schlimmer: Er übergibt die Drahtlänge len als Zielgröße (net_buf_linearize(value, len, *buf, 0, len)), sodass eine Antwortzeile von mehr als 128 Bytes den value-Stack-Puffer mit angreifergesteuerbarem Inhalt überläuft. Die Zeilenlänge stammt aus net_buf_findcrlf(), das Bytes über die gesamte Kette der net_buf-Fragmente ansammelt und nicht auf 128 begrenzt ist, sodass eine zu lange Zeile den Fehler erreicht.
Die Daten stammen vom Zellmodem über UART, angetrieben durch das Netzwerk: Operator-Scan-Ergebnisse, +CGCONTRDP IP/DNS-Informationen, Socket-Hinweise und +KCELLMEAS-Nachbarzellenberichte. Ein Angreifer, der in der Lage ist, die Ausgabe des Modems zu formen – eine böswillige Basisstation, ein kompromittiertes Modem-Basband oder ein entfernter Peer, der überlange Antwort-Frames einspeist – kann eine Zeile jenseits von 128 Bytes treiben. Die Handler werden im RX-Thread des Treibers im Kernel-Kontext ausgeführt, sodass die Beschädigung kernelseitig erfolgt.
Der +KCELLMEAS-Pfad ist ein vollständiger Stack-Buffer-Overflow, dessen schlimmster Fall eine Code-Ausführung im Kernel-Kontext ist und dessen Mindestfall ein zuverlässiger Absturz ist; die übrigen Stellen sind Einzelbyte-NUL-Out-of-Bounds-Schreibzugriffe. Die Ausnutzung erfordert, dass das Modem eine zu lange AT-Antwortzeile ausgibt, was bei einem benachbarten (Zellfunk-Funk-) Vektor zu einer hohen Angriffskomplexität führt. Der Fix übergibt sizeof(dst) - 1 (und korrekte explizite Grenzen für die IMSI- und +KCELLMEAS-Stellen), sodass der Terminator immer innerhalb der Grenzen bleibt.
VulDB is the best source for vulnerability data and more expert information about this specific topic.