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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
libheif-grid-nextjs-rce — Privater Fortbridge-PoC für die CVE-2026-32740 Next.js/sharp Leak-to-memcpy-GOT-RCE-Kette | Kitploit
Tools/GitHubGitHub/fortbridge-uk/libheif-grid-nextjs-rce
SpeicherforensikSchwachstellenanalyseExploitationReverse EngineeringWebanwendungs-ExploitationPenetrationstestsPayload-EntwicklungBinary-Exploitation

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Labs & Praxis
GitHubfortbridge-uk/libheif-grid-nextjs-rce

libheif-grid-nextjs-rce

Privater Fortbridge-PoC für die CVE-2026-32740 Next.js/sharp Leak-to-memcpy-GOT-RCE-Kette

Repository anzeigen
1vor 3 TagenNoch nicht geprüft

libheif grid-to-GOT Next.js RCE

Funktionierender Proof of Concept, der CVE-2026-32740 im fest verdrahteten Next.js/sharp-Bildstack in einen Write an eine gewählte Adresse und einen validierten /usr/bin/id-Callback verwandelt.

Dies ist ein privates Fortbridge-Forschungsrepository. Verwende es nur gegen das enthaltene Lab oder ein anderes System, für dessen Test du ausdrücklich autorisiert bist.

Was der PoC beweist

Der Exploit nutzt ausschließlich die HTTP-Upload- und Bildoptimierungsrouten des Ziels:

  1. Er übermittelt wiederholt ein ASLR-Leak-AVIF und vergleicht Zeiger in den zurückgegebenen Pixeln mit jedem exakten libvips-Profil im Manifest.
  2. Er fährt nur fort, wenn ein Profil und eine randomisierte libvips-Basis von allen erforderlichen unabhängigen Ankern gestützt werden.
  3. Er löst den Zwei-Byte-Fake-Node-Selektor mithilfe des ausgewählten Profils auf. Das Stock-Profil erfordert einen vollständigen markierten Heap-Record. Jedes PIE-Profil verwendet seine unabhängig gemessene Allocator-Page-Lane-Beziehung.
  4. Er nutzt libvips' interne Kopie von GLibs g_module_open_full, eine GModule- Routine, die dlopen umschließt, um eine native Shared Library aus einem Datei- pfad zu laden. Der Exploit berechnet ihre Laufzeitadresse als die wiederhergestellte libvips- Basis plus den fest verdrahteten Profil-Offset 0x3e995e. Das Laden der Bibliothek führt ihren Konstruktor aus.
  5. Auf der Angreifer-Maschine kompiliert er ein kleines Shared Object, dessen Konstruktor den festen Befehl /usr/bin/id ausführt. Er sendet dieses ELF über die öffentliche Upload-Route unter dem Bildnamen x.jpg und dem Medientyp image/jpeg.
  6. Er erzeugt ein 116x33-Vier-Kachel-AVIF, dessen Cb-Überlauf die Cr- Ebene nach memcpy@GOT - 16 umleitet.
  7. Die erste Zeile an der gewählten Adresse speichert uploads/x.jpg unmittelbar vor dem GOT-Slot und ersetzt memcpy@GOT durch den abgeleiteten GModule-Loader. Die nächste Zeile ruft diesen Loader mit dem bereits in RDI befindlichen Bibliothekspfad auf.
  8. Das Laden des Shared Object ruft seinen Konstruktor auf, der die /usr/bin/id-Ausgabe über TCP zurückgibt. Ein Token pro Versuch verhindert, dass ein veralteter Callback als Erfolg gezählt wird; die zurückgegebene uid=...-Zeile ist der Beweis.

Die ursprünglichen libvips-relativen Validierungsläufe sind in evidence/libvips-gmodule-rce-10x.json aufgezeichnet. Alle zehn frischen Prozesse gaben gültige /usr/bin/id-Ausgaben mit zehn verschiedenen randomisierten libvips-Basen und zehn unabhängig abgeleiteten Loader-Adressen zurück.

Die exakten Ubuntu-Laufdaten sind in evidence/libvips-gmodule-pie-rce-10x.json. Die exakten Debian-13-APT-Laufdaten sind in evidence/debian13-apt-libvips-gmodule-rce-10x.json.

Gemessene Ergebnisse

Wir haben den vollständigen Exploit gegen 10 neu gestartete Ubuntu-Node-Prozesse und 10 neu gestartete Debian-Node-Prozesse getestet. Alle 20 Läufe erreichten die Befehls- ausführung und gaben die /usr/bin/id-Ausgabe des Ziels zurück. Der Exploit berechnete außerdem für jede randomisierte libvips-Basis eine andere GModule-Loader-Adresse.

