Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

Desbordamiento de Búffer en el demonio SSH y la librería RSAREF2

Última Actualización: 21 de Enero de 2.000 - Viernes

Artículo publicado en el boletín Una-Al-Día de Hispasec, el 23 de Diciembre de 1.999.

CORE SDI ha descubierto dos errores de desbordamiento de búffer en el demonio SSH y en la librería RSAREF2 que, conjuntamente, permiten la ejecución de código arbitrario en la máquina del usuario, típicamente con privilegios de administrador o "root".

La librería RSAREF2 es una librería gratuíta distribuída por la compañía RSA a mediados de los años 90, como implementación criptográfica de referencia de sus algoritmos patentados. Dicha librería es de uso OBLIGATORIO para cualquier programa no comercial que se use en EE.UU., por cuestiones de patentes. Esta librería tiene un problema de desbordamiento de búffer si se le introducen datos maliciosos en la entrada. Dicho desbordamiento permite la ejecución de código arbitrario con los privilegios en curso, típicamente "root" o administrador.

Por otra parte SSH1 es una implementación del conocido protocolo SSH (Secure SHell), que permite el establecimiento de conexiones seguras entre máquinas para, por ejemplo, poder acceder y administrar de forma segura servidores remotos. Las implementaciones SSH hasta la versión 1.2.27 inclusive son vulnerables a un ataque de desbordamiento de búffer que, si bien no puede ser utilizado para ejecutar código arbitrario, permite injectar entradas maliciosas a la librería RSAREF2 que, a su vez, posibilitan la ejecución de código merced al error que acabamos de indicar.

Para solucionar el problema (que sólo existe si se compila SSH 1.2.27 y previos con la opción "--with-rsaref", que es obligatorio únicamente en EE.UU.) se puede o bien parchear la librería RSAREF2 o bien actualizar el cliente SSH a la versión 1.2.28.

En este mensaje se incluye el parche para RSAREF2. Aunque la licencia RSAREF2 prohibe cualquier modificación en el código salvo para realizar adaptaciones a otras arquitecturas o para mejorar su velocidad, RSA ha autorizado por escrito la aplicación de parches de seguridad, a partir de la publicación de este problema.

Parche:

>>>>>
--------------------------------------- rsaref2.patch
*** rsa.original.c Fri Mar 26 14:01:48 1994
--- rsa.c Fri Dec 10 12:56:34 1999
***************
*** 33,38 ****
--- 33,41 ----
    unsigned char byte, pkcsBlock[MAX_RSA_MODULUS_LEN];
    unsigned int i, modulusLen;

+   if (publicKey->bits > MAX_RSA_MODULUS_BITS)
+     return (RE_LEN);
+
    modulusLen = (publicKey->bits + 7) / 8;
    if (inputLen + 11 > modulusLen)
      return (RE_LEN);
***************
*** 78,83 ****
--- 81,89 ----
    unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];
    unsigned int i, modulusLen, pkcsBlockLen;

+   if (publicKey->bits > MAX_RSA_MODULUS_BITS)
+     return (RE_LEN);
+
    modulusLen = (publicKey->bits + 7) / 8;
    if (inputLen > modulusLen)
      return (RE_LEN);
***************
*** 128,133 ****
--- 134,142 ----
    int status;
    unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];
    unsigned int i, modulusLen;
+
+   if (privateKey->bits > MAX_RSA_MODULUS_BITS)
+     return (RE_LEN);

    modulusLen = (privateKey->bits + 7) / 8;
    if (inputLen + 11 > modulusLen)
***************
*** 168,173 ****
--- 177,185 ----
    unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];
    unsigned int i, modulusLen, pkcsBlockLen;

+   if (privateKey->bits > MAX_RSA_MODULUS_BITS)
+     return (RE_LEN);
+
    modulusLen = (privateKey->bits + 7) / 8;
    if (inputLen > modulusLen)
      return (RE_LEN);

<<<<<

Más información:

CORE SDI: Buffer Overflow in RSAREF2

CERT Advisory CA-99-15 Buffer Overflows in SSH Daemon and RSAREF2 Library

CIAC: Buffer Overflow Vulnerabilities in SSH Daemon and RSAREF2

Exploit (cliente SSH1.2.27 modificado)

Parches:
ftp://ftp.core-sdi.com/pub/patches/rsaref2.patch
http://www.cert.org/advisories/CA-99-15/rsa-patch.txt



Python Zope ©2000 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS