"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Gestión proactiva de vulnerabilidades continuas de AppSec para desarrolladores y equipos de seguridad

Gestión proactiva de vulnerabilidades continuas de AppSec para desarrolladores y equipos de seguridad

Publicado el 2024-11-06
Navegar:800

¿Cuáles son algunos de los crecientes riesgos de ciberseguridad en el panorama de desarrollo de software moderno que mantienen ocupados a los CISO?

Los desarrolladores y los equipos de seguridad enfrentan una variedad cada vez mayor de amenazas, desde sofisticados ataques de código abierto y a la cadena de suministro controlados por proveedores hasta vulnerabilidades introducidas por código generado por IA, como la inyección rápida y la seguridad deficiente del código por parte de GitHub Copilot. La complejidad de las aplicaciones modernas, que a menudo dependen en gran medida de componentes de código abierto (como los que se encuentran en npm, PyPI o RubyGems) y de implementaciones en contenedores, aumenta el desafío. 

Dada la escala y la complejidad de estos riesgos, automatizar la gestión de vulnerabilidades se ha vuelto esencial. Los procesos manuales de ciberseguridad simplemente no pueden seguir el ritmo del volumen y la velocidad de las posibles vulnerabilidades y el desarrollo de software. La automatización no solo acelera la identificación y solución de problemas de seguridad, sino que también garantiza que estos procesos, seguidos rutinariamente por los equipos de seguridad, se apliquen de manera consistente en todas las etapas del ciclo de vida del desarrollo de software.

La importancia de la gestión continua de vulnerabilidades en dominios específicos

  • Creciente dependencia de componentes de código abierto: Los componentes de código abierto se han vuelto omnipresentes en el desarrollo de software moderno. Si bien estos componentes aceleran el desarrollo para los desarrolladores de aplicaciones y ayudan a reducir costos, también introducen importantes riesgos de seguridad. Los ataques de alto perfil a la cadena de suministro, como la puerta trasera XZ y la violación de SolarWinds, han puesto de relieve el potencial de daños generalizados cuando se explotan las vulnerabilidades en las dependencias de código abierto y los componentes cerrados controlados por los proveedores.
  • Uso creciente de código generado por IA en el desarrollo: El auge de la IA generativa (GenAI) en el desarrollo de software trae oportunidades y desafíos. GenAI puede acelerar significativamente las tareas de codificación, pero también puede introducir nuevas vulnerabilidades. El código generado por IA puede carecer de las consideraciones de seguridad que suelen incluir los desarrolladores experimentados, lo que genera posibles brechas de seguridad. Un ejemplo de esto es GitHub Copilot que introduce un XSS en React.
  • Rápido crecimiento de las aplicaciones en contenedores: las aplicaciones en contenedores se han convertido en la norma para implementar software moderno. Los contenedores ofrecen numerosos beneficios, incluida la coherencia entre entornos y la facilidad de escalamiento. Sin embargo, también introducen nuevos desafíos de seguridad, particularmente en la gestión de las vulnerabilidades dentro de las imágenes de los contenedores. Como tal, a los desarrolladores les vendría bien ayuda para educarlos sobre cómo elegir la mejor imagen de contenedor y consejos profesionales generales sobre contenedores, pero automatizar las vulnerabilidades de la imagen del contenedor acoplable es imprescindible.

Analicemos esto un poco más... Otro ejemplo de un ataque a la cadena de suministro de alto perfil es el ataque a Codecov, donde los atacantes obtuvieron acceso a datos confidenciales explotando vulnerabilidades en una popular herramienta de cobertura de código. La rutina de un desarrollador incluye la gestión de los riesgos asociados con las dependencias de código abierto. Las dependencias de código abierto pueden introducir vulnerabilidades tanto directas como transitivas en su código base. Las vulnerabilidades directas se encuentran en las bibliotecas que incluye explícitamente, mientras que las vulnerabilidades transitivas existen en las dependencias de esas bibliotecas. Gestionar estos riesgos manualmente es una tarea desalentadora, lo que hace que la automatización sea un componente crítico de una estrategia de seguridad sólida.

Con GenAI, los asistentes de código de IA como GitHub Copilot o ChatGPT introducen vulnerabilidades reales y potenciales. GenAI puede introducir sin darse cuenta prácticas de codificación inseguras o no reconocer los requisitos de seguridad específicos del contexto. Por ejemplo, un modelo de IA podría generar código vulnerable a ataques de inyección SQL o scripts entre sitios (XSS). Por lo tanto, monitorear y proteger el código generado por IA es crucial para mantener la seguridad de las aplicaciones. 

La complejidad de mantenerse al día con las nuevas vulnerabilidades de los contenedores tampoco escapa a los equipos de seguridad. El rápido ritmo de las nuevas vulnerabilidades de contenedores puede ser abrumador. Cada nueva vulnerabilidad requiere una identificación y remediación oportunas para evitar posibles vulnerabilidades. Esta complejidad requiere soluciones automatizadas con experiencia en seguridad para gestionar la seguridad de los contenedores de forma eficaz.

