Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
mt6985-CVE-2026-43499 — CVE-2026-43499 Exploit-Adapter für MT6985 MediaTek Dimensity 9300 (vivo PD2241) | Kitploit
Tools/GitHubGitHub/233laoliu/mt6985-cve-2026-43499
Exploit-FrameworksSchwachstellenanalyseExploitationReverse EngineeringForensikMobile SicherheitFirmware-AnalyseBinary-Exploitation
GitHub233laoliu/mt6985-cve-2026-43499

mt6985-CVE-2026-43499

CVE-2026-43499 Exploit-Adapter für MT6985 MediaTek Dimensity 9300 (vivo PD2241)

Repository anzeigen
124vor 2 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-43499 Fehlversuch: MT6985-Adaptionsversuch

Fazit: 68M Tokens investiert, kein Root erhalten.
Ursache: KernelSnitch-Timing-Angriff auf MTK Dimensity 9200 unzuverlässig, CONFIG_PANIC_ON_OOPS=y lässt keinen Raum für Trial-and-Error.
Dieser Artikel dokumentiert den vollständigen Fehlschlag-Prozess als Referenz für Nachfolger.


Hintergrund

ProjektWert
Gerätvivo PD2241 (Dimensity 9200 / MT6985), Android 15
FirmwarePD2241_A_15.2.10.2.W10.V000L1
Kernel5.15.178-android13-8-gfb31f5bdd612-dirty
BootloaderGesperrt (ro.boot.flash.locked=1)
SELinuxEnforcing
panic_on_oopsAktiv → jeder Kernel-OOPS = sofortiger Neustart
ExploitCyberMeowfia — CVE-2026-43499 (IonStack)
Quellbaumandroid_15.0_kernel_MT6985 (5.15.178) — nicht passend zur Geräteversion (Quelle ist android15 GKI, Gerät läuft android13 GKI)

Was wurde unternommen

1. Quellcode-Analyse → Struktur-Offsets extrahiert

Extrahiert aus arch/arm64/include/asm/memory.h + include/linux/fs.h + android/abi_gki_aarch64.xml:

  • Speicherlayout: KIMAGE_TEXT_BASE = 0xffffffc008000000, VA_BITS=39, DIRECT_MAP=256GB
  • task_struct: 36864 Bits, vollständig analysiert (ABI XML layout-offset-in-bits)
  • file_operations: kein iopoll (android13 GKI), IOCTL=0x48, open=0x68
  • cred: atomic_t usage = 4 Bytes, uid=0x04
  • struct page: 64 Bytes, slab_cache=0x18

Wichtige Erkenntnis: Quelle ist android15 GKI, Gerät ist android13 GKI — task_struct-Offsets weichen um 0x40~0x88 Bytes ab, können nicht direkt aus der Quelle übernommen werden.

2. Firmware-Entpackung → Symbole extrahiert

OTA zip (8.3GB)
  → payload.bin (8.2GB)
    → payload_dumper → boot.img (96MB, v4 header)
      → LZ4 entpacken → Image (50MB ARM64)
        → kallsyms-finder → 187810 Symbole

Symbole aus zwei Firmware-Versionen (15.2.7.6 / 15.2.10.2) extrahiert — dasselbe Symbol weicht zwischen den Versionen um 10KB~200KB ab, die richtige Version muss verwendet werden.

3. Disassemblierungs-Verifikation → capstone bestätigt kritische Offsets

