¿Qué son las estructuras de archivos?
Las estructuras de archivos especifican cómo un formato organiza los encabezados, los metadatos, las cargas útiles, los índices, las sumas de verificación y otras secuencias de bytes. Sus reglas determinan cómo el software localiza e interpreta los datos almacenados.
Cómo funcionan las estructuras de archivos
La estructura de un formato de archivo es su gramática de análisis a nivel de bytes, a menudo compuesta por registros ordenados, bloques anidados, cajas delimitadas por su longitud o segmentos separados por marcadores. PNG, por ejemplo, consiste en una firma de ocho bytes seguida de bloques que contienen, cada uno, una longitud, un tipo de cuatro bytes, datos y un CRC. Los archivos de la familia MP4 anidan cajas tipadas. ZIP coloca un encabezado local antes de cada archivo almacenado y un directorio central después de los datos de los archivos. El TIFF clásico (TIFF 6.0) comienza con un encabezado de ocho bytes que apunta a un directorio, que puede comenzar en cualquier límite de palabra (un desplazamiento de bytes par) posterior al encabezado. Los encabezados establecen la interpretación, mientras que los índices y los desplazamientos permiten el acceso no secuencial a cargas útiles situadas en otras partes del archivo. Esto es distinto de un códec, que define cómo se comprime un flujo multimedia individual. Los demultiplexores, los validadores, las herramientas de reparación, los lectores de metadatos y los escáneres de seguridad utilizan el conocimiento de la estructura.
Datos clave
- Una firma inicial acota la familia de formatos, pero a menudo no determina el formato exacto. Las firmas de detección MIME de WHATWG para WAVE, AVI y WebP comienzan todas con
RIFF, y los bytes que siguen en el desplazamiento 8 permiten distinguirlas. Un informe público de un error en una biblioteca de detección de tipos de archivo muestra que los archivos.docx,.pptxy.xlsxde una suite ofimática se identificaban simplemente comoapplication/zip, en lugar de sus tipos de documento. La corrección explica el motivo: esa suite almacena[Content_Types].xml, que la biblioteca lee para identificar el tipo, después de las entradas de contenido, fuera de la muestra que el modo de flujo de la biblioteca lee de forma predeterminada. Una firma tampoco dice nada sobre el resto del archivo: la especificación PNG indica que los decodificadores obtienen más certeza a partir del bloqueIHDRque sigue y del CRC de cada bloque. - Averigua desde dónde se mide cada desplazamiento antes de mover bytes. Los desplazamientos TIFF se cuentan desde el inicio del archivo, y su directorio puede estar después de los datos de imagen que describe. Los lectores ZIP encuentran las entradas mediante un directorio central almacenado después de los datos de los archivos, cuyos registros indican el desplazamiento de cada encabezado local. En los archivos de la familia MP4, la caja
stcocontiene desplazamientos absolutos de bloques, mientras que un fragmento de película puede direccionar sus datos de forma relativa a la cajamoofque lo contiene. Los desplazamientos absolutos dejan de ser correctos cuando se mueven sus destinos o cuando se insertan o eliminan datos antes de esos destinos, a menos que el software de escritura los recalcule. - El orden de bytes es una propiedad del formato, no de la máquina que lo lee. PNG almacena los enteros de varios bytes con el byte más significativo primero; OpenEXR los almacena en little-endian; ZIP hace lo mismo, salvo cuando su especificación indica lo contrario para un campo; y TIFF declara su orden en los dos primeros bytes (
IIpara little-endian,MMpara big-endian), por lo que un lector TIFF debe manejar ambos. Decodifica explícitamente cada campo de longitud y desplazamiento con el orden de bytes que el formato especifica para él, en lugar de convertir directamente los bytes sin procesar a enteros nativos. - Los registros con prefijo de longitud permiten que un lector omita lo que no entiende, pero el formato determina cuándo es seguro hacerlo. PNG codifica la regla en el nombre del bloque: un bloque auxiliar desconocido puede ignorarse, mientras que un bloque crítico desconocido constituye un error fatal para un decodificador que intenta extraer la imagen. La omisión también depende de que se pueda confiar en el campo de longitud. La especificación PNG advierte que, cuando no se comprueban los CRC, una longitud de bloque errónea puede desincronizar un decodificador y hacer que interprete datos posteriores como un encabezado de bloque, y que un decodificador mal escrito puede desbordar un búfer porque los bloques pueden tener hasta 2^31-1 bytes de longitud. Comprueba cada longitud y desplazamiento con respecto a los bytes realmente disponibles antes de utilizarlos; la escritura fuera de límites y la lectura fuera de límites ocupan el quinto y el octavo puesto en la lista CWE Top 25 de MITRE de 2025.
Cuándo son importantes las estructuras de archivos
Los desarrolladores examinan las estructuras de archivos al crear analizadores, validar subidas, reparar daños o extraer datos integrados. Ignorar los desplazamientos o el orden de bytes puede producir lecturas no válidas y fallas de seguridad.
Fuentes
- Especificación de Portable Network Graphics (PNG) del W3C (tercera edición): firma, estructura de los bloques, convenciones de nombres de bloques, manejo de errores
- Estándar de detección MIME de WHATWG: patrones de bytes para tipos de imagen, audio o video y archivos comprimidos
- Incidencia 785 de file-type en GitHub: archivos docx, pptx y xlsx guardados con LibreOffice detectados como application/zip (informe de error, cerrado como completado en marzo de 2026)
- Commit d4a975c de file-type en GitHub: corrección de la incidencia 785; su mensaje explica la causa (el orden de las entradas y la muestra predeterminada del flujo)
- Especificación TIFF, versión 6.0: encabezado del archivo de imagen, orden de bytes y desplazamientos
- Especificación del formato de archivo .ZIP de PKWARE (APPNOTE.TXT): formato general del archivo y directorio central
- Estructura de archivos OpenEXR: tipos de datos básicos y tablas de desplazamientos
- Especificación del formato de archivo Adobe Flash Video, versión 10.1: definiciones de cajas del formato multimedia base ISO (caja de desplazamientos de bloques, encabezado de fragmento de pista)
- MITRE: las 25 debilidades de software más peligrosas de 2025 según CWE