Las vulnerabilidades de los contenedores pueden tener un impacto significativo en la seguridad general de sus aplicaciones. Una única imagen de contenedor vulnerable puede comprometer toda la pila de aplicaciones. Herramientas como Snyk Container automatizan el proceso de identificación y corrección de vulnerabilidades en imágenes de contenedores. Snyk Container puede sugerir nuevas etiquetas de imágenes base que minimicen el recuento de vulnerabilidades y automaticen las solicitudes de extracción para actualizar sus repositorios de código.

¿Cómo mitigamos todas estas amenazas de ciberseguridad de AppSec?

AppSec proactiva y gestión continua de vulnerabilidades con Snyk

Para mitigar los riesgos asociados con el código generado por IA, considere usar herramientas como Snyk Code. Con tecnología de Snyk DeepCode AI, esta rápida herramienta SAST se puede integrar directamente en el IDE de un desarrollador a través de un complemento. Utiliza capacitación en datos específicos de seguridad para reconocer código vulnerable e inseguro, garantizando que los problemas se identifiquen y aborden en las primeras etapas del desarrollo.

Comenzar a utilizar Snyk DeepCode AI es sencillo. El complemento admite IDE populares como Visual Studio Code, IntelliJ IDEA, VS Code y PyCharm. 

Una guía rápida para instalar e integrar Snyk DeepCode AI en Visual Studio Code

  1. Instalar la extensión Snyk:
  • Abrir código de Visual Studio.
  • Navega a la vista Extensiones haciendo clic en el ícono Extensiones en la barra de actividades al costado de la ventana.
  • Busque "Snyk" y haga clic en "Instalar" en la extensión Snyk.
  1. Autenticarse con Snyk:
  • Después de la instalación, se le pedirá que se autentique con su cuenta Snyk.
  • Sigue las instrucciones que aparecen en pantalla para iniciar sesión o registrarte aquí.
  1. Habilitar Snyk DeepCode AI:
  • Una vez autenticado, navega hasta la vista de Snyk en la barra de actividades.
  • Habilite Snyk DeepCode AI para comenzar a escanear su código en busca de vulnerabilidades.

Una vez instalado, el logotipo de Snyk en la barra lateral mostrará vulnerabilidades y problemas de seguridad que encontró en sus dependencias de código abierto, su propio código (o código producido por GenAI) y problemas de IaC.

Proactive AppSec continuous vulnerability management for developers and security teams

Los beneficios de las herramientas SAST para identificar patrones de código inseguro directamente en el IDE para desarrolladores

  1. Comentarios en tiempo real: A medida que escribe código, Snyk DeepCode AI lo analiza en tiempo real y proporciona comentarios instantáneos sobre posibles problemas de seguridad. Esto permite a los desarrolladores abordar las vulnerabilidades antes de que se arraiguen en el código base.
  2. Información basada en IA: el modelo de IA se entrena en un vasto conjunto de datos específicos de seguridad, lo que le permite reconocer patrones de codificación inseguros, incluso aquellos introducidos por GenAI o prácticas de programación deficientes.
  3. Integración perfecta: Al integrarse directamente en el IDE, Snyk DeepCode AI se adapta naturalmente al flujo de trabajo del desarrollador, minimizando las interrupciones y maximizando la productividad.

Veamos un ejemplo de mitigación de vulnerabilidades introducidas por GenAI. Utilicé GitHub Copilot en este proyecto para completar automáticamente el código que crea una ruta de punto final Express POST para consultar la API de OpenAI y luego usé res.send() para enviar la respuesta al navegador.

Sin embargo, ¿qué pasaría si la respuesta en esta carga útil se representara directamente en el navegador? Si se utilizara el encabezado de tipo de contenido texto/html predeterminado para enviar esta solicitud, una vulnerabilidad de secuencias de comandos entre sitios afectaría la aplicación en ejecución. ¿Qué podemos hacer al respecto?

Proactive AppSec continuous vulnerability management for developers and security teams
Bueno, como puedes ver en la anotación arriba de la línea 31, Snyk propone solucionar este problema de seguridad. Hice clic en él y, en unos segundos, la extensión Snyk DeepCode AI propuso una mitigación que reemplazó res.send() con res.json de la siguiente manera:

res.json(response.choices[0].message.content);

Con este cambio, la aplicación Express fuerza que el tipo de contenido en la respuesta sea aplicación/json, que es texto genérico y puede permitir texto como alert().

Al aprovechar Snyk en su IDE, los desarrolladores pueden identificar y mitigar vulnerabilidades de forma proactiva utilizando el motor de IA subyacente Snyk DeepCode, garantizando que su código esté seguro desde el principio. Este enfoque proactivo para la seguridad de las aplicaciones es esencial en el entorno actual, donde los riesgos asociados con las cadenas de suministro de código abierto y el código generado por GenAI están siempre presentes.

Automatización de la gestión de dependencias con Snyk Open Source

