· 9 min read
Inyección de fórmulas en archivos CSV de listas de teléfonos: revise los archivos de forma segura
Un proceso de dos copias para revisar datos de teléfonos en CSV no confiables sin alterar la carga de la máquina.
La inyección de fórmulas en archivos CSV de listas de teléfonos representa un riesgo cuando el texto de una celda no confiable se abre en un software de hoja de cálculo y se interpreta como una fórmula. Revise una copia protegida legible para humanos, mientras genera una copia separada para la carga en la máquina que contenga únicamente el texto del número de teléfono previsto. Un número internacional legítimo puede comenzar con un signo más, por lo que no debe eliminar ese signo a ciegas; verifique el archivo de carga final como texto sin formato antes de realizar una verificación masiva.
Por qué una lista de teléfonos en CSV necesita dos revisiones diferentes
Un CSV es un archivo de texto, pero una hoja de cálculo puede tratar sus celdas como algo más que texto. La guía de OWASP CSV Injection explica que las celdas que comienzan con caracteres como un signo igual, signo más, signo menos o signo arroba pueden interpretarse como fórmulas en algunos contextos de hojas de cálculo. Un valor malicioso también puede utilizar separadores o comillas para colocar un carácter peligroso al principio de una nueva celda. Esto hace que un simple doble clic en una exportación no confiable sea un método de inspección deficiente.
Los datos telefónicos crean una tensión especial. El signo más es un prefijo normal de número internacional, pero el signo más también se encuentra en la lista de caracteres que activan fórmulas de OWASP. Tratar cada valor con prefijo de signo más como malicioso dañaría los números legítimos. Tratar cada valor de este tipo como seguro porque se parece a un número de teléfono pasaría por alto la diferencia entre la celda CSV sin procesar y su interpretación visual. La solución consiste en separar la revisión humana de la presentación a la máquina y validar el contenido para cada propósito.
Este es un problema de manejo de archivos del lado del cliente. CheckNumber admite cargas masivas de listas en CSV o TXT, pero la capacidad de verificación documentada no pretende proteger la hoja de cálculo de un analista de un archivo de origen no confiable. Mantenga la exportación de origen sin cambios y realice la revisión en una copia controlada.
Crear una copia de revisión segura para las personas
Comience etiquetando el archivo de origen como no confiable hasta que se verifiquen su origen y contenido. Utilice un flujo de trabajo de revisión que trate los campos importados como texto en lugar de permitir la interpretación automática de fórmulas. La documentación de Power Query Text/CSV de Microsoft describe cómo se puede desactivar la detección de tipos de datos para que las columnas se establezcan de forma predeterminada como texto. El método de revisión exacto debe probarse con la versión de la hoja de cálculo y el tipo de archivo que utiliza el equipo; una configuración de visualización no es prueba de que un guardado posterior conservará cada carácter.
Para un artefacto de revisión humana, aplique la mitigación específica de la hoja de cálculo de acuerdo con la guía de seguridad de la organización. OWASP señala que algunos enfoques de escape pueden fallar después de que un CSV se guarda y se vuelve a abrir, y que una mitigación basada en pestañas tiene una compensación de datos posterior. Es por esto que el artefacto de revisión no debe reutilizarse como entrada para el verificador. Un prefijo de seguridad o un carácter de escape destinado a la hoja de cálculo de una persona puede convertirse en parte de los datos que procesa una máquina.
Inspeccione los campos sospechosos y los límites de las celdas. Una fila que contiene un campo de teléfono más notas arbitrarias, separadores incrustados o caracteres de control merece una revisión manual. Mantenga la línea original disponible para comparar, pero no solicite a un analista que ejecute o haga clic en advertencias solo para verla. Si la copia de revisión ha cambiado el texto del teléfono aparente, utilice el sistema de origen para resolver el valor previsto.
Crear una copia separada para la carga en la máquina a partir de números aprobados
Genere la entrada del verificador a partir de valores que hayan pasado la revisión de origen y de país, no a partir de una copia de revisión guardada en una hoja de cálculo. Mantenga un mapeo local desde cada ID de registro de origen hasta la cadena de teléfono aprobada. Si se necesita normalización, conserve tanto el valor original como el preparado. El panel gratuito de CheckNumber, Number Cleaner, puede normalizar números a E.164 y eliminar entradas duplicadas e inválidas antes de una verificación de pago, pero no puede reconstruir los dígitos perdidos en una conversión de hoja de cálculo anterior.
Para las cargas de listas de teléfonos, el formato documentado es un país por archivo y un número por línea con el código de país; el signo más es opcional. Esto significa que un cliente puede utilizar un número preparado correctamente con o sin ese signo inicial en el formato de carga. No elimine el signo como una solución general de inyección de CSV, porque el archivo de carga y el archivo de revisión humana tienen propósitos diferentes. Un número con código de país aún debe verificarse para comprobar los dígitos reales, el contexto del país y el texto inesperado.
Utilice una inspección de texto sin formato del archivo final de la máquina. Confirme que cada línea contenga solo el valor de teléfono previsto en el formato de carga seleccionado, sin prefijo de mitigación de hoja de cálculo, sin texto de fórmula, sin notas adicionales y sin saltos de línea o separadores no deseados. Compare una muestra de líneas con la tabla de trabajo aprobada y la fuente sin cambios. Un archivo que parece correcto en una hoja de cálculo aún puede contener bytes subyacentes alterados.
Mantener las decisiones de revisión y carga rastreables
Una tabla de revisión útil gestionada por el cliente rastrea el ID de registro de origen, el texto original de la celda, la cadena de teléfono aprobada, el país, el motivo de cualquier transformación y si la fila está retenida. Estos son campos locales sugeridos, no un esquema de salida de producto prometido. Una fila que no se pueda resolver debe quedar fuera de la carga, en lugar de ser forzada a convertirse en un número de teléfono de aspecto plausible.
El catálogo de productos de CheckNumber ayuda a un equipo a elegir la verificación de teléfono que coincide con la pregunta, como la validez documentada o el registro en una plataforma específica. El proceso de seguridad del CSV en sí mismo no establece ninguno de los dos resultados. Una carga bien formada solo proporciona al verificador una entrada prevista. Para los flujos de trabajo de API, utilice la documentación de API actual para el producto compatible seleccionado en lugar de asumir que las reglas de CSV son un esquema de API.
Una vez que esté disponible una exportación específica del verificador, haga coincidir los resultados con el mapeo de teléfonos aprobado y luego con los ID de registro originales. No confíe en el orden de salida. Si varios contactos comparten un número, conserve sus historiales de origen y permisos por separado. Una señal técnica en el momento de la verificación no debe convertirse en prueba de identidad o consentimiento, independientemente de cuán cuidadosamente se haya preparado el CSV.
Probar el proceso de dos copias antes del uso rutinario
Cree accesorios internos sintéticos para un valor de teléfono con código de país normal con un prefijo de signo más, un valor sin prefijo de signo más, un valor mal formado que contenga texto adicional y una fila con separadores o comillas en un lugar inesperado. Estos son casos de prueba de revisión, no resultados de verificación reales. Verifique que el proceso de revisión humana no ejecute fórmulas de hoja de cálculo y que el archivo de carga de la máquina contenga solo texto de teléfono aprobado. El mismo registro de origen debe ser rastreable en ambas copias sin copiar caracteres de escape exclusivos de la revisión en la carga.
Vuelva a abrir la copia de revisión bajo el flujo de trabajo de hoja de cálculo real del equipo e inspeccione cómo se maneja el texto sospechoso. Luego, inspeccione el archivo de la máquina con un lector orientado a texto y compare sus caracteres con los valores aprobados. La advertencia de OWASP sobre el comportamiento de guardar y volver a abrir hace que esta segunda pasada sea importante. Si un flujo de trabajo no puede preservar o distinguir de manera confiable las copias, cambie el proceso del lado del cliente antes de verificar los datos de contacto de producción.
Finalmente, concilie las filas de origen, las excepciones retenidas, los números aprobados, las líneas enviadas y los resultados coincidentes. Investigue cualquier diferencia inexplicable. El objetivo práctico es una revisión de analista segura y una entrada de verificador limpia, cada una construida para su propio uso. Ni un escape de seguridad de hoja de cálculo ni una verificación de registro sustituyen las decisiones de política de consentimiento y contacto por separado del equipo.
Preguntas frecuentes
¿Cómo pueden los equipos revisar un CSV de teléfonos no confiable sin ejecutar fórmulas?
Utilice una copia de revisión humana controlada que importe campos como texto y aplique el proceso de seguridad de hoja de cálculo de la organización, luego manténgala separada del archivo de carga de la máquina.
¿Se debe eliminar un signo más inicial de cada número de teléfono?
No. Puede ser un prefijo internacional legítimo. Las cargas de listas de teléfonos de CheckNumber permiten que el signo más esté presente o ausente, pero el valor final debe revisarse como texto de teléfono previsto.
¿Por qué no cargar la copia de revisión segura de la hoja de cálculo?
Los caracteres de escape o prefijo añadidos para la seguridad de la hoja de cálculo pueden permanecer en los datos subyacentes. Construya un archivo de máquina separado a partir de los valores aprobados e inspecciónelo como texto sin formato.
¿La revisión de seguridad de CSV valida el número o el consentimiento?
No. Protege un paso de manejo de archivos local. Un verificador seleccionado proporciona su señal documentada, mientras que el consentimiento sigue siendo una decisión independiente del cliente.