1.3 Producir Software Bien Asegurado (PW)
1.3 Producir Software Bien Asegurado (PW) — Tareas de Código y Precompilación
Las organizaciones deben producir software bien asegurado con vulnerabilidades de seguridad mínimas en sus versiones.
PW.1
Diseñar el Software para Cumplir con los Requisitos de Seguridad y Mitigar Riesgos de Seguridad: Identificar y evaluar los requisitos de seguridad del software; determinar qué riesgos de seguridad es probable que enfrente el software durante su operación y cómo el diseño y la arquitectura del software deben mitigar esos riesgos; y justificar cualquier caso en el que un análisis basado en riesgos indique que los requisitos de seguridad deben flexibilizarse o eximirse. Abordar los requisitos y riesgos de seguridad durante el diseño del software (secure by design) es clave para mejorar la seguridad del software y también ayuda a mejorar la eficiencia del desarrollo.
| Tareas | Herramientas |
|---|---|
|
PW.1.1:
Usar formas de modelado de riesgos —como modelado de amenazas, modelado de ataques o mapeo de superficie de ataque— para ayudar a evaluar el riesgo de seguridad del software. PW.1.2: Rastrear y mantener los requisitos de seguridad, los riesgos y las decisiones de diseño del software. PW.1.3: Cuando sea apropiado, incorporar soporte para el uso de funciones y servicios de seguridad estandarizados (por ejemplo, permitir que el software se integre con sistemas existentes de gestión de registros, gestión de identidades, control de acceso y gestión de vulnerabilidades) en lugar de crear implementaciones propietarias de funciones y servicios de seguridad. |
OWASP Threat Dragon
Se utiliza antes de programar para documentar los componentes del sistema, los flujos de datos y los límites de confianza, y luego enumerar amenazas y requisitos. |
|
OWASP Amass
Ayuda a definir los requisitos de seguridad al identificar dependencias externas conocidas, APIs o servicios con los que el código interactuará, lo que informa el modelado de amenazas y el diseño seguro. |
|
|
CAIRIS
Ayuda a los equipos de seguridad y a los desarrolladores a capturar, gestionar y rastrear los requisitos de seguridad desde el diseño inicial hasta el desarrollo, asegurando la alineación de seguridad en la fase prebuild. |
|
|
Threagile
Permite el “modelado de amenazas como código” en la fase prebuild, de modo que los requisitos de seguridad puedan automatizarse y controlarse en versión junto con el código de la aplicación. |
|
|
Open-Needs
Centraliza y estructura los requisitos de seguridad para que estén disponibles para el modelado de amenazas, las revisiones de diseño y la validación temprana. |
|
|
rmtoo
Útil en la fase de diseño y planificación para mantener una lista estructurada de requisitos de seguridad y vincularlos con casos de prueba, modelos de amenazas o módulos de código, asegurando que la seguridad se aborde antes de programar. |
|
|
OpenRMF® OSS
En la fase prebuild, puede definir los requisitos de seguridad exactos derivados del RMF que debe cumplir la base de código, incluyendo las líneas base de controles, y vincularlos con elementos de diseño o tareas de desarrollo. |
PW.2
Revisar el Diseño del Software para Verificar el Cumplimiento de los Requisitos de Seguridad y la Información de Riesgos: Ayuda a garantizar que el software cumpla con los requisitos de seguridad y aborde de manera satisfactoria la información de riesgos identificada.
| Tareas | Herramientas |
|---|---|
|
PW.2.1:
Contar con (1) una persona calificada que no haya participado en el diseño y/o (2) procesos automatizados en la cadena de herramientas que revisen el diseño del software para confirmar y asegurar que cumple con todos los requisitos de seguridad y aborda satisfactoriamente la información de riesgos identificada. |
OWASP Dependency-Check
Analiza las dependencias del proyecto (directas y transitivas) contra la National Vulnerability Database (NVD) y otras fuentes para detectar vulnerabilidades conocidas (CVEs). Ayuda a confirmar si un componente cumple con los requisitos de seguridad antes de su inclusión. |
|
Dependabot
Herramienta automatizada de monitoreo y actualización de dependencias integrada con GitHub. Detecta dependencias vulnerables y crea pull requests para actualizarlas, asegurando que solo se usen versiones seguras. |
|
|
OpenRMF
Gestiona artefactos de cumplimiento del Risk Management Framework (RMF), incluyendo controles NIST 800-53. Puede usarse para confirmar que los componentes de software seleccionados cumplen con las bases de control de seguridad antes de su aprobación. |
|
|
ESLint
Linter de JavaScript/TypeScript que aplica estándares de codificación segura y señala patrones inseguros antes de que lleguen a producción. Ayuda a validar que los componentes de código personalizados cumplan con los requisitos de codificación segura. |
|
|
LGTM
Plataforma de análisis automatizado de código para identificar vulnerabilidades y problemas de calidad en múltiples lenguajes. Confirma que los componentes de código cumplen con las políticas de seguridad antes de su integración. |
|
|
Grype
Escáner de vulnerabilidades de código abierto para imágenes de contenedores y sistemas de archivos. Garantiza que los componentes containerizados cumplan con los requisitos de vulnerabilidad y cumplimiento antes del despliegue. |
|
|
Clair
Análisis estático de vulnerabilidades para imágenes de contenedores. Se integra en CI/CD para detectar vulnerabilidades en imágenes base y capas antes de su promoción. |
|
|
Trivy
Escáner de vulnerabilidades integral para imágenes de contenedores, sistemas de archivos y repositorios Git. Valida que los componentes seleccionados no tengan vulnerabilidades conocidas ni configuraciones inseguras. |
|
|
Checkov
Análisis estático de Infrastructure as Code (IaC) para detectar configuraciones de seguridad incorrectas (Terraform, Kubernetes, CloudFormation). Garantiza que los componentes de IaC cumplan con las bases de seguridad definidas antes de su uso. |
|
|
Terrascan
Escáner de políticas como código para Terraform, Kubernetes, Docker y otros frameworks IaC. Confirma que los componentes de infraestructura cumplan con los requisitos de seguridad y cumplimiento. |
|
|
Gerrit
Herramienta web de revisión de código. Aunque no es un escáner de vulnerabilidades, aplica revisiones humanas y flujos de aprobación que pueden incluir listas de verificación de validación de requisitos de seguridad antes de aprobar un componente. |
PW.4
Reutilizar software existente y bien asegurado cuando sea factible en lugar de duplicar funcionalidades: Reducir los costos de desarrollo de software, acelerar el desarrollo y disminuir la probabilidad de introducir vulnerabilidades adicionales reutilizando módulos y servicios de software cuya seguridad ya ha sido verificada. Esto es especialmente importante para software que implementa funcionalidades de seguridad, como módulos y protocolos criptográficos.
| Tareas | Herramientas |
|---|---|
|
PW.4.1:
Adquirir y mantener componentes de software bien asegurados (por ejemplo, bibliotecas, módulos, middleware, frameworks) de desarrolladores comerciales, de código abierto y de terceros para su uso en el software de la organización.
PW.4.2:
Crear y mantener componentes de software bien asegurados internamente siguiendo los procesos del SDLC para cubrir necesidades internas que no puedan ser satisfechas mejor mediante componentes de terceros.
PW.4.3:
Movido a PW.4.4
PW.4.4:
Verificar que los componentes de software adquiridos, ya sean comerciales, de código abierto o de otros terceros, cumplan con los requisitos definidos por la organización a lo largo de todo su ciclo de vida. |
|
|
CycloneDX
Generado durante build/prebuild para validar los datos de los componentes contra criterios de aceptación definidos. |
|
|
SPDX
Usado para verificar que todos los componentes cumplen con los requisitos de licencias y seguridad antes de su integración. |
|
|
ArtifactHub
Garantiza que solo se obtengan paquetes verificados, firmados y conformes a políticas para los builds. |
|
|
JFrog Artifactory OSS
Actúa como fuente controlada para componentes que cumplen con estándares de seguridad definidos. |
|
|
Sonatype Nexus OSS
Evita el uso de componentes que no cumplen con los requisitos de seguridad o políticas. |
|
|
Harbor
Aplica reglas para que solo imágenes escaneadas, firmadas y conformes a políticas sean almacenadas y utilizadas en builds. |
|
|
GitLab Signing
Aplica la política de commits firmados en merge requests antes de aceptar código. |
|
|
GitHub CodeQL
Ejecuta consultas de seguridad predefinidas en CI para verificar el código antes de su integración. |
|
|
AquaSec Trivy
Aplica criterios de aceptación de seguridad (por ejemplo, sin CVEs críticas) antes de promover componentes. |
|
|
Dependabot
Crea PRs para garantizar que se usen versiones seguras definidas por política. |
|
|
Allstar
Garantiza que los repositorios cumplan con criterios de configuración antes de permitir merges. |
|
|
OWASP SAMM
Proporciona un marco para definir prácticas de aseguramiento de seguridad y objetivos de madurez. Ayuda a establecer criterios para procesos de desarrollo seguro, incluyendo prebuild. |
|
|
OWASP ASVS
Define requisitos detallados de verificación de seguridad para aplicaciones. Puede usarse como referencia para pruebas de seguridad automatizadas y manuales en prebuild. |
|
|
OWASP Defectdojo
Plataforma de gestión de vulnerabilidades y orquestación de pruebas de seguridad. Centraliza resultados de escáneres y asegura que los problemas se rastreen según criterios de aceptación. |
|
|
OWASP Dependency-Check
Escanea dependencias del proyecto buscando vulnerabilidades conocidas (CVEs) y falla builds si no cumplen criterios. |
|
|
Git
VCS que soporta firma de commits y hooks para aplicar prebuild checks (linting, escaneos de seguridad). |
|
|
Gitea
Servicio Git ligero y autohospedado con aplicación de políticas de repositorio (p. ej., commits firmados, revisiones requeridas). |
|
|
GitLab (Community Edition)
Plataforma Git con integración CI/CD para ejecutar controles de seguridad antes de mergear. |
|
|
Visual Studio Code
Soporta extensiones para linting, escaneo de vulnerabilidades y enforcement de firma de código pre-commit. |
|
|
Eclipse
IDE Java con plugins para análisis estático, escaneo de dependencias y enforcement de reglas de codificación segura. |
|
|
IntelliJ IDEA (Community Edition)
IDE Java con plugins para análisis estático, codificación segura y generación de SBOM. |
|
|
JUnit
Framework de pruebas unitarias Java; puede integrarse con suites de pruebas de seguridad. |
|
|
NUnit
Framework de pruebas .NET; soporta integración con tests de validación de seguridad. |
|
|
Pytest
Framework de pruebas Python; puede ejecutar tests basados en reglas de seguridad como parte de CI. |
|
|
Selenium
Herramienta de pruebas automatizadas de navegador; puede validar comportamientos seguros (p. ej., flujos de autenticación). |
|
|
Playwright
Pruebas end-to-end de navegador con soporte para escenarios centrados en seguridad. |
|
|
OWASP ZAP
Herramienta DAST para encontrar problemas de seguridad en aplicaciones en ejecución durante fases de prueba. |
|
|
TestNG
Framework de pruebas para Java; se integra con automatización de seguridad. |
|
|
Cucumber
Framework de pruebas BDD; permite definir tests de aceptación de seguridad en lenguaje natural. |
|
|
Aqua Trivy
Escanea contenedores, sistemas de archivos y repositorios en busca de vulnerabilidades y errores de configuración. |
|
|
Clair
Escaneo estático de vulnerabilidades en imágenes de contenedor antes del despliegue. |
|
|
Grype
Escáner de vulnerabilidades para contenedores y sistemas de archivos. |
|
|
Bandit for Python
Analizador estático específico de Python para problemas de seguridad comunes. |
|
|
Semgrep
Análisis estático multi-lenguaje usando reglas de seguridad personalizadas o predefinidas. |
|
|
Brakeman
Analizador estático específico de Rails para vulnerabilidades de seguridad. |
|
|
Gitleaks
Detecta secretos hardcoded en repositorios Git antes del commit o en CI. |
|
|
TruffleHog
Detecta secretos e información sensible en el historial y commits del código. |
|
|
Sigstore
Framework open-source para firmar artefactos de software (commits, contenedores) usando pruebas criptográficas. |
|
|
OWASP Dependency-Check
Escanea dependencias del proyecto (directas y transitivas) buscando CVEs conocidas usando NVD y otras fuentes. Puede aplicar criterios de “no vulnerabilidades críticas/altas” antes de aprobar el build. |
|
|
OSS Review Toolkit (ORT)
Garantiza que los componentes seleccionados cumplan criterios de licencias y seguridad antes de integrarse a la línea principal. |
|
|
FOSSA (Community Edition)
Puede bloquear merges o builds que violen reglas de licencias o contengan vulnerabilidades conocidas. |
|
|
ScanCode Toolkit
Asegura que los criterios de licencias se cumplan antes de aceptar componentes en el build. |
|
|
Tern
Proporciona inventario de componentes para validar contra criterios de aceptación predefinidos. |
|
|
Open Policy Agent (OPA)
Aplica políticas de seguridad, cumplimiento y configuración durante gates de CI/CD antes del release. |
PW.5
Crear Código Fuente Siguiendo Prácticas de Codificación Segura: Reducir el número de vulnerabilidades de seguridad en el software y disminuir los costos de desarrollo asegurando que el código fuente se cree siguiendo prácticas de codificación segura, cumpliendo o superando los criterios de severidad de vulnerabilidades definidos por la organización.
| Tareas | Herramientas |
|---|---|
|
PW.5.1:
Seguir todas las prácticas de codificación segura apropiadas para los lenguajes de desarrollo y el entorno, a fin de cumplir con los requisitos de seguridad de la organización. |
Semgrep
Integrado en CI para escanear el código modificado y bloquear merges si las reglas de seguridad fallan; también puede ejecutarse localmente para verificaciones previas al commit. |
|
Bandit para Python
Se ejecuta en prebuild o pipelines de CI para detectar problemas de seguridad de alta severidad en código Python. |
|
|
FindBugs
Analiza código Java antes del empaquetado para identificar vulnerabilidades y malas prácticas de codificación. |
|
|
SpotBugs
Integrado en CI/CD para detectar vulnerabilidades en Java antes del lanzamiento. |
|
|
SonarQube
Se ejecuta en pipelines CI/CD para señalar problemas de seguridad antes de los merges, aplicando quality gates. |
|
|
OWASP ZAP
Se ejecuta en entornos de prueba antes de producción para identificar problemas de seguridad en tiempo de ejecución. |
|
|
Arachni
Escanea instancias de staging/test para detectar vulnerabilidades explotables antes del despliegue. |
|
|
OWASP Dependency-Check
Previene builds que incluyan componentes con vulnerabilidades que superen los umbrales de severidad definidos. |
PW.6
Configurar los Procesos de Compilación, Intérprete y Construcción para Mejorar la Seguridad de los Ejecutables: Reducir el número de vulnerabilidades de seguridad en el software y disminuir los costos de desarrollo al detectar y eliminar vulnerabilidades durante la compilación o construcción, antes de las pruebas y el despliegue.
| Tareas | Herramientas |
|---|---|
|
PW.6.1:
Usar compiladores, intérpretes y herramientas de construcción que incluyan funcionalidades para mejorar la seguridad de los ejecutables.
PW.6.2:
Definir qué funcionalidades de compilador, intérprete y herramientas de construcción se deben aplicar y configurarlas según los estándares de seguridad aprobados. |
|
|
Sigstore Cosign
Firma y verifica la integridad y autenticidad del código fuente y las dependencias precompiladas antes de la compilación. |
|
|
GnuPG (GPG)
Verifica las firmas criptográficas de archivos fuente y dependencias antes de la construcción. |
|
|
OSS Review Toolkit (ORT)
Audita y escanea las dependencias en busca de vulnerabilidades de seguridad y problemas de licencias antes de incluirlas en la construcción. |
|
|
Meson
Sistema de construcción integrado en CI/CD para aplicar configuraciones de seguridad y cumplimiento durante la compilación. |
|
|
Tern
Analiza capas de imágenes de contenedores para identificar componentes de código abierto, licencias y posibles vulnerabilidades antes de usarlas en las construcciones. |
|
|
ScanCode Toolkit
Detecta licencias, derechos de autor y paquetes en el código fuente antes de la construcción para garantizar cumplimiento y seguridad. |
|
|
Grype
Escanea código fuente e imágenes de contenedores en busca de vulnerabilidades conocidas antes de incluirlas en la construcción. |
|
|
Syft
Genera SBOMs a partir del código fuente y dependencias antes de la construcción para documentar y verificar los componentes. |
PW.7
Revisar y Analizar Código Legible por Humanos para Identificar Vulnerabilidades y Verificar el Cumplimiento de Seguridad: Identificar vulnerabilidades en el código para que puedan ser corregidas antes del lanzamiento, previniendo su explotación. Los métodos automatizados reducen el esfuerzo y los recursos necesarios para detectar problemas. El código legible por humanos incluye código fuente, scripts y cualquier otra forma que la organización reconozca como legible por humanos.
| Tareas | Herramientas |
|---|---|
|
PW.7.1:
Determinar si se debe utilizar revisión de código (una persona examina directamente el código para encontrar problemas) y/o análisis de código (se usan herramientas para encontrar problemas en el código, ya sea de forma totalmente automatizada o en conjunto con una persona), según lo defina la organización.
PW.7.2:
Realizar la revisión de código y/o el análisis de código de acuerdo con los estándares de codificación segura de la organización, registrando y clasificando todos los problemas detectados y las recomendaciones de remediación en el flujo de trabajo del equipo de desarrollo o en el sistema de seguimiento de incidencias. |
|
|
OWASP Dependency-Check
Escanea las dependencias del proyecto (por ejemplo, Maven, npm, Python) contra la NVD para CVEs conocidas antes de la compilación, permitiendo la remediación temprana de librerías vulnerables. |
|
|
OWASP ZAP
Principalmente una herramienta de pruebas de seguridad de aplicaciones dinámicas (DAST), pero en precompilación no se usa generalmente; puede ejecutarse contra compilaciones locales para detectar fallas tempranas en tiempo de ejecución. Aplicabilidad limitada a PW.7 precompilación. |
|
|
SonarQube
Realiza SAST y revisa la calidad del código para múltiples lenguajes, detectando vulnerabilidades, errores y malos olores en el código antes de la compilación o integración. |
|
|
Retire.js
Escanea código JavaScript y manifiestos de paquetes en busca de librerías vulnerables conocidas antes del empaquetado. |
|
|
Fossa Community Edition
Realiza escaneo de dependencias para problemas de licencias y vulnerabilidades antes de la compilación. La versión comercial SaaS es propietaria. |
|
|
Semgrep
Herramienta SAST ligera y personalizable. Utiliza reglas para detectar problemas de seguridad y patrones inseguros en el código fuente antes de la compilación. |
|
|
Bandit para Python
Escanea código Python en busca de problemas de seguridad comunes antes de la compilación (por ejemplo, uso inseguro de funciones, contraseñas codificadas). |
|
|
Checkmarx KICS
Herramienta de análisis estático para IaC (Terraform, YAML de Kubernetes, etc.) para encontrar configuraciones incorrectas antes del despliegue. |
|
|
Cppcheck para C++
Análisis estático para código C/C++ para detectar comportamientos indefinidos, problemas de memoria y vulnerabilidades comunes antes de la compilación. |
|
|
FindSecBugs
Plugin para SpotBugs que detecta vulnerabilidades específicas de Java antes de la compilación. |
|
|
GitHub CodeQL
Realiza análisis profundo del código usando un lenguaje de consultas para detectar vulnerabilidades antes de la compilación. Excelente para SAST automatizado en pipelines de CI. |
|
|
PMD
Escanea Java, Apex, JavaScript, XML y otros códigos en busca de errores, código no utilizado y posibles problemas de seguridad antes de la compilación. |
|
|
SpotBugs
Análisis estático para bytecode Java; detecta patrones de errores y posibles vulnerabilidades precompilación (cuando se ejecuta sobre archivos de clase compilados en CI antes del empaquetado). |
|
|
Danger JC
Automatiza las revisiones de pull requests — aplica las pautas de seguridad/contribución y previene que patrones inseguros se fusionen al código antes de la compilación. |
PW.8
Probar el Código Ejecutable para Identificar Vulnerabilidades y Verificar el Cumplimiento de los Requisitos de Seguridad: Ayuda a identificar vulnerabilidades para que puedan corregirse antes de que el software sea liberado, previniendo su explotación. El uso de métodos automatizados reduce el esfuerzo y los recursos necesarios para detectar vulnerabilidades, y mejora la trazabilidad y la repetibilidad. El código ejecutable incluye binarios, bytecode ejecutable directamente, código fuente y cualquier otra forma de código que la organización considere ejecutable.
| Tareas | Herramientas |
|---|---|
|
PW.8.1:
Determinar si se debe realizar pruebas de código ejecutable para encontrar vulnerabilidades no identificadas por revisiones, análisis o pruebas previas y, de ser así, qué tipos de pruebas deben utilizarse.
PW.8.2:
Delimitar el alcance de las pruebas, diseñarlas, ejecutarlas y documentar los resultados, incluyendo el registro y la clasificación de todos los problemas descubiertos y las recomendaciones de remediación en el flujo de trabajo del equipo de desarrollo o en el sistema de seguimiento de incidencias. |
|
|
Semgrep
Motor SAST que analiza el código fuente contra reglas de seguridad antes de la compilación, detectando vulnerabilidades tempranamente. |
|
|
Bandit (Python)
Análisis estático para código Python para encontrar problemas de seguridad comunes antes del empaquetado. |
|
|
FindSecBugs
Plugin de seguridad para SpotBugs para detectar vulnerabilidades en código Java/Scala/Groovy antes de la compilación. |
|
|
Cppcheck
Análisis estático para C/C++ para detectar fallos de seguridad antes de generar los artefactos de compilación. |
|
|
PMD
Análisis estático basado en reglas para Java, Apex, JavaScript y XML para detectar vulnerabilidades y problemas de codificación. |
|
|
SpotBugs
Detección de errores y vulnerabilidades en código Java antes de generar la salida de compilación. |
|
|
GitHub CodeQL
Análisis semántico de código para encontrar vulnerabilidades antes de la compilación. |
|
|
OWASP Dependency-Check
Herramienta SCA que identifica dependencias vulnerables en los manifiestos antes del empaquetado. |
|
|
Retire.js
Analiza dependencias de JavaScript y Node.js para detectar vulnerabilidades conocidas antes de la liberación. |
|
|
Grype
Herramienta SSCA para escanear dependencias de código fuente y imágenes base antes de la compilación para detectar CVEs. |
|
|
Syft
Genera SBOMs desde código fuente antes de la compilación para verificar el inventario de componentes. |
|
|
Checkmarx KICS
Analiza archivos de Infrastructure-as-Code (Terraform, Kubernetes YAML, etc.) para detectar configuraciones incorrectas antes del despliegue. |
|
|
Gitleaks
Busca secretos en el código y en el historial de Git antes de la compilación. |
|
|
TruffleHog
Busca secretos e información sensible en el código y en el historial de Git antes de la compilación. |
PW.9
Configurar el Software para que Tenga Configuraciones Seguras por Defecto: Ayuda a mejorar la seguridad del software en el momento de la instalación para reducir la probabilidad de que se despliegue con configuraciones de seguridad débiles, lo que aumentaría el riesgo de compromiso.
| Tareas | Herramientas |
|---|---|
|
PW.9.1:
Definir una línea base segura determinando cómo configurar cada ajuste que tenga efecto en la seguridad o cualquier ajuste relacionado con la seguridad, de modo que la configuración predeterminada sea segura y no debilite las funciones de seguridad proporcionadas por la plataforma, la infraestructura de red o los servicios.
PW.9.2:
Implementar los ajustes predeterminados (o grupos de ajustes predeterminados, si es aplicable) y documentar cada configuración para los administradores de software. |
|
|
KICS (Checkmarx)
Detecta configuraciones incorrectas y valores predeterminados inseguros en archivos de IaC antes de la compilación. |
|
|
Open Policy Agent (OPA)
Motor de políticas como código para aplicar reglas de configuración segura en pipelines previos a la compilación. |
|
|
Yamllint
Valida archivos de configuración YAML, asegurando la corrección de su estructura antes de realizar más verificaciones de seguridad. |