AppSec es difícil
Los programas de seguridad de aplicaciones son difíciles. Hay muchas partes móviles. Pero es necesario asegurarse de que el software se diseñe, cree e implemente de manera que minimice las vulnerabilidades de seguridad, protegiendo así a los usuarios y sus datos de posibles ataques cibernéticos. Un programa robusto de AppSec tendrá un enfoque integral que implica la integración de varias prácticas a lo largo del proceso de desarrollo de software para minimizar el riesgo de vulnerabilidades e infracciones de seguridad. Esta no es una lista completa, pero le dará una idea del alcance.
El modelado de amenazas es el proceso de identificar y evaluar posibles amenazas de seguridad y vulnerabilidades en el software antes de que puedan ser explotadas. Esto se puede hacer analizando la arquitectura y el diseño del software, identificando datos confidenciales e identificando posibles vectores de ataque. El modelado de amenazas basado en Agile es una metodología que combina los principios del desarrollo de software ágil con el modelado de amenazas. Este enfoque permite que los equipos identifiquen y aborden posibles amenazas y vulnerabilidades de seguridad en una etapa temprana del proceso de desarrollo, al mismo tiempo que pueden responder rápidamente a los requisitos cambiantes.
La codificación segura es otra práctica importante en el desarrollo de software seguro. Esto implica escribir código que esté libre de fallas y vulnerabilidades de seguridad comunes. Esto se puede ayudar mediante el uso de pautas de codificación segura, como el material OWASP . Estos tipos de recursos brindan a los desarrolladores un conjunto de mejores prácticas para escribir código seguro y les ayudan a evitar errores comunes que pueden conducir a vulnerabilidades de seguridad.
Mantener el software actualizado es otra práctica importante. Esto incluye no solo el software en sí, sino también las bibliotecas y dependencias de terceros. Esto garantiza que cualquier vulnerabilidad de seguridad conocida se aborde de manera oportuna, lo que reduce el riesgo de explotación por parte de los atacantes.
Por supuesto, las pruebas de penetración y el análisis de vulnerabilidades son técnicas utilizadas para identificar y abordar las vulnerabilidades de seguridad en el software. Estas técnicas simulan ataques del mundo real en el software, lo que permite a los desarrolladores identificar y abordar cualquier vulnerabilidad antes de que los atacantes puedan explotarla. Herramientas automatizadas como análisis de composición de software (SCA), pruebas de seguridad de aplicaciones estáticas (SAST), pruebas de seguridad de aplicaciones dinámicas (DAST), pruebas de seguridad de aplicaciones interactivas (IAST), pruebas de seguridad de aplicaciones móviles (MAST) y autoprotección de aplicaciones en tiempo de ejecución ( RASP) se puede utilizar para automatizar la identificación y reparación de vulnerabilidades de seguridad. Además, la seguridad de API es un aspecto crítico del desarrollo de software moderno.
Otro aspecto importante del desarrollo de software seguro es la prevención de pérdida de datos (DLP). Las soluciones DLP se pueden utilizar para detectar y evitar la exposición no autorizada de datos confidenciales, como información de identificación personal (PII), secretos, etc.
La educación y la formación también son importantes para el desarrollo de software seguro. Los programas de campeones de seguridad y los programas educativos para desarrolladores pueden ayudar a garantizar que todos los miembros del equipo de desarrollo tengan los conocimientos y las habilidades necesarias para escribir código seguro. Esto incluye comprender OWASP Top 10, una lista de los riesgos de seguridad de aplicaciones web más críticos, y Common Weakness Enumeration (CWE) Top 25 , una lista de debilidades de software comunes.
La metodología de desplazamiento a la izquierda y las puertas automatizadas en las canalizaciones también son esenciales para el desarrollo de software seguro. Estas prácticas permiten a los desarrolladores identificar y abordar posibles vulnerabilidades desde el principio, antes de que se conviertan en parte del código base y se implementen en producción mediante la integración de herramientas en canalizaciones de integración y entrega continuas (CI/CD), así como obtener el resultado de esas herramientas. en algún lugar donde pueda realizar un seguimiento de los indicadores clave de rendimiento (KPI) y también clasificar posibles vulnerabilidades mediante la integración con algo como JIRA para una gestión ágil del trabajo.
Los ganchos de git de confirmación previa también son una herramienta útil para el desarrollo de software seguro. Estos ganchos se pueden usar para verificar automáticamente el código en busca de inseguridad ii antes de que se confirme en el repositorio, o para evitar que se confirmen secretos.
Otro aspecto importante de AppSec es la clasificación de vulnerabilidades. Este es el proceso de identificación y priorización de vulnerabilidades en función de su gravedad e impacto potencial. Este enfoque permite a las organizaciones concentrar sus recursos en las vulnerabilidades más críticas y abordarlas de manera oportuna. Factores como la probabilidad de explotación, el impacto potencial y la facilidad de explotación se tienen en cuenta al clasificar las vulnerabilidades. En algunos casos, la aplicación de parches puede no ser el mejor curso de acción y se pueden considerar alternativas como el monitoreo, la segmentación de la red y los controles de acceso.
Para administrar un programa AppSec sólido, es importante contar con las herramientas y plataformas adecuadas. Algunas opciones populares incluyen Esno para ganar visibilidad y coordinar las herramientas, las personas y los procesos. Checkmarx y Veracode brindan una gran cantidad de cobertura de funciones para el escaneo estático y dinámico, y Snyk tiene buena reputación por sus capacidades de seguridad de código abierto y, como plataforma completa, es muy apreciada por su facilidad de uso y su enfoque en el desarrollador, pero Black Duck tiene una sólida reputación en SCA. Invicti es bueno para IAST, Wiz se está volviendo popular para CSPM. Aqua para la seguridad de los contenedores está probado y es cierto, SpectralOpspara DLP, NoName Security o Salt para API Security, NowSecure para Mobile AppSec, Irius Risk para el modelado de amenazas o Bionic para un modelo de amenazas más automatizado y un enfoque de gestión de la postura. También está el fuzzing, que es un tipo de prueba dinámica basada en el comportamiento que prueba lo desconocido e intenta encontrar la vulnerabilidad; un ejemplo muy moderno de una plataforma en este espacio es Mayhem .
Para realizar un seguimiento del riesgo de código abierto y de terceros, también es importante mantener una lista de materiales del software (SBOM). Algunas de estas herramientas pueden generarlos por ti (Veracode, Black Duck, etc).
Es posible que algunos no consideren esto como parte de un programa AppSec, pero creo que la tecnología de ingeniería de engaño debería ser parte del programa de seguridad de productos más grande destinado a tratar de desperdiciar los recursos de los atacantes y obligarlos a pasar a objetivos más fáciles y menos costosos. Un ejemplo de vanguardia en este espacio es CounterCraft. Piense en la tecnología honeypot con esteroides.
Además, la capacitación y la educación son esenciales para el desarrollo de software seguro. Las opciones de capacitación de Secure Code Review incluyen Secure Code Warrior , Security Journey , Immersive Labs y Avatao . Los programas de divulgación de vulnerabilidades (VDP) se pueden administrar a través de plataformas como HackerOne y los programas Bug Bounty se pueden configurar y administrar a través de plataformas como Intigriti.
Hay más en lo que podríamos entrar, como el papel de la política como código y cómo automatizar completamente las puertas y cómo deberían funcionar los flujos de trabajo de aprobación en contextos altamente regulados, pero tendremos que dejarlo aquí por ahora.
En resumen, el desarrollo de software seguro requiere un enfoque integral y multifacético que implica la integración de todas las prácticas mencionadas anteriormente en todo el proceso de desarrollo de software. Al hacerlo, los desarrolladores pueden garantizar la seguridad y la protección de los usuarios y sus datos, y crear un software sólido, confiable y seguro. Es importante tener en cuenta que el panorama de la seguridad cambia constantemente, por lo que es necesario realizar revisiones e investigaciones continuas para mantenerse al día.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































