SEC11-BP03 Realizar pruebas de penetración periódicas
Realice pruebas de penetración periódicas de su software. Este mecanismo ayuda a identificar posibles problemas de software que no pueden detectarse mediante pruebas automatizadas o una revisión manual del código. También puede ayudarle a comprender la eficacia de sus controles de detección. Las pruebas de penetración deben tratar de determinar si se puede hacer que el software realice operaciones inesperadas, como exponer datos que deberían estar protegidos o conceder permisos más amplios de lo esperado.
Resultado deseado: Las pruebas de penetración se utilizan para detectar, remediar y validar las propiedades de seguridad de la aplicación. Las pruebas de penetración periódicas y programadas deben formar parte del ciclo de vida de desarrollo de software (SDLC). Los hallazgos de las pruebas de penetración deben resolverse antes del lanzamiento del software. Debe analizar los resultados de las pruebas de penetración para identificar si hay problemas que podrían detectarse mediante la automatización. El uso de un proceso de pruebas de penetración periódicas y repetibles que incluya un mecanismo de retroalimentación activo ayuda a orientar a los creadores y mejora la calidad del software.
Patrones comunes de uso no recomendados:
-
Hacer pruebas de penetración solo para problemas de seguridad conocidos o frecuentes.
-
Hacer pruebas de penetración de aplicaciones sin herramientas ni bibliotecas de terceros dependientes.
-
Hacer pruebas de penetración solo para problemas de seguridad de paquete, sin evaluar la lógica empresarial implementada.
Beneficios de establecer esta práctica recomendada:
-
Mayor confianza en las propiedades de seguridad del software antes de su lanzamiento.
-
Oportunidad de identificar los patrones de aplicación preferidos, lo que conduce a una mayor calidad del software.
-
Un ciclo de retroalimentación que identifica en una fase más temprana del ciclo de desarrollo dónde la automatización o la formación adicional podrían mejorar las propiedades de seguridad del software.
Nivel de riesgo expuesto si no se establece esta práctica recomendada: alto
Guía para la implementación
Las pruebas de penetración son un ejercicio estructurado de pruebas de seguridad en el que se ejecutan escenarios planificados de violación de la seguridad para detectar, remediar y validar los controles de seguridad. Las pruebas de penetración comienzan con el reconocimiento, durante el cual se recopilan datos basados en el diseño actual de la aplicación y sus dependencias. Luego, se elabora y ejecuta una lista seleccionada de escenarios de pruebas de seguridad. El objetivo principal de estas pruebas es descubrir problemas de seguridad en la aplicación, que podrían aprovecharse para obtener acceso no deseado a su entorno o acceso no autorizado a los datos. Debe llevar a cabo pruebas de penetración cuando lance nuevas características, o siempre que la aplicación haya sufrido cambios importantes en su funcionamiento o implementación técnica.
Debe identificar la etapa más apropiada del ciclo de vida de desarrollo en el que realizar las pruebas de penetración. Estas pruebas deben hacerse lo bastante tarde como para que la funcionalidad del sistema se aproxime al estado de lanzamiento previsto, pero con tiempo suficiente para solucionar cualquier problema.
Pasos para la aplicación
-
Tenga un proceso estructurado para determinar el alcance de las pruebas de penetración. Basar este proceso en el modelo de amenazas
es una buena forma de mantener el contexto. -
Identifique la etapa más apropiada del ciclo de desarrollo en el que realizar las pruebas de penetración. Debería ser cuando se espera un cambio mínimo en la aplicación, pero con tiempo suficiente para llevar a cabo la corrección.
-
Forme a sus creadores sobre qué esperar de los resultados de las pruebas de penetración y cómo obtener información sobre la corrección.
-
Utilice herramientas para acelerar el proceso de las pruebas de penetración mediante la automatización de pruebas habituales o repetibles.
-
Analice los resultados de las pruebas de penetración con vistas a identificar problemas de seguridad sistémicos y utilice estos datos para efectuar pruebas automatizadas adicionales y para la formación continua de los creadores.
Recursos
Prácticas recomendadas relacionadas:
Documentos relacionados:
-
Las pruebas de penetración de AWS
ofrecen orientación detallada sobre las pruebas de penetración en AWS -
Accelerate deployments on AWS with effective governance
(Acelerar los despliegues en AWS con una gobernanza eficaz) -
Modernize your penetration testing architecture on AWS Fargate
(Modernice su arquitectura de pruebas de penetración en AWS Fargate)
Ejemplos relacionados:
-
Automate API testing with AWS CodePipeline
(Automatización de las pruebas de API con AWS CodePipeline) (GitHub) -
Automated security helper
(Ayudante de seguridad automatizado) (GitHub)