Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
cheese — CVE-2025-21479 preuve de concept, je pense | Kitploit
Outils/GitHubGitHub/zhuowei/cheese
Sécurité AndroidSécurité des Systèmes EmbarquésEscalade de PrivilègesAnalyse des VulnérabilitésExploitationRétro-ingénierieSécurité MobileSécurité MatérielleAnalyse de MicrologicielExploitation de Binaires
GitHub
2685968il y a 1 anVérifié par Kitploit

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 →
Partager
zhuowei/cheese

cheese

CVE-2025-21479 preuve de concept, je pense

Voir le dépôt

Exploit racine pour le Quest 3/3S pour la mise à jour du 7 août 2025 et antérieure, basé sur CVE-2025-21479.

capture d'écran de Magisk, Cheese et Termux avec un shell root

Avertissement :

  • Rooter est dangereux. Si vous briquez un Quest 3/3S, il n’y a aucun moyen de le réparer.
  • Cela désactive toute sécurité lorsque le root temporaire est activé.
  • N’exécutez PAS d’applications et ne naviguez PAS sur des sites web auxquels vous ne faites pas confiance.
  • N’écrivez PAS sur la partition de démarrage ou système. Vous BRIQUEREZ votre appareil.
  • N’utilisez PAS la fonction « Installer » de Magisk.
  • Vous pouvez sauvegarder votre deviceKey, votre jeton d’accès Meta et votre jeton d’accès Oculus après le root.

Téléchargement

Vous pouvez télécharger un APK dans la section Release.

Guide pour rooter

Voir le guide de FreeXR pour rooter le Quest 3/3S.

Rejoignez le Discord de FreeXR pour plus d’informations.

Versions supportées

  • Quest 3 : v79 5115411.12900.520 (7 août 2025) et inférieures, jusqu’à environ la version v71.
  • Quest 3S : v79 117688.9900.610 (6 août 2025) et inférieures, jusqu’à environ la version v71.

Aucune version plus récente n’est supportée. (Les versions plus anciennes peuvent être supportées avec plus de travail.)

Versions non supportées

Meta a corrigé CVE-2025-21479 dans ces versions et toutes les versions plus récentes. Elles ne seront JAMAIS supportées.

  • Quest 3 : v79 5115411.13420.520 (10 août 2025)
  • Quest 3S : v79 117688.10380.610 (10 août 2025)

Contient du code provenant de :

  • adrenaline par Project Zero
  • adreno_user de m-y-mo
  • Freedreno de Mesa
  • shellcode de Longterm Security
  • Magisk de topjohnwu et des développeurs de Magisk.

Source

Ce dépôt contient le code source de l’exécutable en ligne de commande cheese.

Le dépôt cheese-app contient le code source de l’application.

Remerciements

Ceci est basé sur les travaux d’autres chercheurs sur le GPU Adreno : ce code utilise du code provenant de :

  • Project Zero/Ben Hawkes’s Adrenaline
  • GitHub Security/Man Yue Mo’s adreno_user
  • Freedreno/Rob Clark’s kilroy

Des informations supplémentaires sur le firmware des GPU Adreno, y compris comment différencier le firmware et comment il fonctionne, proviennent de la documentation afuc de Freedreno, par Rob Clark, Connor Abbott et d’autres contributeurs de Freedreno/Turnip.

Merci aux développeurs de XRBreak et FreeXR pour toute leur aide et leurs contributions.

====

Preuve de concept pour CVE-2025-21479, démontrant qu’elle n’affecte que les appareils Adreno A7xx (Snapdragon 8 Gen 1 / XR2 Gen 2 et plus récents).

Ceci teste uniquement si l’appareil est vulnérable – faire en sorte que cela fasse réellement quelque chose d’intéressant nécessiterait davantage d’efforts.

Sur les appareils Adreno A7xx non corrigés, l’exécution de ceci devrait afficher :

0 0

Et si vous exécutez adb bugreport, dans le dmesg du noyau, vous verrez :

<2>[146532.566695][  T933] kgsl kgsl-3d0: GPU PAGE FAULT: addr = 4000031004 pid= 0 name=(null) drawctxt=1111638594 context pid = 0
<2>[146532.566756][  T933] kgsl kgsl-3d0: context=gfx3d_user TTBR0=0x1234567841414141 (write unknown fault)
<2>[146532.566783][  T933] kgsl kgsl-3d0: FAULTING BLOCK: CP

