Ataques de inyección CSV explicados
Los archivos de valores separados por comas, o archivos CSV, están prácticamente en todas partes hoy en día. Si trabaja en un entorno de oficina (en realidad, ¿la gente todavía hace eso ahora?), lo más probable es que haya 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 por humanos.
Pero los archivos CSV, a pesar de su practicidad, también representan un vector de ataque grave en forma de ataques de inyección CSV. Los ataques de inyección CSV, también conocidos como ataques de inyección de fórmulas, pueden ocurrir cuando un sitio web o una aplicación web permite a los usuarios exportar datos a un archivo CSV sin validar su contenido. Sin validación, el archivo CSV exportado podría contener fórmulas creadas con fines malintencionados. 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 archivos CSV como vector de ataque es incrustando enlaces maliciosos dentro del archivo. Si un usuario hace clic en el enlace malicioso, pueden suceder todo tipo de cosas malas.
¿Qué son los archivos CSV?
Es muy probable que hayas abierto un archivo CSV antes. Si alguna vez usó Microsoft Excel, habrá jugado con archivos CSV.
Un archivo de valores separados por comas (CSV) es simplemente un archivo de texto sin formato que contiene datos. Los archivos CSV se utilizan a menudo para intercambiar datos, normalmente bases de datos, entre diferentes aplicaciones.
Los archivos CSV a veces se denominan valores separados por caracteres o archivos delimitados por comas. El carácter de coma se utiliza para separar (o delimitar) los diferentes puntos de datos. A veces también se utilizan otros caracteres, como el punto y coma, para la delimitación, aunque las comas son las más comunes. La ventaja de utilizar archivos CSV es que puede exportar datos complejos de una aplicación a un archivo CSV e importarlos a otra aplicación. También puede realizar operaciones con los datos mediante el uso de fórmulas o macros.
Por ejemplo, la imagen de la hoja de cálculo de arriba se ve así en formato .csv cuando se abre en un editor de texto: Observe que cada valor está separado por una coma, de ahí el nombre Valores separados por comas (CSV).
Tipos de ataques de inyección CSV
Enlaces maliciosos
Entonces, ¿por qué son peligrosos los archivos CSV? Bueno, hay tres formas en las que lo son. La primera forma en que se pueden utilizar los archivos CSV para perpetrar un ataque es en realidad compartida por cualquier archivo digital que muestre texto y admita hipervínculos. Y es simplemente incrustando un enlace malicioso en una de las celdas. Si un usuario desprevenido hace clic en el enlace malicioso, es posible que haya comprometido su sistema, sus datos o ambos. Este vector de ataque puede mitigarse con un poco de sentido común: no haga clic en enlaces de archivos que no sean de confianza (CSV o de otro tipo). Microsoft Excel solicitará la confirmación del usuario antes de seguir el enlace, pero la mayoría de la gente espera encontrar enlaces incrustados en archivos CSV confiables y ignorará la advertencia de seguridad.
Un enlace de este tipo podría verse así:
|_+_|
Esto canalizaría la información contenida en el archivo CSV al servidor del atacante al hacer clic.
Aplicaciones CSV
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 interacción del usuario para que se ejecuten las fórmulas o macros. Entonces, si se incrustó una fórmula maliciosa en la hoja de cálculo, todo lo que necesita 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 tiene una hoja de cálculo simple con dos columnas: la columna A enumera sus ingresos por semana y la columna B enumera sus costos por semana. Se podría utilizar una fórmula para restar los costos de sus ingresos y enumerar los datos resultantes en una tercera columna (C). Una fórmula de este tipo se vería así: =A1-B1. Todas las fórmulas, para archivos CSV, comienzan con uno de los siguientes caracteres: igual a (=), más (+), menos (-), en (@).
El siguiente ejemplo es una fórmula maliciosa que canalizaría silenciosamente el contenido de un documento de Google Sheets a un servidor controlado por el atacante:
|_+_|
Intercambio dinámico de datos
El tercer ataque CSV es exclusivo de las computadoras con Windows. Microsoft implementó una función en Excel llamada Intercambio dinámico de datos (DDE). DDE permite que Excel se comunique con otras partes del sistema e incluso inicie aplicaciones. Entonces, usando DDE, un atacante malicioso podría crear una fórmula maliciosa para iniciar el símbolo del sistema y ejecutar código arbitrario en la máquina en cuestión. Esto también podría diseñarse como un enlace. En este caso, como arriba, 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. Si bien esto pretende ser 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 computadora, al menos en un entorno de oficina.
A continuación se muestra un ejemplo del uso de DDE para iniciar la terminal y comenzar a hacer ping a una computadora remota, lo que podría resultar en un ataque DDOS (por supuesto, se necesitarían más víctimas).
|_+_|
Ingeniería social
Como muchos otros ataques en línea, los ataques de inyección CSV implican alguna forma de ingeniería social para lograr que la víctima abra el archivo CSV o lo abra y haga clic en un enlace malicioso. Puede ser un correo electrónico, una publicación de Facebook, lo que sea. Tenga cuidado con los enlaces aleatorios.
Ejemplo de ataque de inyección CSV
En junio de 2018, la policía holandesa se hizo cargo del mercado de la web oscura. hansa , utilizando un ataque de inyección CSV.
El mercado de 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 se hizo cargo del sitio el 20 de junio de 2018, modificó el código del servidor web y sustituyó el archivo de texto '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 que la policía holandesa se hizo cargo del servidor, la operación acumuló 27.000 transacciones de drogas en 27 días.
Cómo mitigar los ataques de inyección CSV
La forma de mitigar este tipo de ataques es bastante sencilla. Su implementación simplemente varía según 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 genera archivos CSV, puede realizar una validación de lista blanca en entradas que no sean de confianza y no permitir los caracteres Igual (=), Más (+), Menos (-) y Arroba (@). La validación de la lista blanca simplemente significa crear una lista blanca de caracteres permitidos y hacer referencia a las entradas con respecto a la lista blanca. Cualquier personaje que no esté en la lista blanca no se permite y se elimina. Este es probablemente el método más seguro. Sin embargo, se supone 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 conoce como 'escapar' de los caracteres y garantiza que estos caracteres se interpretarán como datos en lugar de fórmulas.
Su sitio web/aplicación consume archivos CSV
Si su sitio web/aplicación ingiere archivos CSV producidos en otro lugar, deberá validar y codificar el contenido del archivo antes de que su aplicación lo procese. Cómo lograr esto exactamente depende de la arquitectura de su sitio y, por lo tanto, está más allá del alcance de este artículo.
Sin embargo, muchos artículos en línea que analizan la mitigación de la inyección de CSV recomiendan validar y codificar únicamente las celdas que contengan los caracteres infractores (=, +, - y @). Te recomendaría que codifiques todas las celdas, no solo las que contienen: =, +, - o @. Todos los datos siguen siendo interpretables por la aplicación y estarás seguro de que ninguna de las celdas se interpretará como fórmula.
Conclusión
La inyección de CSV puede tener consecuencias realmente desagradables. Afortunadamente, proteger su sitio web/aplicación no es difícil. Simplemente no permita los caracteres que las aplicaciones CSV interpretan como fórmulas o valide y codifique la entrada CSV.
Pero debido a que este ataque requiere algún tipo de ingeniería social para llevarse a cabo, como usuario, existen algunas medidas de sentido común que puede tomar para reducir sus posibilidades de convertirse en víctima.
- Utilice un firewall: todos los principales sistemas operativos tienen un firewall entrante incorporado y todos los enrutadores comerciales del mercado tienen un firewall NAT incorporado. Asegúrese de que estén habilitados, ya que pueden protegerlo en caso de que haga clic en un enlace malicioso.
- Si su aplicación CSV muestra una advertencia sobre un enlace al que está intentando acceder, debe prestar atención e inspeccionar el enlace cuidadosamente.
- No haga clic en los archivos adjuntos de los correos electrónicos a menos que sepa exactamente quién los envió y qué es.
Ver también:
- Cómo prevenir el malware troyano
- Explicación de los ataques de malware más comunes
- Más de 300 estadísticas impactantes sobre delitos cibernéticos