Un estudio cuestiona la eficacia del flag -fret-clean de OpenBSD

Fuentes: Evaluating OpenBSD's -fret-clean flag

Un equipo de investigación independiente ha publicado un artículo en IEEE Xplore que evalúa el flag -fret-clean de OpenBSD, introducido en la versión 7.6 para arquitecturas amd64. La mitigación ordena al compilador LLVM insertar, tras cada instrucción call, un movq que pone a cero la dirección de retorno en la pila, con el objetivo de dificultar la búsqueda de gadgets de programación orientada al retorno (ROP). OpenBSD la aplica solo al kernel, libc, libcrypto, ld.so y los binarios de SSH.

El trabajo señala que la estrategia de anular la dirección de retorno en la pila ya se ha reinventado al menos tres veces y que experiencias análogas, como los flags -fzero-call-used-regs de GCC y LLVM, o el extinto -mmitigate-rop de GCC, terminaron por abandonarse tras comprobarse que su coste en rendimiento y tamaño de binario no se traducía en una mejora real de la seguridad. Los autores sostienen que el éxito local de una mitigación no implica éxito global: los atacantes no se ven constreñidos de forma significativa por mecanismos que solo actúan sobre vectores triviales.

Los datos brutos del experimento están disponibles en el repositorio de ciencia abierta del centro de investigación. El artículo concluye que -fret-clean, al igual que mitigaciones similares, debe demostrar que compensa los costes que impone antes de mantenerse en un esquema de defensa en profundidad.