Sur les appareils Adreno A6xx, l’exécution de ceci affiche :

41414141 42424242

https://notnow.dev/notice/AvIZRBttG7DsDhx9hw

Les Adreno A7xx corrigés (par exemple, les appareils Samsung après la mise à jour de sécurité de mai 2025) devraient également afficher ceci, mais je ne l’ai pas testé.

Comment utiliser

# ajustez le chemin vers votre NDK Android
bash build.sh
adb push cheese /data/local/tmp
adb shell /data/local/tmp/cheese

Comment ça fonctionne

https://notnow.dev/notice/Av4sfoQjyrxogkZ6Ya

Ceci exécute un tampon de commandes sur le GPU Adreno (en utilisant une version modifiée du code Adrenaline de Project Zero)

Exécutez CP_SET_MODE – cela permet aux états de dessin de s’exécuter immédiatement.

Exécutez CP_SET_DRAW_STATE – cela définit IB_LEVEL à 0x4, puis appelle un tampon d’instructions.

À l’intérieur du CP_SET_DRAW_STATE, exécutez CP_SMMU_TABLE_UPDATE.

Voici le traitement du firmware pour CP_SMMU_TABLE_UPDATE :

CP_SMMU_TABLE_UPDATE:
// get IB level
and $02, $12, 0x3
// if not 0 (kernel ring buffer), go to CP_NOP
brne $02, 0x0, #l1873
<actual SMMU modify code >

Donc avec IB_LEVEL=4, le masquage de 4 avec 3 donne 0, ce qui passe la vérification pour le tampon en anneau du noyau.

Ainsi, vous pouvez modifier les tables de pages et faire en sorte que le GPU génère une erreur.

Comment j’ai différencié le correctif

J’ai différencié plusieurs firmwares Samsung Galaxy en utilisant le désassembleur afuc de Freedreno.

Le firmware du Galaxy S24 a été le plus utile, car son firmware GPU ne diffère que d’une version – le correctif de sécurité :

https://notnow.dev/notice/AuueszvUVUQnWqMQeO

https://notnow.dev/notice/Av0kDfOUPKhqHyjyxE

Firmware du Galaxy S24 : gen70900_sqe.fw

  • Mise à jour d’avril (S921USQU4BYD9) : v675
  • Mise à jour de mai (S921USQS4BYE4) : v676

https://notnow.dev/notice/Av0a7wUouVSa3EKkE4

La comparaison du firmware Adreno du Galaxy S24 entre v675 et v676 montre un type de différence :

        0163: b80300a4  CP_ME_INIT:
        0163: b80300a4  fxn355:
        0163: b80300a4  cread $03, [$00 + 0x0a4]
-       0164: 2a440003  and $04, $12, 0x3
+       0164: 2a440007  and $04, $12, 0x7
        0165: 98641813  ushr $03, $03, $04
        0166: c860004a  brne $03, b0, #l432
        0167: 01000000  nop

Désormais, chaque accès à $12 effectue un ET avec 0x7 au lieu de 0x3. Il n’y a aucun autre changement.

https://gist.github.com/zhuowei/46a68b9ee53589cdeaa40c11d15d895f

Le registre $12 semble être le niveau IB : https://gitlab.freedesktop.org/mesa/mesa/-/blob/c0f56fc64cad946d5c4fda509ef3056994c183d9/src/freedreno/afuc/README.rst#id23 https://gitlab.freedesktop.org/mesa/mesa/-/blob/c0f56fc64cad946d5c4fda509ef3056994c183d9/src/freedreno/afuc/README.rst#id29

Qui sélectionne la file d’attente des commandes de dessin à lire. https://gitlab.freedesktop.org/mesa/mesa/-/blob/c0f56fc64cad946d5c4fda509ef3056994c183d9/src/freedreno/afuc/README.rst#id31

Le matériel Adreno 7xx prend en charge 5 files d’attente (RB (tampon en anneau du noyau, privilégié), IB1, IB2, IB3, ou SDS) : https://cs.android.com/android/platform/superproject/main/+/main:external/mesa3d/src/freedreno/registers/adreno/adreno_control_regs.xml;l=327;drc=c0867f48117dc2c18b1ae689235cb1f60b237600

https://notnow.dev/notice/Av0kDfOUPKhqHyjyxE

Télécharger l’outil