Vor der Erstellung der finalen Payload kann der Exploit mehrere ASLR-Leak- Versuche benötigen. Jeder Versuch lädt das Leak-AVIF hoch, schickt es durch die Optimierungs- route und prüft das zurückgegebene PNG auf vier Zeiger, die ein Profil und eine libvips-Basis identifizieren. Ubuntu benötigte zwischen 3 und 23 Versuche. Debian benötigte zwischen 3 und 15. Unvollständige oder mehrdeutige Evidenz führt zu einem weiteren Versuch anstelle eines geratenen Profils.

Das Projekt hat außerdem 96 automatisierte Regressionstests. Dies sind Code-Level- Prüfungen, keine 96 zusätzlichen Exploit-Läufe. Sie decken Profilvalidierung, Klassifizierung zurückgegebener Zeiger, Heap-Kalibrierung, Adressberechnung, Payload-Konstruktion und sicheres Fehlschlagen ab, wenn die Evidenz nicht zu einem unterstützten Ziel passt.

Getestete Stacks

Beide x86-64-Ziele verwenden Next.js 15.5.23, sharp 0.34.4, gebündeltes libvips 8.17.2, gebündeltes libheif 1.20.2, ASLR und NX. Ihre nativen Laufzeiten unterscheiden sich:

ProfilNodeglibclibstdc++Selektor-Beziehung
Ubuntu25.8.1, PIE ET_DYN2.43-2ubuntu2.46.0.350x6000 - 0x690 = 0x5970
Debian 13Debian APT 20.19.2, PIE ET_DYN2.41-12+deb13u46.0.330x6000 - 0x3a0 = 0x5c60

Die vollständigen Build-IDs und SHA-256-Werte sind in profiles/native_stack_profiles_pie.json. Die Debian-Paket-, Artefakt-, Route-Smoke- und Fünf-Lebensdauer-Layout-Messungen sind in evidence/debian13-profile-derivation.json erfasst. Das Debian-Ziel verwendet das Standard-Distributionspaket nodejs=20.19.2+dfsg-1+deb13u3; Node wird nicht aus dem Quellcode kompiliert.

Fest verdrahtete Profilwerte

Die Kette benötigt nicht die randomisierte Node-Basis. Ihr Kontrollziel ist die interne g_module_open_full-Routine innerhalb von libvips, deren randomisierte Basis aus zurückgegebenen Pixeln wiederhergestellt wird. Jedes versionierte Profil verdrahtet die build-spezifischen Konstanten, die der Exploit benötigt, fest:

  • Offsets zurückgegebener Zeiger, die verwendet werden, um die libvips-Basis wiederherzustellen und ein kompatibles Native-Stack-Profil auszuwählen;
  • der memcpy@GOT-Offset und der g_module_open_full-Offset plus seine validierenden Instruktionsbytes;
  • Allocator-Page-Lane- und Page-zu-Fake-Node-Beziehungen;
  • Objekt-Layout-Offsets, Kachelgeometrie, Zeilenbreite und Anwendungspfade.

Die randomisierte libvips-Basis, die resultierende Laufzeit-Loader-Adresse und der finale Zwei-Byte-Selektor sind nicht fest verdrahtet. Sie werden für jeden Ziel- prozess aus zurückgegebenen Pixeln und dem ausgewählten Profil abgeleitet.

Der Exploit schlägt geschlossen fehl, wenn ein Profil fehlerhaft ist oder zurückgegebene Pixel nicht genau ein unterstütztes Profil/Basis-Paar auswählen. Das Stock-Profil erfordert außerdem seinen vollständigen zurückgegebenen Heap-Record. Ein Profil ist eine exakte Kompatibilitäts- aussage, daher sollte der Operator die Zielartefakte offline verifizieren, bevor er es verwendet.

Die Loader-ABI ist wichtig. Der überschriebene Aufruf liefert den Bibliothekspfad in RDI, einen Bildzeilen-Zeiger in RSI und die 58-Byte-Kopierlänge in RDX. Diese exakte profilierte GModule-Routine verwendet nur unterstützte Flag-Bits aus ESI und dereferenziert RDX auf dem erfolgreichen Ladepfad nicht. Ein Offline-Harness validierte diesen Einstiegspunkt und die Instruktionssignatur, bevor er in den gemessenen Läufen verwendet wurde.

Anforderungen

  • Linux x86-64
  • Python 3.11 oder später
  • ffmpeg mit dem libaom-av1-Encoder
  • ein C-Compiler, der als cc auf der Angreifer-Maschine verfügbar ist
  • eine IPv4-Callback-Adresse, die vom Ziel aus erreichbar ist
  • Node.js und npm, um das Lab direkt auszuführen, oder Docker für eines der beiden Ziele

Installiere die einzige Python-Abhängigkeit:```bash python3 -m venv .venv . .venv/bin/activate python3 -m pip install -r requirements.txt

Bestätigen Sie die AV1-Kodierungsunterstützung:```bash
ffmpeg -hide_banner -encoders | grep libaom-av1

Das enthaltene Lab starten

Tool herunterladen