En profundidad: Conoce de cerca la vulnerabilidad de día cero de MOVEit

Publicado el 30 de septiembre de 2023
por Laura Verheyde
Estudio de caso

En profundidad: Conoce de cerca la vulnerabilidad de día cero de MOVEit

Publicado el 30 de septiembre de 2023
por Laura Verheyde
Ver recurso
Ver recurso

Los ciberataques a la cadena de suministro de software son cada vez más frecuentes, lo que ha provocado una oleada de cambios legislativos en el gobierno estadounidense, mientras las empresas se esfuerzan por mitigar su perfil de riesgo expansivo y mejorar rápidamente la calidad del software. Sólo este año se han producido tres vulnerabilidades de día cero relacionadas con servicios de intercambio de archivos, la mayor y más destructiva de las cuales es el exploit masivo MOVEit.

Encabezado por el grupo de ransomware CL0P, el incidente MOVEit ha dominado las noticias de ciberseguridad durante algún tiempo, con más de 1.000 organizaciones afectadas. Se prevé que esta cifra siga creciendo, convirtiéndose en uno de los ataques a la cadena de suministro de software más potentes desde Solarwinds en 2021.

El catalizador de esta brecha generalizada fue un grupo de vulnerabilidades de inyección SQL, que recibió una puntuación de gravedad de 9,8 sobre 10 por parte de MITRE. La inyección SQL ha sido la pesadilla de los profesionales de la seguridad desde finales de los 90 y, a pesar de ser una solución bastante sencilla, sigue encontrando su camino en el software moderno y proporciona una alfombra roja a los datos sensibles para los actores de amenazas. 

El escenario MOVEit es un poco diferente de lo que muchos desarrolladores y profesionales de AppSec pueden haber experimentado previamente, y usted puede probar sus habilidades SQLi-slaying en una simulación en vivo aquí:

>>> JUGAR LA MISIÓN MOVEit

La vulnerabilidad: Inyección SQL

¿Cómo se utilizó exactamente la inyección SQL para explotar la aplicación de transferencia de archivos MOVEit de Progress Software?

El grupo de ransomware CL0P fue capaz de explotar la vulnerabilidad de inyección SQL CVE-2023-34362, lo que les permitió acceder sin restricciones y sin autorización a la base de datos de MOVEit. A partir de ahí, pudieron instalar LEMURLOOT, una shell web que les permitiría ejecutar varios procesos críticos de alto riesgo, como la recuperación de la configuración del sistema, la enumeración de la base de datos SQL, la recuperación de archivos del sistema MOVEit Transfer y la creación de una nueva cuenta con todos los privilegios de administración.

Huelga decir que este vector de ataque puede ser el resultado de un error relativamente simple -que podría achacarse al uso perpetuo de patrones de codificación deficientes-, pero su potencial para causar problemas continuos a nivel empresarial es inmenso. 

Comparable al exploit MOVEit, echemos un vistazo a este explicador de SQLi, que simula el método de inyección y ejecución de SQL malicioso:

Esta cadena de consulta y variable:

string emailAddress ="contact@scw.com";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


dará como resultado la siguiente consulta:

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'";

... y con entrada maliciosa:

string emailAddress = "contact@scw.com'; DELETE FROM Facturas WHERE Id = 2;--";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";

se convertirá en:

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--'";

¿Cómo se ve en vuelo?

Tenga en cuenta que, debido a la concatenación de cadenas, la entrada se interpreta como sintaxis SQL. En primer lugar, se añade una comilla simple para asegurarse de que la sentencia SELECT es una sintaxis SQL válida. A continuación, se añade un punto y coma para terminar la primera sentencia. 

Una vez hecho esto, se añade una sentencia DELETE válida, seguida de dos guiones para comentar los caracteres finales (la comilla simple). También se podría añadir una sentencia UPDATE, por ejemplo, si el SQL malicioso fuera para actualizar los roles o contraseñas de los usuarios.

Pruébalo tú mismo en esta misión jugable:

>>> JUEGA A LA MISIÓN MOVEit

Aunque relativamente sencillo, SQLi sigue siendo un poderoso vector de ataque, y uno demasiado común. En el caso de MOVEit, este exploit dio paso a la instalación de una puerta trasera dañina y a un grupo de ataques adicionales de gravedad similar.

¿Cómo mitigar el riesgo de inyección SQL?

Para cualquier compañía que utilice MOVEit como parte de sus operaciones de negocio, es imperativo que sigan los consejos de remediación recomendados por Progress Software. Esto incluye, entre otras cosas, la aplicación de parches de seguridad como prioridad de emergencia.

Para la inyección SQL en general, echa un vistazo a nuestra guía completa.

¿Quieres aprender más acerca de cómo escribir código seguro y mitigar el riesgo? Pruebe nuestro desafío de inyección SQL de forma gratuita.

Si está interesado en obtener más directrices de codificación gratuitas, consulte Secure Code Coach para ayudarle a mantenerse al día de las mejores prácticas de codificación segura.

Ver recurso
Ver recurso

Autor

Laura Verheyde