# In rt_mutex_adjust_pi:
LDR x21, [x19, #0x8b0]  → pi_blocked_on = 0x8b0 (android15-Wert, nicht frankel)

Dies bestätigt, dass das task_struct-Layout dem android15-Zweig entspricht, nicht frankels android13.

4. Kompilierung → erfolgreich

NDK r29, make PROJECT=android_15.0_kernel_MT6985 → preload.so (150KB).

5. Ausführung → wiederholte Abstürze

[+] preload starting pid=25414
[+] p0 profile ... alle Symbole korrekt geladen
[-] KernelSnitch mm_struct leak failed     ← manchmal fehlt diese Zeile (gelegentlich erfolgreich)
[+] slide child context route=pselect      ← slide KASLR-Leak-Subprozess gestartet
[Kernel-Panic]                                ← rt_mutex_adjust_prio_chain+0x1b0

Absturz-Instruktion (capstone):

ldar w8, [x27]    ; x27 = waiter->lock (geladen aus [x28, #0x38])
                  ; x27-Wert ist Müll → keine Seitentabellen-Zuordnung → Translation Fault
                  ; → die() → panic → Neustart

Warum es fehlschlug

Grundursache 1: KernelSnitch auf MTK unzuverlässig

KernelSnitch ist der Einstiegspunkt des gesamten Exploits — es leakt die mm_struct-Adresse über Timing-Unterschiede im futex-Hash-Bucket:

  1. Kollisionserkennung erfolgreich — 5 Kollisionen bei niedriger Schwelle gefunden
  2. Bruteforce-Matching schlägt fast immer fehl — das Kernproblem:
MT6985 hat CONFIG_KASAN_HW_TAGS=y → Kernel markiert Slab-Allokationen mit MTE-Tags
mm_struct-Zeiger tragen KASAN-Tag → futex_hash basiert auf getaggtem Pointer

Aber Bruteforce scannt direct map (untagged Adressen) → berechneter Hash stimmt nicht überein
Selbst mit MTE-Tag-Durchlauf (0-14, insgesamt 15 Varianten), auf Systemen mit VA_BITS=39
überlappen Tag-Bits (bit56-59) mit Vorzeichenerweiterungs-Bits → einige Tag-Kombinationen
erzeugen ungültige Adressen → werden übersehen

Pixel-Geräte haben kein KASAN_HW_TAGS, dort funktioniert dieser Mechanismus. MTK nicht.

Grundursache 2: CONFIG_PANIC_ON_OOPS ist der Killer

Pixel:  Kernel-OOPS → dump_stack → weiterlaufen → Exploit kann es erneut versuchen
MT6985: Kernel-OOPS → die() → panic() → sofortiger Neustart → kein Raum für Trial-and-Error
Eine kleine Abweichung in der π-Kette bringt alles zum Absturz; auf Pixel wäre eine Abweichung
nur "diesmal nicht erfolgreich, andere Adressgruppe erneut versuchen".

Zudem ist der Bootloader gesperrt (flash.locked=1) → kein Flashen eines benutzerdefinierten Kernels möglich, um diese Option zu entfernen.

Grundursache 3: Kernel-Versionsdrift

Quellbaum: 5.15.178 android15 GKI
Gerät:     5.15.178-android13 (vivo vendor)

Obwohl die Hauptversionsnummern beide 5.15.178 sind, unterscheiden sich die GKI-Zweige (android13 vs android15), wodurch die Layouts kritischer Strukturen wie task_struct/cred inkonsistent sind. Nach wiederholtem Wechsel zwischen frankel/android15-Offset-Sätzen wurde die korrekte Version letztlich per Disassemblierung bestimmt.


Versuchte Anpassungen (alle wirkungslos)

ÄnderungZweckErgebnis
THRESHOLD_MULT 10→5→3Kollisionserkennungsschwelle senken<5 zu viele False Positives
APPENDED_FUTEXES 4096→8192Hash-Ketten-Differenz vergrößernKeine Wirkung
REPEAT_MEASUREMENT/AVERAGEMessgenauigkeit erhöhenKeine Wirkung
MTE=1Bruteforce Tags durchlaufen lassenLangsamer, Abstürze sogar reduziert
MM_STRUCT_SZ 0x500→0x400mm_struct-Schrittweite korrigierenNotwendig, ABI tatsächlich 992 Bytes
IDENTITY_END 64GB→256GBScan-Bereich erweiternZu langsam (MTE-Durchlauf), stimmt weiterhin nicht überein
TASK-Offsets: android15↔frankelKorrekte Offsets ermittelnDisassemblierung bestätigt android15
FOPS-Offsets: android15↔frankelandroid13 hat kein iopollfrankel verwendet

Aktueller Stand von target.h

In exploit/targets/android_15.0_kernel_MT6985/target.h:

KategorieVertrauensgradVerifikationsmethode
SpeicherlayoutKorrektmemory.h-Berechnung + kallsyms _text-Verifikation
Symbol-Offsets (22)KorrektAus 15.2.10.2 boot.img extrahiert
task_struct-OffsetsKorrektABI XML + capstone-Disassemblierung (pi_blocked_on=0x8b0)
FOPS-OffsetsFehlerhaft (am 2026-07-31 korrigiert)Ursprünglich von frankel übernommen (android13 ohne iopoll); Quellbaum-ABI hat tatsächlich iopoll@0x30, ioctl=0x50, open=0x70 — siehe VERIFICATION.md
CRED-OffsetsKorrekt (verifiziert)ABI XML: uid=0x04, securebits=0x24, caps=0x28, security=0x78

Assemblierung erfolgreich, läuft, scheitert auf der letzten Meile.


Wenn du weitermachen willst

Notwendige Bedingungen (alle erforderlich)

  1. CONFIG_PANIC_ON_OOPS entfernen — entweder benutzerdefinierten Kernel flashen (Bootloader-Entsperrung erforderlich) oder ein MT6985-Gerät finden, bei dem diese Option standardmäßig deaktiviert ist
  2. KernelSnitch lösen — Cache-Timing-Kalibrierung für MTK Dimensity 9200 erforderlich, oder KernelSnitch im Exploit vollständig durch eine andere mm_struct-Leak-Methode ersetzen

Mögliche alternative Ansätze

  • /proc/self/pagemap — auf diesem Gerät eingeschränkt (gibt nur Nullen zurück)
  • MTK-spezifische Debug-Schnittstellen (/proc/mtk_*) — vorhanden, aber weitere Analyse erforderlich
  • MTK-Kamera/GPU-Treiber-ioctl-Schwachstellen — einfacherer Privilege-Escalation-Pfad
  • Auf Community-Adaption für MTK-Varianten warten

Verbleibender Wert dieses Repos

Tool herunterladen