API y empresas

CSV de flota y fórmulas peligrosas: cómo exportar sin ejecutar contenido

Un CSV válido puede seguir siendo peligroso al abrirse en una planilla. La exportación debe separar fidelidad del dato y seguridad de visualización.

Por Marco Ferreiro ·

Fichas de una exportación de flota atravesando una rejilla de seguridad

Una exportación de flota puede cumplir el formato CSV y abrir sin errores, pero aun así ejecutar una fórmula que llegó desde un campo no confiable. La confusión nace de mezclar dos problemas: representar correctamente comas y comillas, y evitar que el programa receptor interprete una celda como instrucción.

La defensa empieza por reconocer que un CSV de multas es transporte de texto, no una zona de confianza.

Qué resuelve RFC 4180

RFC 4180 documenta un formato común para archivos separados por comas. Explica el uso de filas, encabezados, comillas dobles, saltos de línea y el escape de una comilla mediante otra comilla.

Si el lugar de la infracción contiene una coma, debe poder entrecomillarse para conservarse como una sola celda. Si contiene comillas, deben duplicarse según la gramática. Esas reglas evitan romper columnas.

No indican que el contenido sea seguro para ejecutarse. Un valor correctamente delimitado puede seguir comenzando con un carácter que una planilla trate como fórmula: la observación de un acta, por ejemplo.

Qué identifica MITRE como debilidad

MITRE cataloga el problema como CWE-1236: neutralización incorrecta de elementos de fórmula en un archivo CSV. Describe el riesgo de que datos controlados por un usuario se guarden en una exportación y se interpreten al abrirla.

Entre los caracteres sensibles menciona =, +, - y @. El riesgo no se limita al primer campo ni a nombres evidentes. Puede aparecer en patente libre, nombre de conductor, observación, centro de costo, dirección o cualquier texto importado desde otro sistema.

También hay espacios, tabulaciones o caracteres invisibles que algunos lectores omiten antes de interpretar, así que un control limitado a value[0] puede ser insuficiente.

Entrecomillar no neutraliza

Supongamos un campo sintético que comienza con signo igual: el domicilio del titular tal como lo devolvió un portal. El exportador lo rodea con comillas porque contiene una coma. El CSV queda bien formado, pero al abrirlo la aplicación quita las comillas de transporte y evalúa el valor de la celda.

La comilla doble pertenece al formato. La neutralización pertenece a la capa de visualización. Son controles distintos y ambos son necesarios.

Cambiar la extensión a .txt tampoco elimina el problema si después se importa con detección automática.

Dos productos de salida, dos contratos

Para el informe de infracciones de una flota, una estrategia clara ofrece:

  1. exportación canónica para procesos automáticos controlados, que preserva exactamente los valores y requiere un consumidor seguro;
  2. exportación preparada para planilla, que transforma campos potencialmente activos y declara esa transformación.

No conviene usar silenciosamente la segunda como respaldo de las actas. El prefijo añadido para impedir ejecución cambia la representación. Debe existir una forma documentada de recuperar o comparar el valor original bajo permisos adecuados.

El nombre del archivo —multas-canonico frente a multas-planilla— y la interfaz deben distinguir ambas opciones.

Política de neutralización

MITRE menciona como mitigación anteponer un apóstrofo a los valores que empiezan con caracteres de fórmula, aunque su eficacia varía entre productos. OWASP recomienda neutralizar separadores y caracteres interpretables en cada celda.

Una política empresarial debería definir:

No elimines caracteres sin trazabilidad. Un teléfono internacional o el importe negativo de una quita sobre un acta pueden ser datos válidos.

Detectar antes de serializar

El control debe aplicarse al valor lógico antes de generar las comillas de CSV. Primero se clasifica el campo, luego se produce la variante segura y finalmente se serializa conforme a RFC 4180.

El orden inverso es frágil porque obliga a analizar una cadena ya escapada, y puede fallar si distintas bibliotecas cambian el uso de comillas.

Aplicá la regla a todas las columnas de texto no confiable, no sólo a la de observaciones del acta. Los datos pueden desplazarse entre campos a lo largo de integraciones.

Pruebas sin fórmulas dañinas

La validación puede usar cadenas sintéticas e inocuas que comiencen con los cuatro caracteres sensibles y devuelvan texto o permanezcan neutralizadas. No hace falta invocar red, comandos ni archivos locales.

Probá al menos:

Ejecutá estas pruebas en un entorno aislado sin credenciales ni acceso a archivos sensibles.

Controles alrededor de la descarga

La exportación debe exigir autorización y registrar quién la generó. El archivo puede llevar patentes y titulares aunque ninguna fórmula se ejecute.

Usá nombres generados por el sistema, vencimiento de enlaces, límites de tamaño y almacenamiento fuera de rutas públicas. No incluyas tokens o secretos en columnas de diagnóstico.

Una advertencia puede indicar que la versión canónica no está destinada a apertura directa: para personas, la variante de planilla debería ser la opción predeterminada.

Qué hacer con archivos importados

El problema también viaja en sentido inverso. Si una flota importa su padrón de patentes en CSV y luego vuelve a exportarlo, no debe considerar seguros los valores porque antes pasaron por su sistema.

Conservá su procedencia y aplicá neutralización en cada salida. Validar extensión o tipo MIME no inspecciona las celdas.

Cuando el destino es una API JSON, la fórmula no se ejecuta por ser JSON, pero puede activarse más tarde al generar otro archivo. La clasificación debe acompañar al dato hasta el punto de presentación.

Observabilidad sin exponer el contenido

Medí cantidad de celdas neutralizadas por archivo y columna, pero no envíes el valor completo a logs. Un contador alto puede revelar que una jurisdicción cambió el formato de sus observaciones.

Registrá versión de la política, biblioteca CSV y lector usado en las pruebas. Así una actualización de software puede evaluarse sin reproducir patentes reales.

La conclusión operativa

Un CSV correcto y un CSV seguro para planilla no son sinónimos. RFC 4180 protege la estructura; la neutralización y el aislamiento reducen la ejecución de contenido.

La solución responsable conserva la fidelidad en un canal controlado, ofrece una variante preparada para personas y prueba el comportamiento real de los lectores soportados. Ninguna comilla aislada reemplaza ese contrato.

Metodología

Alcance
Prueba conceptual con valores sintéticos inofensivos y comparación entre CSV canónico y CSV preparado para planilla.
Unidad de análisis
Una celda exportada cuyo primer carácter significativo puede activar interpretación como fórmula.
Cobertura
RFC 4180, MITRE y OWASP consultados el 14 de agosto de 2026.

Limitaciones

Fuentes

Preguntas frecuentes

¿Poner el campo entre comillas evita que se ejecute?

No. Las comillas resuelven delimitación CSV; la planilla puede interpretar igualmente el contenido de la celda como fórmula.

¿Hay una neutralización universal?

No. Los productos difieren. La estrategia debe documentarse, probarse con los lectores soportados y acompañarse con una advertencia de uso seguro.

¿Conviene modificar el dato original?

Conservá una salida canónica restringida y producí una variante segura para planilla, declarando la transformación para que no se confundan.

Notas relacionadas