¿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.
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?
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 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.
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?
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.
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:
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:
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.
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.
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.
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.
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