ScholarGate
Asistente

Desarrollo de Software Seguro

El desarrollo de software seguro integra la seguridad en cada fase de la construcción del software —desde el modelado de amenazas y el diseño seguro hasta los estándares de codificación, las pruebas y la revisión— de modo que las vulnerabilidades se previenen en lugar de parchearse después del lanzamiento.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

El desarrollo de software seguro es la disciplina de incorporar actividades y controles de seguridad a lo largo del ciclo de vida del desarrollo de software con el fin de reducir el número y la gravedad de las vulnerabilidades en el software entregado.

Scope

Este tema abarca las prácticas y procesos que producen software seguro: modelado de amenazas, principios de diseño seguro, estándares de codificación segura, análisis estático y dinámico, fuzzing, pruebas de seguridad, revisión de código y el ciclo de vida de desarrollo seguro y DevSecOps. Aborda la seguridad de la cadena de suministro y las dependencias. Excluye el estudio ofensivo de la explotación y el análisis post-lanzamiento de malware, que se tratan en temas relacionados.

Core questions

  • ¿Cómo se diseña la seguridad en el software desde el principio en lugar de añadirla después?
  • ¿Qué es el modelado de amenazas y cómo guía el diseño seguro?
  • ¿Cómo encuentran el análisis estático, el análisis dinámico y el fuzzing las vulnerabilidades antes del lanzamiento?
  • ¿Cómo se incrustan las actividades de desarrollo seguro en las modernas pipelines de CI/CD (DevSecOps)?
  • ¿Cómo se gestionan los riesgos de las dependencias de terceros y la cadena de suministro de software?

Key concepts

  • modelado de amenazas
  • principios de diseño seguro
  • estándares de codificación segura
  • pruebas de seguridad de aplicaciones estáticas (SAST)
  • análisis dinámico (DAST)
  • fuzzing
  • revisión de código
  • ciclo de vida de desarrollo seguro
  • seguridad de la cadena de suministro

Key theories

Ciclo de vida de desarrollo de seguridad
Un proceso estructurado que integra puertas de seguridad en cada fase del desarrollo —requisitos, diseño (modelado de amenazas), implementación (codificación segura, análisis), verificación (pruebas, fuzzing) y lanzamiento— reduciendo de forma medible las vulnerabilidades del software entregado.
Desplazamiento a la izquierda y aseguramiento automatizado
Encontrar y corregir defectos temprano ('desplazamiento a la izquierda') es mucho más económico que después del despliegue; el análisis estático/dinámico automatizado y el fuzzing integrados en la integración continua proporcionan un aseguramiento escalable y repetible.

Mechanisms

El desarrollo seguro comienza con el modelado de amenazas (por ejemplo, STRIDE) para identificar qué podría salir mal, informando un diseño que aplica el principio de menor privilegio y defensa en profundidad. Durante la implementación, los estándares de codificación segura y el análisis estático señalan patrones de riesgo, mientras que el análisis dinámico y el fuzzing ejercitan el programa en ejecución con entradas malformadas para detectar fallos y errores de memoria. La revisión de código y las pruebas de seguridad preceden al lanzamiento, y en DevSecOps estas comprobaciones se ejecutan automáticamente en la pipeline de construcción, con el escaneo de dependencias y las construcciones firmadas protegiendo la cadena de suministro.

Clinical relevance

El desarrollo seguro determina la seguridad base de casi todo el software que la gente utiliza. La adopción del SDL por parte de Microsoft después de 2002 redujo notablemente las vulnerabilidades en sus productos, el fuzzing continuo (OSS-Fuzz de Google) encuentra miles de errores en código abierto ampliamente utilizado, y las prácticas de la cadena de suministro se volvieron urgentes después de ataques como SolarWinds y Log4Shell. Estas prácticas moldean las expectativas regulatorias y los requisitos de adquisición.

Evidence & guidelines

Los marcos incluyen el SDL de Microsoft, OWASP SAMM y ASVS, BSIMM (una medición de programas reales) y el Marco de Desarrollo de Software Seguro (SSDF, SP 800-218) del NIST. La guía ejecutiva de EE. UU. ahora exige la certificación SSDF para los proveedores de software del gobierno, y los estándares SBOM (lista de materiales de software) apoyan la transparencia de la cadena de suministro.

History

El desarrollo seguro surgió del reconocimiento a finales de la década de 1990 y principios de la de 2000 de que parchear el software ya distribuido no era escalable. La iniciativa Trustworthy Computing de Microsoft en 2002 produjo el Ciclo de Vida de Desarrollo de Seguridad, y 'Software Security' de McGraw (2006) codificó el concepto de 'construir la seguridad desde el inicio'. La década de 2010 integró estas prácticas en los flujos de trabajo ágiles y DevOps (DevSecOps) y, después de importantes incidentes en la cadena de suministro, las extendió a las dependencias y la integridad de la construcción.

Key figures

  • Gary McGraw
  • Michael Howard
  • Steve Lipner
  • Ross Anderson

Related topics

Seminal works

  • howard2006
  • mcgraw2006
  • anderson2020

Frequently asked questions

Qué es el modelado de amenazas?
El modelado de amenazas es un análisis estructurado, realizado durante el diseño, de lo que un atacante podría atacar y cómo. Los equipos diagraman el sistema, enumeran las amenazas (a menudo con una lista de verificación como STRIDE) y deciden las mitigaciones antes de que se escriba el código, de modo que la seguridad se incorpore a la arquitectura.
Por qué no es suficiente ejecutar un escáner de seguridad?
Los escáneres automatizados detectan muchos patrones conocidos, pero omiten fallos de diseño, errores de lógica de negocio y problemas novedosos, y producen falsos positivos. Los programas efectivos combinan el análisis automatizado con el modelado de amenazas, la revisión manual y las pruebas a lo largo de todo el ciclo de vida.

Methods for this concept

Related concepts