Introducción y contexto de Secure by Default

Por: Artiko
owaspseguridadsecure-by-defaultsecure-by-designappsec

Introducción y contexto

Definición

“Secure-by-Default” significa que los productos son resistentes ante técnicas de explotación prevalentes sin necesidad de configuración adicional. El software debe iniciar en un estado seguro sin requerir configuración extensiva por parte del usuario, asegurando que las opciones por defecto sean siempre la opción más segura disponible.

Esta es la definición que usa el OWASP Developer Guide. La idea central es simple pero exigente: la seguridad no puede depender de que alguien recuerde activarla. Si un desarrollador clona el repositorio, corre docker compose up o despliega la infraestructura con Terraform sin tocar nada más, el resultado ya debería ser razonablemente seguro.

Por qué importa: los defaults inseguros como causa raíz

Un porcentaje enorme de incidentes de seguridad no vienen de una vulnerabilidad exótica de día cero, sino de un default que nadie cambió:

Incidente típicoDefault inseguro de origen
Bucket S3 con datos expuestos públicamenteACL “público” por defecto en versiones antiguas, o política mal heredada
Panel de administración accesible desde internetBinding a 0.0.0.0 en vez de 127.0.0.1, sin autenticación inicial
Base de datos comprometida por credenciales conocidasUsuario/contraseña de instalación (admin/admin, root sin password)
Exfiltración vía .git/ expuestoServidor web sirviendo el directorio del repositorio tal cual
Server-Side Request Forgery hacia metadata de la nubeRol IAM de la instancia con permisos excesivos “por si acaso”
Endpoint interno de debug/documentación filtrando informaciónSwagger UI o /actuator habilitado en producción por defecto del framework

En todos estos casos, el sistema funcionaba exactamente como fue configurado por defecto. El problema no fue un bug de código sino una decisión de diseño (o la ausencia de una).

Relación con Secure by Design y Secure by Deployment

Secure by Default no vive aislado. Es una de las tres facetas complementarias que promueven organismos como CISA, NSA y el propio OWASP:

flowchart LR
    SD[Secure by Design] -->|decisiones de arquitectura| SBD[Secure by Default]
    SBD -->|estado inicial seguro| SDep[Secure Deployment]
    SDep -->|operación segura| SD

Este tutorial se enfoca en la capa intermedia: qué defaults concretos revisar en la configuración del sistema, en la gestión de archivos y en la infraestructura cloud.

El Proactive Control C5 de OWASP

El checklist de Secure by Default del Developer Guide remite directamente al Proactive Control C5: Secure by Default Configurations del proyecto OWASP Top 10 Proactive Controls. Los Proactive Controls son una lista de 10 prácticas que los equipos de desarrollo deberían incluir en todo proyecto de software, en contraste con el OWASP Top 10 “normal”, que enumera los riesgos a evitar.

C5 resume la idea en tres frentes, que son exactamente las tres secciones en las que se organiza este tutorial:

  1. Configuración de sistema — mínimo privilegio, eliminación de funcionalidad innecesaria, control de cambios y exposición de metadata.
  2. Gestión de archivos — permisos, aislamiento de directorios de carga y control de acceso a recursos.
  3. Seguridad en la nube — acceso Just-In-Time, imágenes de contenedor confiables, Infrastructure as Code y Policy as Code.

También se referencia el Infrastructure as Code Security Cheat Sheet, porque en arquitecturas modernas la “configuración por defecto” ya no vive solo en un archivo .ini en el servidor: vive en el código Terraform, en los Helm charts, en los Dockerfiles y en las políticas de IAM versionadas junto al resto del código.

Cómo usar este checklist

El propio OWASP Developer Guide aclara que estas listas son sugerencias de punto de partida, no una certificación ni un estándar cerrado. La recomendación es:

En los próximos capítulos se desarrolla cada ítem del checklist original con ejemplos concretos de configuración, código y herramientas.