Laura Verheyde es una desarrolladora de software en Secure Code Warrior centrada en la investigación de vulnerabilidades y la creación de contenidos para Missions y Coding labs.

Centro de recursos

Recursos para empezar

Más entradas
Centro de recursos

Recursos para empezar

Más entradas

En profundidad: Conoce de cerca la vulnerabilidad de día cero de MOVEit

Publicado el 30 de septiembre de 2023
Por Laura Verheyde

Los ciberataques a la cadena de suministro de software son cada vez más frecuentes, lo que ha provocado una oleada de cambios legislativos en el gobierno estadounidense, mientras las empresas se esfuerzan por mitigar su perfil de riesgo expansivo y mejorar rápidamente la calidad del software. Sólo este año se han producido tres vulnerabilidades de día cero relacionadas con servicios de intercambio de archivos, la mayor y más destructiva de las cuales es el exploit masivo MOVEit.

Encabezado por el grupo de ransomware CL0P, el incidente MOVEit ha dominado las noticias de ciberseguridad durante algún tiempo, con más de 1.000 organizaciones afectadas. Se prevé que esta cifra siga creciendo, convirtiéndose en uno de los ataques a la cadena de suministro de software más potentes desde Solarwinds en 2021.

El catalizador de esta brecha generalizada fue un grupo de vulnerabilidades de inyección SQL, que recibió una puntuación de gravedad de 9,8 sobre 10 por parte de MITRE. La inyección SQL ha sido la pesadilla de los profesionales de la seguridad desde finales de los 90 y, a pesar de ser una solución bastante sencilla, sigue encontrando su camino en el software moderno y proporciona una alfombra roja a los datos sensibles para los actores de amenazas. 

El escenario MOVEit es un poco diferente de lo que muchos desarrolladores y profesionales de AppSec pueden haber experimentado previamente, y usted puede probar sus habilidades SQLi-slaying en una simulación en vivo aquí:

>>> JUGAR LA MISIÓN MOVEit

La vulnerabilidad: Inyección SQL

¿Cómo se utilizó exactamente la inyección SQL para explotar la aplicación de transferencia de archivos MOVEit de Progress Software?

El grupo de ransomware CL0P fue capaz de explotar la vulnerabilidad de inyección SQL CVE-2023-34362, lo que les permitió acceder sin restricciones y sin autorización a la base de datos de MOVEit. A partir de ahí, pudieron instalar LEMURLOOT, una shell web que les permitiría ejecutar varios procesos críticos de alto riesgo, como la recuperación de la configuración del sistema, la enumeración de la base de datos SQL, la recuperación de archivos del sistema MOVEit Transfer y la creación de una nueva cuenta con todos los privilegios de administración.

Huelga decir que este vector de ataque puede ser el resultado de un error relativamente simple -que podría achacarse al uso perpetuo de patrones de codificación deficientes-, pero su potencial para causar problemas continuos a nivel empresarial es inmenso. 

Comparable al exploit MOVEit, echemos un vistazo a este explicador de SQLi, que simula el método de inyección y ejecución de SQL malicioso:

Esta cadena de consulta y variable:

string emailAddress ="contact@scw.com";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


dará como resultado la siguiente consulta:

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'";

... y con entrada maliciosa:

string emailAddress = "contact@scw.com'; DELETE FROM Facturas WHERE Id = 2;--";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";

se convertirá en:

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--'";

¿Cómo se ve en vuelo?

Tenga en cuenta que, debido a la concatenación de cadenas, la entrada se interpreta como sintaxis SQL. En primer lugar, se añade una comilla simple para asegurarse de que la sentencia SELECT es una sintaxis SQL válida. A continuación, se añade un punto y coma para terminar la primera sentencia. 

Una vez hecho esto, se añade una sentencia DELETE válida, seguida de dos guiones para comentar los caracteres finales (la comilla simple). También se podría añadir una sentencia UPDATE, por ejemplo, si el SQL malicioso fuera para actualizar los roles o contraseñas de los usuarios.

Pruébalo tú mismo en esta misión jugable:

>>> JUEGA A LA MISIÓN MOVEit

Aunque relativamente sencillo, SQLi sigue siendo un poderoso vector de ataque, y uno demasiado común. En el caso de MOVEit, este exploit dio paso a la instalación de una puerta trasera dañina y a un grupo de ataques adicionales de gravedad similar.

¿Cómo mitigar el riesgo de inyección SQL?

Para cualquier compañía que utilice MOVEit como parte de sus operaciones de negocio, es imperativo que sigan los consejos de remediación recomendados por Progress Software. Esto incluye, entre otras cosas, la aplicación de parches de seguridad como prioridad de emergencia.

Para la inyección SQL en general, echa un vistazo a nuestra guía completa.

¿Quieres aprender más acerca de cómo escribir código seguro y mitigar el riesgo? Pruebe nuestro desafío de inyección SQL de forma gratuita.

Si está interesado en obtener más directrices de codificación gratuitas, consulte Secure Code Coach para ayudarle a mantenerse al día de las mejores prácticas de codificación segura.

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Enviar
Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.
Centro de recursos

Recursos para empezar

Más entradas