Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-12295-UXXS-in-my-wasm — Firefox forge de srcdoc de contenu vers parent (N-day, bug 2040160) : PDocumentChannel falsifié avec SrcdocData sur un URI non-about:srcdoc -> HTML de l'attaquant servi à l'origine de la victime (UXSS), via injection du chemin d'envoi mojo-port depuis un processus de contenu compromis | Kitploit
Outils/GitHubGitHub/sneakynachos/cve-2026-12295-uxxs-in-my-wasm
Analyse des VulnérabilitésExploitationExploitation d'Applications WebArticles et RechercheDéveloppement de Charges Utiles
GitHubsneakynachos/cve-2026-12295-uxxs-in-my-wasm

CVE-2026-12295-UXXS-in-my-wasm

Voir le dépôt
1il y a 2 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Firefox forge de srcdoc de contenu vers parent (N-day, bug 2040160) : PDocumentChannel falsifié avec SrcdocData sur un URI non-about:srcdoc -> HTML de l'attaquant servi à l'origine de la victime (UXSS), via injection du chemin d'envoi mojo-port depuis un processus de contenu compromis

Partager

CVE-2026-12295 — données srcdoc sur un URI non-about:srcdoc (UXSS Firefox)

Preuve de concept : un processus de contenu compromis forge un chargement PDocumentChannel dont le nsDocShellLoadState transporte SrcdocData accompagné d'un URI arbitraire. Les builds vulnérables servent le HTML de l'attaquant comme document à l'origine de la victime — lecture même-origine + exfiltration (UXSS).

Cible : Firefox 149.0a1 nightly @ 2fbc0748c4 (vulnérable, pré-correction), macOS arm64. Corrigé dans Firefox 152 — bug 2040160, commit 54dc16d08771 « Reject srcdoc data on non-about:srcdoc URI loads ».

Le bug

Le processus parent désérialise un nsDocShellLoadState depuis les messages IPDL contenu→parent. Le constructeur vulnérable ne rejetait que pour les chargements déclenchés par le contenu ; n'était pas validé. Lorsqu'un état de chargement transporte des données srcdoc avec un URI qui n'est pas , le docshell construit un canal d'entrée-flux qui sert le HTML srcdoc — et le document résultant obtient l'origine de l'URI.

javascript:
SrcdocData
about:srcdoc
à cet URI

La correction ajoute un FatalError dans le constructeur IPDL de nsDocShellLoadState lorsque !mSrcdocData.IsVoid() && !mURI->SchemeIs("view-source") && !NS_IsAboutSrcdoc(mURI), plus des assertions de durcissement dans nsDocShell et Document::StartDocumentLoad.

Bug frère : CVE-2026-74939 (RemoteTypeOverride) — même constructeur, même message porteur, même mécanisme de livraison (voir ../poc-cve-2026-74939). Cette PoC réutilise cette forge avec un champ différent inversé ; aucun RemoteTypeOverride nécessaire.

La démo

  • Page attaquante srcdoc.html à http://127.0.0.1:8778 (origine A, compromise via les primitives wasm de l'étape 1 dans wasm-bytes.js).
  • Elle forge un constructeur PNecko::PDocumentChannel : URI = http://localhost:8778/nav.html (origine B), SrcdocData = <HTML attaquant>, BrowsingContext de niveau supérieur d'une popup about:blank même-processus — livré via le chemin d'envoi mojo réel (operator new → constructeur IPC::Message → Pickle::WriteBytes → MessageChannel::Send).
  • Le parent accepte le chargement, bascule le processus de la popup vers webIsolated=http://localhost, et le docshell sert notre HTML comme document à l'origine B.
  • La charge utile récupère /secret.txt (même-origine sur B — une véritable requête cross-origin depuis A serait bloquée par CORS) et l'exfiltre vers A.

Preuve (/tmp/srv.log après ./irun) :

root@kitploit:~
REQ_GET /secret.txt
REQ_GET /exfil?d=flag%7Bsrcdoc-crossed-origins-2040160%7D

Fichiers

FichierObjectif
srcdoc.htmlPage PoC, exécutée dans le processus de contenu compromis
forge.pyconstruit le message forgé (auto-vérifiant) → forge.bin/forge.json
wasm-bytes.jsprimitives de l'étape 1 : R/W arbitraire, appels funcref (CVE-2026-2796)
mdrive2.pyharnais marionette pour lancer et piloter Nightly
irunexécution instrumentée : lldb attaché au parent + preuves MOZ_LOG/srv.log
profile.user.jspréférences du profil Firefox (fission activé, dump activé)
parse_dc.pyanalyseur octet-exact pour les messages DocumentChannel capturés
captured-messages/dc_1.binmessage réel capturé, utilisé comme modèle de forge
nav.html, secret.txtfixture de la page victime + secret pour la démo

Exécution

Prérequis : build Nightly vulnérable à /Users/sid/gecko-2766/obj-browser, .venv avec psutil, et un serveur web sur 0.0.0.0:8778 servant ce répertoire (par ex. python3 /tmp/srv.py, journalisant dans /tmp/srv.log).

root@kitploit:~
python3 forge.py     # construit forge.bin/forge.json (auto-vérifiant)
./irun               # lance + injecte + collecte les preuves

Remarque : un processus de contenu peut SIGSEGV lors du démontage après l'envoi (GC sur les objets factices) ; toutes les preuves sont émises avant cela.

Références

  • Bug Mozilla 2040160 — commit de correction 54dc16d08771 (MFSA 2026-57, Firefox 152)
  • CVE-2026-74939 — forge d'état de chargement frère (RemoteTypeOverride)
  • CVE-2026-2796 — RCE de contenu de l'étape 1 fournissant les primitives
Télécharger l’outil