*********************************************************************************************
- Connection String Attacks (I de VI)
- Connection String Attacks (II de VI)
- Connection String Attacks (III de VI)
- Connection String Attacks (IV de VI)
- Connection String Attacks (V de VI)
- Connection String Attacks (VI de VI)
*********************************************************************************************
Soluciones
La primera, y más evidente, de las medidas de protección contra este tipo de ataques es filtrar correctamente los valores de entrada. En este caso, aunque el carácter igual [=] es uno de los necesarios para introducir pares de parámetro/valor, el más importante a filtrar es el carácter punto y coma [;].
Si se está utilizando este esquema de autenticación en una aplicación, web o de escritorio, con .NET se deben utilizar las clases de ConnectionStringBuilder. El establecimiento del valor de cada uno de los parámetros de una cadena de conexión se realiza mediante funciones parametrizadas seguras contra la inyección de comandos.
Respecto a los ataques descritos, y desde el punto de vista de la administración de seguridad, es importante restringir las cuentas del sistema con que corre una determinada aplicación web en un servidor para poder limitar su acceso, restringir las cuentas de un sistema que pueden tener acceso a un servidor de bases de datos concreto y, por supuesto, restringir en el firewall de perímetro el tipo de conexiones que puede realizar un servidor concreto hacia el exterior. Un servidor web no debería poder establecer conexiones con cualquier puerto hacia el exterior. Los servidores web IIS 7 o IIS 7.5 permiten el uso de cuentas restringidas para poder correr los pool de aplicaciones con los menores privilegios posibles.
Es conveniente revisar periódicamente los resultados que devuelven los motores de búsquedas, para que no aparezca ningún dato sensible de las cadenas de conexión o los ficheros UDL de tu sitio entre ellos.
Si tienes un sitio de administración web al que te conectas en remoto, quizá es conveniente que restringas las conexiones a ese sitio web con alguna medida de protección extra: Filtrado de IP, autenticación IPSec, VPNs, etc… para que no se pueda conectar a él cualquiera desde Internet.
Respecto a los programas descritos en este artículo, en cada uno de los ejemplos de ataques, se deben tomar las medidas correctoras pertinentes.
myLittleTools: myLittleAdmin & myLittleBackup
Los programas software de administración de bases de datos de la compañía myLittleTools, es decir, myLittleBackup y myLittleAdmin, deben ser actualizados con el parche de seguridad que la empresa hizo público. Este advisory, aunque inicialmente fue publicado como “minor security update”, al final se presentó como un “security update” que debe ser instalado lo antes posible.
Figura 21: Minor y no minor security update
Además, hay que tener en cuenta que estos productos son bastantes populares y en la propia web de los productos aparecen algunas de las empresas que los están utilizando. Esto podría situarles como empresas especialmente sensibles al impacto de estos ataques.
Figura 22: Empresas utilizando este software
Además, aunque los programas de administración de servidores siempre deben tener una protección extra, es sencillo, mediante consultas en buscadores de Internet, descubrir software vulnerable expuesto a Internet sin una protección extra.
SQL Web Data Administrator
Este software fue publicado inicialmente por Microsoft como una herramienta freeware. En el año 2004 se decidió liberar este producto como una solución OpenSource que fuera mantenida y gestionada por la comunidad. La versión publicada por Microsoft, lamentablemente, es insegura, mientras que la versión que se debe instalar, la liberada como OpenSource no lo es. Sin embargo, por desgracia, el yugo del pagerank y la importancia de los sitios web publicadores de ambas herramientas hacen que cuando alguien busca en cualquier motor de búsqueda en Internet, el primer link que obtiene es el publicado por Microsoft, llevando a muchos a instalar un software vulnerable.
Se debe, por tanto, instalar la versión no vulnerable a esta técnica que se encuentra disponible en CodePlex.
Figura 23: SQL Web data Adminsitrator en CodePlex
ASP.NET Enterprise Manager
Este software, como tal, está abandonado. A pesar de que es posible encontrar el software en múltiples de los portales que se dedican a hacer backup de software público con el objetivo de ganar visitas y publicidad, la web original del proyecto está abandonada. No obstante, este producto está incorporado dentro de los paneles Plex para administrar sitios en hosting, asi que es de suponer que ellos son los que están manteniendo la seguridad del producto.
Sin embargo, si se encuentra instalado este software, puede ser parcheado manualmente. El código muestra una construcción de la cadena de conexión de forma insegura como se puede ver en la siguiente Imagen.
Figura 24: ASP.NET Enterpise Manager. Construcción insegura de cadena de conexión
Este error se repite en muchas partes a lo largo de todos los archivos que componen el aplicativo. La solución consiste en actualizar el Framework en el servidor donde corra esta aplicación a la versión 2.0 o superior y parchear el código como se puede ver en la imagen siguiente.
Figura 25: Fix para ASP.NET Enterprise Manager
En ella se ha creado una clase para establecer la cadena de conexión de forma segura y deberá ser invocado el método de BuildconnectionString() en todos los puntos en los que se encuentre la cadena insegura.
Conclusiones finales
Este tipo de vulnerabilidades pueden ser especialmente peligrosas si no se tiene en cuenta pues pueden llegar a permitir a cualquier atacante tener una conexión dentro de una base de datos. Si un atacante puede realizar desde un servidor web una conexión a la base de datos y estos dos servidores se encuentran en la DMZ, el firewall de perímetro no puede proteger las conexiones contra la base de datos. El atacante se encontraría dentro de la DMZ y el mismo servidor web se convertiría en la máquina enemiga. Debe por tanto aplicarse siempre un concepto de Defensa en Profundidad, es decir, aplicar todas las medidas de seguridad que sean posibles teniendo en cuenta que todas las medidas anteriores pueden haber fallado.
Referencias
- Diapositivas de Connection String Attacks
- El video de la charla de Connection String Attacks en el décimo aniversario de Informática64
- myLittleTools [myLittleAdmin/myLittleBackup]
- SQL Web data Administrator [versión de Microsoft]
- SQL Web data Administrator [versión Codeplex]
- ASP.NET Enterprise Manager
- Connection String Builders
- Using the SqlConnectionStringBuilder to guard against Connection String Injection Attacks [/bill's House O Insomnia]
*********************************************************************************************
- Connection String Attacks (I de VI)
- Connection String Attacks (II de VI)
- Connection String Attacks (III de VI)
- Connection String Attacks (IV de VI)
- Connection String Attacks (V de VI)
- Connection String Attacks (VI de VI)
*********************************************************************************************
- Connection String Attacks (I de VI)
- Connection String Attacks (II de VI)
- Connection String Attacks (III de VI)
- Connection String Attacks (IV de VI)
- Connection String Attacks (V de VI)
- Connection String Attacks (VI de VI)
*********************************************************************************************
Soluciones
La primera, y más evidente, de las medidas de protección contra este tipo de ataques es filtrar correctamente los valores de entrada. En este caso, aunque el carácter igual [=] es uno de los necesarios para introducir pares de parámetro/valor, el más importante a filtrar es el carácter punto y coma [;].
Si se está utilizando este esquema de autenticación en una aplicación, web o de escritorio, con .NET se deben utilizar las clases de ConnectionStringBuilder. El establecimiento del valor de cada uno de los parámetros de una cadena de conexión se realiza mediante funciones parametrizadas seguras contra la inyección de comandos.
Respecto a los ataques descritos, y desde el punto de vista de la administración de seguridad, es importante restringir las cuentas del sistema con que corre una determinada aplicación web en un servidor para poder limitar su acceso, restringir las cuentas de un sistema que pueden tener acceso a un servidor de bases de datos concreto y, por supuesto, restringir en el firewall de perímetro el tipo de conexiones que puede realizar un servidor concreto hacia el exterior. Un servidor web no debería poder establecer conexiones con cualquier puerto hacia el exterior. Los servidores web IIS 7 o IIS 7.5 permiten el uso de cuentas restringidas para poder correr los pool de aplicaciones con los menores privilegios posibles.
Es conveniente revisar periódicamente los resultados que devuelven los motores de búsquedas, para que no aparezca ningún dato sensible de las cadenas de conexión o los ficheros UDL de tu sitio entre ellos.
Si tienes un sitio de administración web al que te conectas en remoto, quizá es conveniente que restringas las conexiones a ese sitio web con alguna medida de protección extra: Filtrado de IP, autenticación IPSec, VPNs, etc… para que no se pueda conectar a él cualquiera desde Internet.
Respecto a los programas descritos en este artículo, en cada uno de los ejemplos de ataques, se deben tomar las medidas correctoras pertinentes.
myLittleTools: myLittleAdmin & myLittleBackup
Los programas software de administración de bases de datos de la compañía myLittleTools, es decir, myLittleBackup y myLittleAdmin, deben ser actualizados con el parche de seguridad que la empresa hizo público. Este advisory, aunque inicialmente fue publicado como “minor security update”, al final se presentó como un “security update” que debe ser instalado lo antes posible.
Figura 21: Minor y no minor security update
Además, hay que tener en cuenta que estos productos son bastantes populares y en la propia web de los productos aparecen algunas de las empresas que los están utilizando. Esto podría situarles como empresas especialmente sensibles al impacto de estos ataques.
Figura 22: Empresas utilizando este software
Además, aunque los programas de administración de servidores siempre deben tener una protección extra, es sencillo, mediante consultas en buscadores de Internet, descubrir software vulnerable expuesto a Internet sin una protección extra.
SQL Web Data Administrator
Este software fue publicado inicialmente por Microsoft como una herramienta freeware. En el año 2004 se decidió liberar este producto como una solución OpenSource que fuera mantenida y gestionada por la comunidad. La versión publicada por Microsoft, lamentablemente, es insegura, mientras que la versión que se debe instalar, la liberada como OpenSource no lo es. Sin embargo, por desgracia, el yugo del pagerank y la importancia de los sitios web publicadores de ambas herramientas hacen que cuando alguien busca en cualquier motor de búsqueda en Internet, el primer link que obtiene es el publicado por Microsoft, llevando a muchos a instalar un software vulnerable.
Se debe, por tanto, instalar la versión no vulnerable a esta técnica que se encuentra disponible en CodePlex.
Figura 23: SQL Web data Adminsitrator en CodePlex
ASP.NET Enterprise Manager
Este software, como tal, está abandonado. A pesar de que es posible encontrar el software en múltiples de los portales que se dedican a hacer backup de software público con el objetivo de ganar visitas y publicidad, la web original del proyecto está abandonada. No obstante, este producto está incorporado dentro de los paneles Plex para administrar sitios en hosting, asi que es de suponer que ellos son los que están manteniendo la seguridad del producto.
Sin embargo, si se encuentra instalado este software, puede ser parcheado manualmente. El código muestra una construcción de la cadena de conexión de forma insegura como se puede ver en la siguiente Imagen.
Figura 24: ASP.NET Enterpise Manager. Construcción insegura de cadena de conexión
Este error se repite en muchas partes a lo largo de todos los archivos que componen el aplicativo. La solución consiste en actualizar el Framework en el servidor donde corra esta aplicación a la versión 2.0 o superior y parchear el código como se puede ver en la imagen siguiente.
Figura 25: Fix para ASP.NET Enterprise Manager
En ella se ha creado una clase para establecer la cadena de conexión de forma segura y deberá ser invocado el método de BuildconnectionString() en todos los puntos en los que se encuentre la cadena insegura.
Conclusiones finales
Este tipo de vulnerabilidades pueden ser especialmente peligrosas si no se tiene en cuenta pues pueden llegar a permitir a cualquier atacante tener una conexión dentro de una base de datos. Si un atacante puede realizar desde un servidor web una conexión a la base de datos y estos dos servidores se encuentran en la DMZ, el firewall de perímetro no puede proteger las conexiones contra la base de datos. El atacante se encontraría dentro de la DMZ y el mismo servidor web se convertiría en la máquina enemiga. Debe por tanto aplicarse siempre un concepto de Defensa en Profundidad, es decir, aplicar todas las medidas de seguridad que sean posibles teniendo en cuenta que todas las medidas anteriores pueden haber fallado.
Referencias
- Diapositivas de Connection String Attacks
- El video de la charla de Connection String Attacks en el décimo aniversario de Informática64
- myLittleTools [myLittleAdmin/myLittleBackup]
- SQL Web data Administrator [versión de Microsoft]
- SQL Web data Administrator [versión Codeplex]
- ASP.NET Enterprise Manager
- Connection String Builders
- Using the SqlConnectionStringBuilder to guard against Connection String Injection Attacks [/bill's House O Insomnia]
*********************************************************************************************
- Connection String Attacks (I de VI)
- Connection String Attacks (II de VI)
- Connection String Attacks (III de VI)
- Connection String Attacks (IV de VI)
- Connection String Attacks (V de VI)
- Connection String Attacks (VI de VI)
*********************************************************************************************
Falta el link del video de vuestro cumple ;-)
ResponderEliminar@anónimo, es que aun no está publicado, pero lo pondré :P
ResponderEliminarSaludos!
Ponlo plis que estuvo muy bien ;-)
ResponderEliminarGracias por publicarlo.
Saludos.