jueves, 17 de abril de 2003

Desbordamiento entero en rutinas Sun RPC XDR

Gran parte de los sistemas que utilizan el sistema XDR definido por SUN
son susceptibles de un ataque de desbordamiento entero que permite, bajo
circunstancias propicias, que un atacante remoto mate servicios e
incluso llegue a ejecutar código arbitrario en el servidor.

Las primitivas XDR (External Data Representation) son rutinas que
permiten la representación uniforme de tipos de datos sin tener en
cuenta la arquitectura del sistema por su traducción a una
representación externa, y viceversa.

La vulnerabilidad radica en la función "xdrmem_getbytes()", en la que
existe un desbordamiento entero. Un desbordamiento entero es aquel en el
que una variable "entera" se sale de su rango numérico y "da la vuelta".
Por ejemplo, si la variable es un entero de 8 bits, sin signo, los
valores posibles van del 0 al 255 (2^8-1). Si la variable, en un momento
determinado, contiene el valor 253 y se le suma 10, el resultado no es
263 sino 7. Asimismo, si la variable contiene el valor 3 y le restamos
5, el resultado no es -2 sino 254.

Dependiendo del uso concreto que se haga de "xdrmem_getbytes()", estos
desbordamientos enteros pueden ser ocasionar la caída del servicio o
desbordamientos de búferes que den opción a la ejecución de código
arbitrario en el servidor. Según las circunstancias, también se puede
exponer información sensible al atacante, en el datagrama de respuesta a
su petición.

La vulnerabilidad afecta a las librerías SUN originales y a sus
derivados, como las utilizadas en los *BSD y en la GLIBC (Linux). Dado
que estas librerías son usadas por infinidad de aplicaciones, será
necesario:

a) Actualizar las librerías, tanto estáticas como dinámicas.
b) Parar y relanzar las aplicaciones que carguen las librerías de forma
dinámica, para que tomen la nueva versión.
c) Reenlazar las aplicaciones que carguen las librerías de forma
estática, para que tomen la nueva versión.

Dada la gran difusión de esta tecnología y su penetración en infinidad
de aplicaciones de muy bajo nivel (por ejemplo, la GLIBC), se recomienda
seguir con detalle y cuidado las instrucciones de actualización de cada
fabricante.


Jesús Cea Avión
jcea@hispasec.com


Más información:

CERT® Advisory CA-2003-10 Integer overflow in Sun RPC XDR library
routines
http://www.cert.org/advisories/CA-2003-10.html

XDR Integer Overflow
http://www.eeye.com/html/Research/Advisories/AD20030318.html

Overflow de Enteros en Rutinas de Bibliotecas XDR de SUN RPC
http://www.unam-cert.unam.mx/Boletines/Boletines2003/boletin-UNAM-CERT-2003-010.html

Integer overflow in Sun RPC XDR library routines
http://www.kb.cert.org/vuls/id/516825

01/08/2002 - Desbordamiento de búfer remoto en Sun RPC
http://www.hispasec.com/unaaldia/1376