Descubriendo Vulnerabilidades a través de la IA Generativa

Vulnerability Discovery through Generative AI

La exploración de código para la detección de vulnerabilidades relacionadas con la exposición de parámetros de seguridad es una práctica crucial en el desarrollo de API de MuleSoft.

La exploración de código implica el análisis sistemático del código fuente de MuleSoft para identificar vulnerabilidades. Estas vulnerabilidades pueden variar desde parámetros seguros codificados en duro, como contraseñas o accessKey, hasta la exposición de contraseñas o accessKey en formato de texto sin formato en archivos de propiedades. Estas vulnerabilidades podrían ser explotadas por actores maliciosos para comprometer la confidencialidad, integridad o disponibilidad de las aplicaciones.

Falta de Detección Automática de Vulnerabilidades

MuleSoft Anypoint Studio o la plataforma Anypoint no proporcionan una función para mantener el control sobre las vulnerabilidades mencionadas anteriormente. Esto puede ser gestionado mediante el gobierno en tiempo de diseño, donde se requerirá una revisión manual del código. Sin embargo, existen muchas herramientas disponibles que se pueden utilizar para escanear el código implementado o el repositorio de código para encontrar dichas vulnerabilidades. Incluso se puede escribir código personalizado o scripts en cualquier lenguaje para realizar la misma tarea. La escritura de código personalizado agrega otra capa de complejidad y gestión.

Uso de IA Generativa para Revisar el Código y Detectar Vulnerabilidades

En este artículo, voy a presentar cómo se puede aprovechar la IA Generativa para detectar dichas vulnerabilidades. He utilizado el modelo de la fundación Open AI “gpt-3.5-turbo” para demostrar la función de escaneo de código para encontrar las vulnerabilidades mencionadas anteriormente. Sin embargo, se puede utilizar cualquier modelo de fundación para implementar este caso de uso.

Esto se puede implementar utilizando código Python o cualquier otro código en otro lenguaje. Este código Python se puede utilizar de las siguientes maneras:

  • El código Python se puede ejecutar manualmente para escanear el repositorio de código.
  • Se puede integrar en el pipeline de compilación CICD, que puede escanear y reportar las vulnerabilidades y resultar en un fallo de compilación si se encuentran vulnerabilidades.
  • Se puede integrar en cualquier otro programa, como la función Lambda, que se puede ejecutar periódicamente y ejecutar el código Python para escanear el repositorio de código y reportar las vulnerabilidades.

Arquitectura de Alto Nivel

Arquitectura                                                                                               

  1. Existen muchas formas de ejecutar el código Python. Una forma más apropiada y práctica es integrar el código Python en el pipeline de compilación CICD. El pipeline de compilación CICD ejecuta el código Python.
  2. El código Python lee los archivos XML de código de MuleSoft y los archivos de propiedades.
  3. El código Python envía el contenido del código de MuleSoft y solicita el modelo gpt-3.5-turbo de OpenAI.
  4. El modelo de OpenAI devuelve los valores codificados en duro y no encriptados.
  5. El código Python genera el informe de las vulnerabilidades encontradas.

Detalles de Implementación

La estructura del proyecto de API de MuleSoft contiene dos secciones principales donde los parámetros sensibles a la seguridad pueden ser expuestos en texto plano. La carpeta src/main/mule contiene todos los archivos XML, que contienen el flujo de proceso, los detalles de conexión y el manejo de excepciones. El proyecto de API de MuleSoft puede tener también código Java personalizado. Sin embargo, en este artículo no se ha considerado el código Java personalizado utilizado en la API de MuleSoft.

La carpeta src/main/resources contiene archivos de propiedades del entorno. Estos archivos pueden ser archivos .properties o .yaml para desarrollo, calidad y producción. Estos archivos contienen valores clave de propiedades, como usuario, contraseña, host, puerto, accessKey y secretAccessKey en formato encriptado.

Basándonos en la estructura del proyecto de MuleSoft, la implementación se puede lograr en dos pasos:

Escaneo de Archivos XML de MuleSoft

El código real se define como flujo de proceso en MuleSoft Anypoint Studio. Podemos escribir código Python para usar el modelo de la fundación Open AI y escribir una solicitud que pueda escanear los archivos XML de MuleSoft que contienen la implementación del código para encontrar valores de parámetros codificados en duro. Por ejemplo:

  • Archivo Global.xml/Config.xml: Este archivo contiene todas las configuraciones del conector. Esta es la recomendación estándar de MuleSoft. Sin embargo, puede variar dependiendo de los estándares y directrices definidos en su organización. Un modelo de fundación de IA generativa puede utilizar este contenido para encontrar valores codificados en duro.
  • Otros archivos XML: Estos archivos pueden contener algún código personalizado o flujo de proceso que llama a otras llamadas de API, llamadas a bases de datos u otras llamadas del sistema. Esto puede tener credenciales de conexión codificadas en duro por error. Un modelo de fundación de IA generativa puede utilizar este contenido para encontrar valores codificados en duro.

