Grave vulnerabilidad en EXIM pone en peligro miles de servidores de correo (CVE-2018-6789)

El 6 de marzo de 2018, "meh" publicó el detalle de una vulnerabilidad clasificada como CVE-2018-6789 que afecta a todas las versiones de Exim inferiores a 4.90.1, es decir, una vulnerabilidad activa ¡desde 1995!. Y se trata, nada más y nada menos, de una ejecución remota de código sin autenticación previa debido a un fallo en la función de decodificación base64 de este popular MTA, concretamente un error de cálculo off-by-one en la longitud del búfer al decodear base64 en la función "b64decode" en base64.c:
int
b64decode(uschar *code, uschar **ptr)
{
int x, y;
uschar *result = store_get(3*(Ustrlen(code)/4) + 1);

*ptr = result;
… rest of the base64 decoding algorithm …

Una cadena codificada en base64 de 4N + 3 de longitud asignará un búfer de tamaño 3N + 1, pero consumirá 3N + 2 bytes de la decodificación. Esto permite que la memoria del heap se sobrescriba al analizar la cadena base64. Tenéis otro buen análisis de la vulnerabilidad aquí.

Hasta ahora habíamos tenido ya algún PoC, pero recientemente hackk.gr ha publicado en EDB un exploit totalmente funcional que afecta a las versiones de Exim inferiores a la 4.90 y que ha sido probado en debian exim 4.89 y ubuntu exim 4.86_2... y, para que os hagáis una idea, Shodan arroja un resultado de casi un millón de servidores potencialmente vulnerables:
Sólo hay que tirar el exploit y ser pacientes... al final la shell reversa vendrá a nosotros...


Happy hunting!

Comentarios

  1. La pregunta es... ¿como se lanza ese exploit de hackk.gr? porque toma los parametros , pero no me aclaro que es cada uno.

    Necesito probarlo en mi servidor para verificar que no es vulnerable, pero no se como lanzar el exploit.

    ResponderEliminar
  2. Hola Vicente. Me darias un ejemplo de como ejecutarlo? Gracias

    ResponderEliminar

Publicar un comentario