Qué es A08: integridad de software y datos
Cuando usted instala una biblioteca, abre una actualización o lee una cookie que devolvió el navegador, está confiando en que ese código o ese dato es el que debería ser. La categoría A08:2021, fallas de integridad de software y datos, agrupa los casos en que una aplicación confía en algo sin verificar que no fue alterado ni que viene de quien dice venir.
Integridad, no confidencialidad
En seguridad se habla de la tríada confidencialidad, integridad y disponibilidad. Las fallas criptográficas de A02 suelen afectar la confidencialidad: alguien lee lo que no debía. A08 se enfoca en la integridad: alguien cambia algo y el sistema lo acepta como legítimo.
La pregunta clave: ¿cómo sabe su aplicación que este código o dato es auténtico? Si la respuesta es "porque llegó por el canal de siempre", hay un problema, porque los canales se comprometen: un servidor de descargas, la cuenta de un mantenedor o el pipeline.
De dónde viene la categoría
OWASP, el Open Worldwide Application Security Project, es una fundación sin fines de lucro creada en 2001. Su OWASP Top 10 se publicó por primera vez en 2003 y se actualiza cada pocos años con datos de pruebas reales y una encuesta a la comunidad.
| Año | Hito |
|---|---|
| 2017 | Entra A8:2017, deserialización insegura, tras los casos masivos en Java de 2015 |
| 2020 | SolarWinds expone un ataque a la cadena de suministro a gran escala |
| 2021 | Nace A08:2021, que absorbe la deserialización y suma cadena de suministro y CI/CD |
| 2021 | Aparecen SLSA y Sigstore; la Orden Ejecutiva 14028 de Estados Unidos impulsa los SBOM |
| 2025 | La cadena de suministro pasa a su propia categoría, A03:2025; la integridad sigue en A08:2025 |
Este curso usa la numeración de 2021, la más presente en reportes y escáneres; las ideas son las mismas en ambas ediciones.
Qué cubre A08
- Cadena de suministro: dependencias, imágenes y scripts de terceros que entran sin control.
- Actualizaciones sin firma: se descarga y ejecuta una versión nueva sin comprobar su firma.
- Integridad del CI/CD: el pipeline tiene permisos excesivos, secretos expuestos o pasos que cualquiera modifica.
- Datos serializados y del cliente: el servidor reconstruye objetos del usuario o confía en cookies sin firma.
Por qué importa en su trabajo
Comprometer a un proveedor permite llegar a todos sus clientes de una vez. Por eso A08 toca a casi todos los roles: el desarrollador elige dependencias y cómo leer los datos del cliente; DevOps controla el pipeline y sus secretos; el analista de seguridad de aplicaciones revisa código y redacta hallazgos; el SOC necesita eventos para detectar la manipulación. Y cada vez más contratos exigen SBOM, firmas y procedencia. Las causas se repiten: comodidad (copiar una línea que instala algo es más rápido que verificarlo), confianza transitiva en dependencias que nadie revisó, pipelines con permisos de producción sin control y formatos de serialización más poderosos de lo necesario. Quien no domina estos controles termina publicando, con su propia firma, algo que otro alteró.
Dónde aparece
| Lugar | Ejemplo de integridad en juego |
|---|---|
| Repositorio del proyecto | requirements.txt, package.json y sus lockfiles |
| Pipeline de CI/CD | Workflows de GitHub Actions, GitLab CI o Jenkins |
| Registros de paquetes | PyPI, npm, Docker Hub |
| Navegador | Scripts cargados desde un CDN |
| Servidor | Cookies, campos ocultos, colas y archivos subidos |
| Equipos de usuarios | Mecanismos de actualización automática |
Las CWE principales
OWASP mapea la categoría a debilidades del catálogo CWE, Common Weakness Enumeration, que mantiene MITRE. Estas aparecen en escáneres y auditorías:
| CWE | Nombre resumido | Ejemplo típico |
|---|---|---|
| CWE-829 | Funcionalidad desde una zona no confiable | Script de un CDN ajeno sin control |
| CWE-494 | Descarga de código sin verificar integridad | Instalador que ejecuta lo que baja sin hash ni firma |
| CWE-502 | Deserialización de datos no confiables | Reconstruir objetos que envió el cliente |
| CWE-345 | Autenticidad de datos mal verificada | Aceptar un mensaje sin comprobar quién lo firmó |
| CWE-565 | Cookies sin validación ni integridad | El rol del usuario en una cookie sin firmar |
| CWE-915 | Modificación descontrolada de atributos | Asignación masiva desde el formulario |
Conceptos clave
| Concepto | Qué significa |
|---|---|
| Integridad | Garantía de que algo no cambió desde que lo produjo su autor |
| Cadena de suministro | Todo lo que interviene en su software sin que usted lo escriba |
| Hash | Huella de tamaño fijo de un archivo; cambia por completo si cambia un byte |
| Firma digital | Prueba de quién produjo un archivo, verificable con su clave pública |
| Serialización | Convertir un objeto en memoria en bytes para guardarlo o enviarlo |
| CI/CD | Integración y entrega continuas: el pipeline que prueba, construye y publica |
| Procedencia | Registro verificable de cómo, desde qué código y dónde se construyó un artefacto |
| SBOM | Lista de componentes de un producto, con versiones y hashes |
Cómo leer las sintaxis y pedir ayuda
Usará herramientas como curl, pip, sha256sum, bandit o cosign. En sus fichas, lo que va entre corchetes es opcional, lo que va en MAYÚSCULAS lo reemplaza usted y ... indica que puede repetirse: sha256sum [OPCIONES] ARCHIVO... acepta uno o varios archivos. Para pedir ayuda, casi todas responden a HERRAMIENTA --help; en Linux muchas tienen man HERRAMIENTA, y en Python help(funcion) documenta una función.