He proporcionado la captura de pantalla de un código de muestra de API de MuleSoft. Este código tiene tres archivos XML; uno es api.xml, que contiene el flujo de la API Rest. Process.xml tiene un flujo asincrónico basado en JMS. Global.xml tiene todas las configuraciones de conexión.

api.xml

process.xml

global.xml

Con fines de demostración, he utilizado un archivo global.xml. El fragmento de código tiene muchos valores codificados en duro para la demostración. Los valores codificados en duro están resaltados en recuadros rojos:

Código de Python

El código de Python a continuación utiliza el modelo de la fundación Open AI para escanear los archivos XML anteriores y encontrar los valores codificados en duro.

Una vez que se ejecuta este código, obtenemos el siguiente resultado:

El resultado del modelo de IA generativa

De manera similar, podemos proporcionar api.xml y process.xml para escanear los valores codificados en duro. Incluso puede modificar el código de Python para leer todos los archivos XML de manera iterativa y obtener el resultado en secuencia para todos los archivos.

Escaneo de los archivos de propiedad

Podemos usar el código de Python para enviar otra indicación al modelo de IA, que puede encontrar las contraseñas de texto sin formato guardadas en los archivos de propiedad. En la siguiente captura de pantalla, el archivo dev-secure.yaml tiene client_secret como el valor encriptado, y db.password y jms.password se guardan como texto sin formato.

archivo de configuración

Código de Python

El código de Python a continuación utiliza el modelo de la fundación Open AI para escanear archivos de configuración y encontrar los valores codificados en duro.

Una vez que se ejecuta este código, obtenemos el siguiente resultado:

resultado de la IA generativa

Impacto de la IA generativa en el ciclo de vida del desarrollo

Vemos un impacto significativo en el ciclo de vida del desarrollo. Podemos pensar en aprovechar la IA generativa para diferentes casos de uso relacionados con el ciclo de vida del desarrollo.

Análisis eficiente y completo

Los modelos de IA generativa como GPT-3.5 tienen la capacidad de comprender y generar texto similar al humano. Cuando se aplican a la revisión de código, pueden analizar fragmentos de código, proporcionar sugerencias para mejoras e incluso identificar patrones que podrían llevar a errores o vulnerabilidades. Esta tecnología permite un examen completo del código en un período de tiempo relativamente corto.

Identificación automática de problemas

La IA generativa puede ayudar a detectar problemas potenciales como errores de sintaxis, fallas lógicas y vulnerabilidades de seguridad. Al automatizar estos aspectos de la revisión de código, los desarrolladores pueden dedicar más tiempo a decisiones de diseño de alto nivel y resolución creativa de problemas.

Adherencia a las mejores prácticas

A través del análisis de patrones y contexto de codificación, la IA generativa puede ofrecer información sobre el cumplimiento de estándares de codificación y mejores prácticas.

Aprendizaje y mejora

Los modelos de IA generativa pueden “aprender” de vastas cantidades de ejemplos de código y prácticas de la industria. Este conocimiento les permite proporcionar recomendaciones contextualmente relevantes a los desarrolladores. Como resultado, tanto los desarrolladores como el sistema de IA se benefician de un ciclo de aprendizaje continuo, mejorando su comprensión de las convenciones de codificación y las tendencias emergentes.

Conclusión

En conclusión, llevar a cabo una revisión de código para encontrar parámetros sensibles a la seguridad expuestos como texto sin formato utilizando la tecnología de OpenAI ha demostrado ser un proceso valioso y eficiente. Aprovechar OpenAI para la revisión de código no solo aceleró el proceso de revisión, sino que también contribuyó a producir un código más robusto y fácil de mantener. Sin embargo, es importante tener en cuenta que si bien la IA puede ayudar en el proceso de revisión, la supervisión y experiencia humana siguen siendo cruciales para tomar decisiones informadas y comprender completamente el contexto del código.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Noticias de Inteligencia Artificial

La tecnología tiene como objetivo prevenir caídas en los ancianos.

El proyecto Move More Live More en Irlanda del Norte tiene como objetivo prevenir caídas en personas mayores al prede...

Inteligencia Artificial

California acaba de abrir las compuertas para los coches autónomos

Después de una decisión de la junta reguladora estatal, San Francisco tendrá robotaxis las 24 horas del día, los 7 dí...

Inteligencia Artificial

Tesla retira 2 millones de autos con controles de seguridad de 'autoguiado' insuficientes

Tesla está retirando más de 2 millones de vehículos para solucionar los sistemas de Autopilot que los reguladores gub...

Inteligencia Artificial

Google presenta Project IDX un paraíso para desarrolladores basado en navegador impulsado por IA.

Rompiendo barreras y empujando los límites de la innovación en IA, Google ha presentado su último proyecto, Project I...