
Exploit fiable d'exécution de code à distance pour CVE-2026-25243 ciblant jemalloc Redis. Exécute des commandes arbitraires via une seule commande RESTORE conçue sans DEBUG, /proc, ni ROP. Inclut un heap grooming complet et une chaîne arb-read pour le contournement d'ASLR.
Exécution fiable de code à distance à partir d'une seule commande RESTORE contrefaite sur jemalloc Redis — pas de commande DEBUG, pas de /proc, pas de gdb, pas de ROP, ASLR activé. Exécute la commande de l'attaquant en tant que processus redis (root dans les images par défaut).
🔒 Dépôt privé — recherche de sécurité autorisée / divulgation coordonnée uniquement. Ne pas redistribuer. Le bogue est corrigé en amont (6.2.22 / 7.2.14 / 7.4.9 / 8.2.6 / 8.4.3 / 8.6.3, commit
b9dde6fc) ; cela cible le chemin pré-correction.
La technique est prouvée de bout en bout — une exécution fraîche sur le banc d'essai de référence a déclenché system("id") → uid=0(root) (ASLR activé, ), confirmé le 2026-07-02. Dans ce , les premières étapes sont confirmées fonctionnelles (double-free, overlap, arb-read → et tous deux récupérés correctement), mais la fuite finale — via — est et la constante fournie ne s'est pas correctement transférée au groom de ( répété). (WRITEUP.md §7) avant de vous y fier ; le code de déclenchement de référence est le harnais de développement /. Tout le reste est validé.
enable-debug-command nosystemblob_baseOFF_BLOBROBJexploit.pyblob_read_shortOFF_BLOBROBJ pour votre build+séquence exactepwn.pypwnd.pyexploit.py — Preuve de concept autonome (stdlib uniquement). Définissez les offsets dans le dictionnaire PROFILE en haut.WRITEUP.md — analyse technique complète (bogue, groom, lecture arbitraire sans DEBUG, déterminisme, finition).python3 exploit.py --host <target> --port 6379 --cmd 'id' --tries 40
# fires system("<cmd>") as the redis process; verify out-of-band or use a reverse-shell --cmd.
Validé sur Redis 8.6.2 (8a8f1a3bb), jemalloc-5.3.0, x86-64, glibc bookworm, ASLR=2, enable-debug-command no. Pour une build différente, recalibrez les offsets PROFILE — voir WRITEUP.md §7.
EVAL→clo → lecture arbitraire PIE (clo+33) → lecture arbitraire system (free@GOT) + blob_base (blob_robj) → placer un faux dictType{hashFunction=system} dans un blob de 16 Mo → forger h2->dict->type → HGET h2 "<cmd>" == system("<cmd>").