Progreso en la construcción de un exploit para OpenSSH 9.1

Qualys encontró una manera de eludir malloc y la protección de doble liberación para iniciar una transferencia de control al código utilizando una vulnerabilidad en OpenSSH 9.1 que se determinó que tenía un riesgo bajo de crear un exploit funcional. Al mismo tiempo, la posibilidad de crear un exploit que funcione sigue siendo una gran incógnita.

La vulnerabilidad es causada por una doble autenticación previa. Para crear las condiciones para que se manifieste la vulnerabilidad, basta con cambiar el banner del cliente SSH a “SSH-2.0-FuTTYSH_9.1p1” (u otro cliente SSH antiguo) para configurar los indicadores “SSH_BUG_CURVE25519PAD” y “SSH_OLD_DHGEX”. Después de configurar estos indicadores, la memoria para el búfer “options.kex_algorithms” se libera dos veces.

Los investigadores de Qualys, mientras manipulaban la vulnerabilidad, pudieron hacerse con el control del registro del procesador "%rip", que contiene un puntero a la siguiente instrucción a ejecutar. La técnica de explotación desarrollada le permite transferir el control a cualquier punto en el espacio de direcciones del proceso sshd en un entorno OpenBSD 7.2 no actualizado, suministrado de forma predeterminada con OpenSSH 9.1.

Cabe señalar que el prototipo propuesto es una implementación de solo la primera etapa del ataque: para crear un exploit que funcione, es necesario eludir los mecanismos de protección ASLR, NX y ROP, y escapar del aislamiento de la zona de pruebas, lo cual es poco probable. Para resolver el problema de eludir ASLR, NX y ROP, es necesario obtener información sobre las direcciones, lo que se puede lograr identificando otra vulnerabilidad que conduzca a la fuga de información. Un error en el proceso principal privilegiado o en el kernel puede ayudar a salir del entorno limitado.

Fuente: opennet.ru

Añadir un comentario