Snyk Open Source es una poderosa herramienta diseñada para ayudar a los desarrolladores y equipos de seguridad a gestionar los riesgos asociados con las dependencias de código abierto. Con la creciente dependencia de las bibliotecas de código abierto, la necesidad de una gestión de dependencias sólida y automatizada nunca ha sido más crítica. Snyk Open Source proporciona capacidades integrales de escaneo y corrección de vulnerabilidades, lo que garantiza que sus proyectos permanezcan seguros y cumplan con las normas.

En mi aplicación Node.js anterior, también uso una dependencia SQLite, que Snyk me alerta sobre un problema de seguridad de la siguiente manera:

Proactive AppSec continuous vulnerability management for developers and security teams
Esta información sobre vulnerabilidades es útil para comprender qué dependencia transitiva está introduciendo el riesgo de seguridad y cómo mitigarlo, si es posible. En este caso, se detecta que la dependencia transitiva en curso tiene una vulnerabilidad media.

Snyk detecta que mi archivo de bloqueo y mi dependencia están potencialmente desactualizados y, por lo tanto, no puede encontrar una ruta de solución. Sin embargo, veamos la automatización en la práctica cuando importamos el repositorio de código de GitHub a Snyk. Al hacerlo, se muestra la siguiente información en la aplicación Snyk:

Proactive AppSec continuous vulnerability management for developers and security teams
A partir de este momento, Snyk abrirá automáticamente nuevas solicitudes de extracción para sugerir actualizaciones de dependencia cuando se detecten vulnerabilidades de seguridad en el manifiesto de mi paquete.

La gestión de dependencias no se trata solo de las bibliotecas que incluyes directamente en tu proyecto. Las dependencias transitivas (aquellas generadas por sus dependencias directas) también pueden introducir vulnerabilidades. Snyk se destaca en identificar y remediar vulnerabilidades tanto en dependencias directas como transitivas.

Considere el siguiente escenario:

{
  "dependencies": {
    "express": "^4.17.1",
    "lodash": "^4.17.20"
  }
}

En este ejemplo, express y lodash son dependencias directas. Sin embargo, express podría tener su propio conjunto de dependencias, que a su vez podrían tener sus propias dependencias. Snyk recorrerá todo este árbol de dependencias, identificando y abordando vulnerabilidades en todos los niveles.

Cuando se trata de gestionar las vulnerabilidades de los contenedores, Snyk Container ayuda a eliminar la carga de mantener las etiquetas de imágenes base actualizadas con parches de seguridad.

Snyk Container es una solución integral diseñada para ayudar a los desarrolladores y equipos de seguridad a gestionar las vulnerabilidades de los contenedores de forma eficaz. Las cargas de trabajo de aplicaciones en contenedores prevalecen en la empresa y también lo es la necesidad de proteger estos entornos. Snyk Container se integra perfectamente en su proceso de CI/CD, brindando monitoreo continuo y corrección proactiva de vulnerabilidades en las imágenes de su contenedor.

Una de las características destacadas de Snyk Container es su capacidad para automatizar la creación de solicitudes de extracción para abordar vulnerabilidades en las imágenes de su contenedor. Esta automatización cambia las reglas del juego tanto para los desarrolladores como para los equipos de seguridad, ya que reduce significativamente el esfuerzo manual necesario para mantener seguras las imágenes de los contenedores.

Aquí hay un ejemplo de cómo Snyk Container podría automatizar un PR para actualizar un paquete vulnerable en un Dockerfile:

FROM node:14.1.0
RUN npm install express
COPY . /app
CMD ["node", "/app/index.js"]

Cuando Snyk Container detecta una vulnerabilidad, genera automáticamente un PR con los cambios necesarios para mitigar el problema. Esto podría incluir actualizar un paquete vulnerable o aplicar un parche de seguridad. Al automatizar este proceso, Snyk Container garantiza que las vulnerabilidades se aborden con prontitud, lo que reduce la ventana de exposición.

Proactive AppSec continuous vulnerability management for developers and security teams
Si sigue estas imágenes base recomendadas, puede reducir significativamente la cantidad de vulnerabilidades en las imágenes de su contenedor, mejorando la seguridad general de sus aplicaciones.

Proactive AppSec continuous vulnerability management for developers and security teams
Snyk Container identificó múltiples vulnerabilidades en esta imagen base y generó automáticamente PR para actualizar la imagen y las dependencias asociadas. El equipo pudo revisar y fusionar estos RP rápidamente, reduciendo su recuento de vulnerabilidades en más de un 30 % en cuestión de segundos al fusionar la solicitud de extracción y garantizar que las pruebas de canalización de CI/CD pasen con gran éxito.

Proactive AppSec continuous vulnerability management for developers and security teams
Este enfoque proactivo no solo mejoró la postura de seguridad de sus aplicaciones, sino que también liberó un tiempo valioso para que los desarrolladores se concentraran en crear nuevas funciones en lugar de administrar vulnerabilidades.

Declaración de liberación Este artículo se reproduce en: https://dev.to/snyk/proactive-appsec-continuous-vulnerability-management-for-developers-and-security-teams-49he?1 Si hay alguna infracción, comuníquese con Study_golang@163 .com para eliminarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3