Polyglot files: cómo un mismo archivo puede pasar como JPEG y ZIP simultáneamente
Los archivos poliglotos cumplen la gramática de varios formatos, lo que puede romper la lógica de validación en sistemas de carga de ficheros.

Un archivo poligloto es una secuencia de bytes que satisface, al mismo tiempo, los requisitos estructurales de más de un formato. No se trata de cambiar la extensión, sino de organizar los bytes de forma que dos parsers diferentes encuentren una estructura válida.
Los formatos de archivo son gramáticas que definen dónde empieza el archivo (generalmente mediante una firma o magic number), cómo está estructurado el encabezado, dónde reside el contenido y cómo se marcan los límites. Por ejemplo, un JPEG comienza con FF D8 FF, mientras que un ZIP inicia con la cadena PK. Estos valores son obligatorios para que un parser los acepte.
En un poligloto, los bytes se disponen de modo que ambas gramáticas se cumplan. Algunas técnicas habituales son:
- Superposición de cabeceras: colocar una firma válida de JPEG al inicio y, más adelante, los marcadores que un parser ZIP necesita, como el central directory al final del archivo.
- Secciones ignoradas: muchos parsers tratan como relleno o metadatos cualquier zona que no reconozcan. Si esas zonas coinciden con estructuras válidas de otro formato, ambos pueden coexistir.
- Validación parcial: algunos validadores sólo miran los primeros bytes. Un archivo que empieza con la firma JPEG será aceptado como imagen aunque el resto del contenido sea un ZIP.
Este comportamiento tiene implicaciones de seguridad. En una cadena típica de carga de archivos, el primer componente (por ejemplo, un validador de uploads) inspecciona la firma y decide que el fichero es una imagen JPEG, lo acepta y lo almacena. Un componente posterior, quizá un proceso de análisis de archivos, interpreta los mismos bytes como un archivo ZIP y extrae su contenido. Si el ZIP contiene código malicioso, la barrera de seguridad original se ha roto porque los dos componentes no comparten la misma definición de lo que es el archivo.
La lección es que las validaciones deben ser consistentes y profundas. Un validador robusto debe parsear todo el archivo según el formato esperado, no sólo comprobar la firma. Además, los equipos que consumen los ficheros deben aplicar las mismas reglas de interpretación que el punto de control de seguridad.
En la práctica, esto implica usar librerías de análisis de archivos que realicen una validación completa, evitar confiar únicamente en la extensión o el MIME type y, cuando sea posible, aplicar una política de defensa en profundidad que incluya escaneo de contenido, sandboxing y firmas de integridad.
Los archivos poliglotos no son necesariamente maliciosos, pero su existencia obliga a revisar los flujos de validación y a asegurar que todos los componentes de la cadena operen bajo la misma definición de formato.

