Cybersecurity Architecture: Application Security

Cybersecurity Architecture: Application Security

¿Por qué es importante la seguridad en aplicaciones?

Introducción a la seguridad de aplicaciones

  • Bienvenida a la serie sobre Arquitectura de Ciberseguridad, donde se han discutido principios de seguridad y dominios como gestión de identidad y acceso, así como seguridad en puntos finales y redes. Hoy se abordará la seguridad en aplicaciones.

Importancia de abordar vulnerabilidades

  • Todos los software tienen errores; es inevitable que existan vulnerabilidades de seguridad. Por lo tanto, es crucial reducir estas vulnerabilidades para evitar problemas mayores.

Fases del desarrollo de aplicaciones

  • La mayoría de las vulnerabilidades se introducen durante la fase de codificación. A medida que avanzamos hacia pruebas unitarias, funcionales y liberación, encontramos menos errores.

Costos asociados con las vulnerabilidades

  • El costo para corregir una vulnerabilidad aumenta significativamente si no se detecta en las primeras fases del desarrollo. Puede llegar hasta 640 veces más caro arreglar un error después del lanzamiento.

¿Cómo mejorar el proceso de desarrollo?

Ciclo tradicional del desarrollo de software (SDLC)

  • En el ciclo tradicional, hay una separación clara entre las fases de desarrollo (dev) y operación (ops), lo que puede llevar a una falta de comunicación y un proceso lento e inflexible.

Problemas con el enfoque tradicional

  • Este enfoque lineal crea una mentalidad "sobre la pared", donde los desarrolladores escriben código sin colaborar adecuadamente con quienes operan el software.

Adopción del modelo DevOps

Integración continua en DevOps

  • DevOps promueve un proceso cíclico donde el desarrollo, despliegue y operación están interconectados, fomentando mejoras continuas y colaboración entre equipos.

Introducción al modelo DevSecOps

  • DevSecOps integra la seguridad en cada fase del ciclo SDLC. La seguridad debe ser parte integral desde el diseño hasta la implementación, no algo añadido al final.

Prácticas seguras en codificación

Necesidades para escribir código seguro

Importancia de la Seguridad en el Desarrollo de Software

Desbordamiento de Buffer y Validación de Entrada

  • Es crucial asegurarse de que los buffers asignados para la entrada no sean demasiado grandes, ya que esto puede provocar un desbordamiento de buffer, lo que sobrescribe la memoria y genera problemas. La validación adecuada de la entrada es esencial para evitar estas condiciones.

Uso de Criptografía y Prácticas Seguras

  • Se discuten diversas formas en las que se puede utilizar la criptografía y se enfatiza la importancia del manejo adecuado de errores. Se recomienda consultar recursos como owasp.org, donde se encuentran prácticas seguras para codificación.

Bibliotecas Confiables

  • En el desarrollo moderno, no todos escriben su código desde cero; muchas veces se utilizan bibliotecas externas, ya sean de código abierto o propietario. Sin embargo, es fundamental evaluar su confiabilidad antes de integrarlas en el código.

Vulnerabilidades en Bibliotecas Confiables

  • Un ejemplo notable es Log4J, una vulnerabilidad conocida que afectó a numerosos sistemas debido a su uso generalizado. Esto resalta la necesidad de inspeccionar incluso las bibliotecas consideradas confiables para detectar posibles fallos.

Arquitecturas Estándar y Errores Comunes

  • Es importante definir arquitecturas estándar al abordar un enfoque específico en el desarrollo. OWASP proporciona una lista llamada "OWASP Top Ten", que detalla las diez principales vulnerabilidades recurrentes en el tiempo, indicando que aún persisten muchos defectos comunes.

Materiales sobre Software y Gestión de Dependencias

  • Surge la idea del "software bill of materials", donde se busca conocer todos los componentes utilizados en un sistema, sus orígenes y versiones. Esto ayuda a gestionar mejor las actualizaciones y vulnerabilidades potenciales asociadas con cada componente.

Pruebas de Vulnerabilidad durante el Ciclo de Vida del Desarrollo

  • Se debe realizar pruebas continuas para asegurar la seguridad durante todo el proceso. Las herramientas SAST (pruebas estáticas) permiten analizar el código fuente mientras que DAST (pruebas dinámicas) evalúan sistemas ejecutables después del desarrollo inicial.

Diferencias entre SAST y DAST

Seguridad en Aplicaciones: Herramientas y Desafíos

Introducción a la Seguridad en el Desarrollo

  • La seguridad debe ser considerada desde las primeras etapas del desarrollo para reducir costos, idealmente antes de la fase de lanzamiento donde los gastos aumentan significativamente.
  • Es crucial utilizar tanto escáneres de código fuente como escáneres dinámicos, ya que cada uno identifica diferentes tipos de vulnerabilidades. Ambos deben integrarse en el proceso cíclico de DevSecOps.

Herramientas Emergentes: Chatbots y Modelos de Lenguaje

  • Los chatbots, especialmente aquellos con capacidades generativas, están ganando popularidad en el desarrollo de aplicaciones al poder generar código rápidamente.
  • Un chatbot puede crear rutinas específicas (por ejemplo, en Python) y también ayudar a depurar código, lo que facilita el trabajo del desarrollador.

Riesgos Asociados con el Uso de Chatbots

  • Aunque los chatbots son útiles, existe un riesgo significativo: pueden introducir vulnerabilidades al generar código sin supervisión adecuada.
  • Al usar un chatbot para escribir grandes cantidades de código, es probable que no se inspeccione adecuadamente si hay errores o puertas traseras introducidas intencionalmente.

Propiedad Intelectual y Confidencialidad

  • Compartir código confidencial con un chatbot durante la depuración puede exponer propiedad intelectual y secretos comerciales a riesgos innecesarios.
  • Ha habido casos donde empresas han expuesto su código propietario al utilizar chatbots para depuración, lo que llevó a una reevaluación del uso de estas herramientas.

Conclusiones sobre Seguridad en Aplicaciones

  • Se ha discutido cómo implementar procesos continuos y herramientas efectivas para mejorar la seguridad. Aprender de errores pasados es esencial para evitar repetir problemas comunes.
Video description

IBM Security QRadar EDR : https://ibm.biz/Bdymjj IBM Security X-Force Threat Intelligence Index 2023: https://ibm.biz/BdymjZ Software bugs, they are a fact of life. But the longer they remain undetected, the higher the cost of fixing them... and the higher risk of security vulnerabilities that malicious actors can exploit. In this installment of the Cybersecurity Architecture series, IBM Distinguished Engineer and Adjunct Professor Jeff Crume explains the software bug lifecycle and how it can be better addressed through proactive processes that replace the traditional development/operations "over the wall" approach. Subscribe to see more videos like this in the future → http://ibm.biz/subscribe-now #AI #Software #ITModernization #Cybersecurity #QRadar #JeffCrume #applicationsecurity