|
Ejecución remota de código en Shareaza 2.2.1.0
|
|
VSantivirus No. 2033 Año 10, miércoles 1 de febrero de 2006
Ejecución remota de código en Shareaza 2.2.1.0
http://www.vsantivirus.com/vul-shareaza-160106.htm
Por Alan Philip Ballarino - Zeus
www.Ratax.com.ar
Shareaza es un popular cliente P2P, con soporte para variadas redes como eDonkey2000, Gnutella, BitTorrent y Gnutella2. Por su rapidez, escaso peso y otras cualidades ha ganado varios adeptos entre los usuarios de Microsoft Windows.
El 16 de enero le fue reportado, por Ryan Smith, al equipo de desarrollo de Shareaza la existencia de dos vulnerabilidades en sus archivos, que permitirían la ejecución remota de código sobre el sistema vulnerable.
Estas vulnerabilidades han sido testeadas solo en la versión 2.2.1.0. Se presume que otras versiones también podrían ser afectadas.
La vulnerabilidad se centra en un desbordamiento de entero dentro de Shareaza (NOTA VSA: Un "integer overflow" o desbordamiento de entero, ocurre cuando una variable definida como entera, sobrepasa los valores asignados).
Debido a su compatibilidad con numerosas redes de pares, es necesario que la aplicación maneje ciertos esquemas para compartir archivos, donde el usuario forma parte importante, siendo muchas veces numerado, lo que permite sea identificado por un atacante remoto.
Básicamente las vulnerabilidades se hallan en tres archivos, btpacket.cpp, edpacket.cpp y packet.h.
En el archivo btpacket.cpp el error puede hallarse en la rutina BtPacket::ReadBuffer(), que se utiliza para comprobar que el tamaño del paquete no sea superior al búfer asignado. La vulnerabilidad se produce al no poder validar valores que superen determinadas cifras, provocando un desbordamiento de entero, y haciendo que la función siga procesando el paquete recibido sin ningún otro tipo de comprobación.
En la rutina CEDPacket::ReadBuffer(), que se encuentra en el archivo edpacket.cpp, varios bloques de código se encargan de validar los paquetes recibidos desde la red. El código también falla cuando el tamaño de los paquetes superan un valor determinado, dando como resultado que continúe el proceso sin ningún tipo de control.
Por ultimo la función CPacket::Write(), en el archivo packet.h, se utiliza para copiar datos a los objetos del paquete. En el se generan dos errores a causa de un mal manejo de los valores grandes, vulnerando así al sistema.
Soluciones
No existen soluciones al momento de esta alerta.
La notificación a los desarrolladores del programa fue hecha el 16 de enero.
Relacionados:
Shareaza advisory (16/ene/06) (PDF)
http://www.hustlelabs.com/shareaza_advisory.pdf
Página oficial Shareaza
http://shareaza.sourceforge.net/
Créditos:
Ryan Smith
* Alan Philip Ballarino (Zeus), es Webmaster y Webdeveloper de
www.Ratax.com.ar y www.OpenRatax.com.ar.
[Artículo publicado originalmente en
www.ratax.com.ar/noticias-537-ejecucion-remota-codigo-shareaza-2.2.1.0]
(c) Video Soft - http://www.videosoft.net.uy
(c) VSAntivirus - http://www.vsantivirus.com
|
|
|