Microsoft SQL Server, el conocido servidor de bases de datos de
Microsoft, contiene múltiples vulnerabilidades de desbordamiento de
búfer que pueden ser empleadas para lograr la ejecución de código de
forma remota en la máquina atacada.
Los procedimientos almacenados extendidos (Extended Stored Procedures,
XPs) son DLLs que pueden ser instaladas por el administrador de SQL
Server para proporcionar mayores funcionalidades. El problema radica
en srv_paraminfo(), la API de SQL Server empleada para comprobar los
parámetros de entrada para los XPs, ya que no proporciona ningún medio
para indicar al procedimiento la longitud necesaria del búfer. Y como
no todos los procedimientos incluidos en SQL Server son capaces de
realizar esa comprobación, un usuario malicioso podrá proporcionar un
parámetro demasiado largo a un XP afectado para lograr el
desbordamiento de búfer.

Los procedimientos almacenados extendidos pueden ser ejecutados por
cualquier componente cliente que pueda realizar una consulta SQL, como
Microsoft Access, o MSQuery o la utilidad ISQL incluida en SQL Server.
La sintaxis para ejecutar un procedimiento almacenado es como sigue:

exec , , …

Cuando se proporciona un parámetro con una cadena demasiado larga a
múltiples de estos procedimientos el búfer se desbordará. Lo más
curioso es que estos desbordamientos se producen en la parte de las
llamadas al manejo de excepciones que SQL Server realiza para
protegerse a si mismo.

Los procedimientos vulnerables son múltiples, entre los afectados se
encuentran los siguientes xp_displayparamstmt, xp_enumresultset,
xp_showcolv y xp_updatecolvbm. El problema se agrava al tener en
cuenta que cada uno de estos procedimientos pueden ser ejecutados por
PUBLIC, esto es, cualquiera que pueda conectar con el servidor de
bases de datos, incluso con los privilegios más bajos. Pero por el
contrario si el desbordamiento se llega a producir y un atacante lo
emplea para lograr la ejecución de código lo realizará bajo el
contexto de la cuenta SYSTEM, es decir con todos los privilegios.

Microsoft ha publicado un boletín en el que informa de este problema y
proporciona a los usuarios un parche para su solución. Como
recomendación también se puede proceder a inhabilitar a la cuenta
PUBLIC el acceso de ejecución a los procedimientos almacenados
extendidos.

El parche proporcionado por Microsoft se puede encontrar en la
siguiente URL:
http://support.microsoft.com/support/sql/xp_security.asp

Antonio Ropero
antonior@hispasec.com

Más información:

Boletín de Seguridad de Microsoft (MS00-092)
http://www.microsoft.com/technet/security/bulletin/ms00-092.asp

Preguntas y respuestas acerca de la vulnerabilidad
http://www.microsoft.com/technet/security/bulletin/fq00-092.asp

Avisos de seguridad de @Stake
http://www.atstake.com/research/advisories/2000/a120100-1.txt
http://www.atstake.com/research/advisories/2000/a120100-2.txt

Compártelo: