Presentamos CodeMender: un agente de inteligencia artificial para la seguridad del código

Si bien los grandes modelos de lenguajes están mejorando rápidamente, los errores en la seguridad del código podrían resultar costosos. El proceso de validación automática de CodeMender garantiza que los cambios de código sean correctos en muchas dimensiones al presentar solo para revisión humana parches de alta calidad que, por ejemplo, solucionan la causa raíz del problema, son funcionalmente correctos, no causan regresiones y siguen pautas de estilo.

Como parte de nuestra investigación, también desarrollamos nuevas técnicas y herramientas que permiten a CodeMender razonar sobre el código y validar los cambios de manera más efectiva. Esto incluye:

Análisis avanzado de programas: Desarrollamos herramientas basadas en análisis avanzado de programas que incluyen análisis estático, análisis dinámico, pruebas diferenciales, fuzzing y solucionadores SMT. Al utilizar estas herramientas para examinar sistemáticamente los patrones de código, controlar el flujo y el flujo de datos, CodeMender puede identificar mejor las causas fundamentales de las fallas de seguridad y las debilidades arquitectónicas. Sistemas multiagente: desarrollamos agentes con fines especiales que permiten a CodeMender abordar aspectos específicos de un problema subyacente. Por ejemplo, CodeMender utiliza una herramienta de crítica basada en modelos de lenguaje de gran tamaño que resalta las diferencias entre el código original y el modificado para verificar que los cambios propuestos no introduzcan regresiones y autocorregirlos según sea necesario.

Arreglando vulnerabilidades

Para parchear eficazmente una vulnerabilidad y evitar que vuelva a surgir, Code Mender utiliza un depurador, un explorador de código fuente y otras herramientas para identificar las causas fundamentales e idear parches. Hemos agregado dos ejemplos de vulnerabilidades de parcheo de CodeMender en el carrusel de videos a continuación.

Ejemplo #1: Identificar la causa raíz de una vulnerabilidad

Aquí hay un fragmento del razonamiento del agente sobre la causa raíz de un parche generado por CodeMender, después de analizar los resultados de la salida del depurador y una herramienta de búsqueda de código.

Aunque el parche final de este ejemplo solo cambió unas pocas líneas de código, la causa raíz de la vulnerabilidad no quedó clara de inmediato. En este caso, el informe del fallo mostró un desbordamiento del búfer del montón, pero el problema real estaba en otra parte: una gestión incorrecta de la pila de elementos del lenguaje de marcado extensible (XML) durante el análisis.

Ejemplo #2: El agente puede crear parches no triviales

En este ejemplo, el agente de CodeMender pudo crear un parche no trivial que soluciona un problema complejo de vida útil de un objeto.

El agente no sólo pudo descubrir la causa raíz de la vulnerabilidad, sino que también pudo modificar un sistema completamente personalizado para generar código C dentro del proyecto.