Home Ciencia y Tecnología Benchmarking LLM susceptibilidad a generar código susceptible a través de la inversión...

Benchmarking LLM susceptibilidad a generar código susceptible a través de la inversión del modelo de pocos disparos

40
0

Autores:

(1) Hossein Hajipour, CISPA Helmholtz Heart for Data Safety ([email protected]);

(2) Keno Hassler, CISPA Helmholtz Heart for Data Safety ([email protected]);

(3) Thorsten Holz, CISPA Helmholtz Heart for Data Safety ([email protected]);

(4) Lea Schonherr, CISPA Helmholtz Heart for Data Safety ([email protected]);

(5) Mario Fritz, CISPA Helmholtz Heart for Data Safety ([email protected]).

Resumen e I. Introducción

II. Trabajo relacionado

Iii. Antecedentes técnicos

IV. Descubrimiento de vulnerabilidad de seguridad sistemática de modelos de generación de código

V. Experimentos

VI. Discusión

Vii. Conclusión, reconocimientos y referencias

Apéndice

A. Detalles de modelos de idioma de código

B. Encontrar vulnerabilidades de seguridad en Copilot GitHub

C. Otras líneas de base que usan chatgpt

D. Efecto de diferentes ejemplos de pocos disparos

E. Efectividad en la generación de vulnerabilidades específicas para los códigos C

F. Resultados de vulnerabilidad de seguridad después de la deduplicación del código difuso

G. Resultados detallados de la transferibilidad de las indicaciones no geniales generadas

H. Detalles de la generación del conjunto de datos de indicaciones no seguras

I. Resultados detallados de la evaluación de CODELMS utilizando un conjunto de datos no seguro

J. Efecto de la temperatura de muestreo

Ok. Efectividad del esquema de inversión del modelo en la reconstrucción de los códigos vulnerables

L. Ejemplos cualitativos generados por Codegen y ChatGPT

M. Ejemplos cualitativos generados por GitHub Copilot

AbstractoLos modelos de lenguaje de granja (LLM) para la generación de código automático han logrado avances en varias tareas de programación. Sus avances en los problemas de programación a nivel de competencia los han convertido en un pilar esencial de la programación de pares de parejas asistidas por AI-AI, y las herramientas como GitHub Copilot han surgido como parte del flujo de trabajo de programación diario utilizado por millones de desarrolladores. Los datos de capacitación para estos modelos generalmente se recopilan de Web (por ejemplo, de repositorios de código abierto) y es possible que contengan fallas y vulnerabilidades de seguridad. Estos datos de capacitación insanitados pueden hacer que los modelos de idioma aprendan estas vulnerabilidades y los propagan durante el procedimiento de generación de código. Si bien estos modelos se han evaluado ampliamente por su capacidad para producir programas funcionalmente correctos, sigue habiendo una falta de investigaciones y puntos de referencia integrales que aborden los aspectos de seguridad de estos modelos.

En este trabajo, proponemos un método para estudiar sistemáticamente los problemas de seguridad de los modelos de lenguaje de código para evaluar su susceptibilidad a generar código susceptible. Con este fin, presentamos el primer enfoque para encontrar automáticamente el código generado que contiene vulnerabilidades en los modelos de generación de código de caja negra. Para lograr esto, presentamos un enfoque para la inversión aproximada de los modelos de generación de códigos de caja negra basados en pocas solicitudes de disparo. Evaluamos la efectividad de nuestro enfoque examinando los modelos de lenguaje de código en la generación de debilidades de seguridad de alto riesgo. Además, establecemos una colección de diversos indicaciones no seguras para varios escenarios de vulnerabilidad utilizando nuestro método. Este conjunto de datos forma un punto de referencia para evaluar y comparar las debilidades de seguridad en los modelos de lenguaje de código.

I. Introducción

Los modelos de idiomas grandes representan un avance importante en los desarrollos actuales de aprendizaje profundo. Con el aumento del tamaño, su capacidad de aprendizaje les permite aplicar a una amplia gama de tareas, como la traducción del texto. [1], [2] y resumen [3], [2]chatbots como chatgpt [4]y también para tareas de generación de código y comprensión de código [5], [6], [7], [8]. Un ejemplo destacado es el copiloto de Github [9]un programador de pares de IA basado en OpenAI Codex [5], [10] que ya es utilizado por más de un millón de desarrolladores [11]. Chatgpt [4]Codex [5] y modelos abiertos como Code Llama [12]Codegen [6] e incodificador [7] están entrenados en un corpus a gran escala de datos de lenguaje pure y datos de código y permiten una generación de código potente y sin esfuerzo. Dado un mensaje de texto que describe una función deseada y un encabezado de función (primeras líneas del código deseado), estos modelos generan un código adecuado en varios lenguajes de programación y completan automáticamente el código basado en el usuario proporcionado

Descripción del contexto. Estos modelos pueden aumentar drásticamente la productividad del desarrollador de software program. Como ejemplo, según GitHub, los desarrolladores que usan GitHub Copilot implementan los programas deseados 55% más rápido [11]y casi el 40 % del código escrito por programadores que usan copilotes es generado por el modelo [9].

Al igual que cualquier otro modelo de aprendizaje profundo, los modelos de idiomas grandes como ChatGPT, Codex, Code Llama y Codegen exhiben un comportamiento indeseable en algunos casos de borde debido a las propiedades inherentes del modelo en sí y la cantidad masiva de datos de capacitación insanitados [13], [14]. De hecho, estos modelos están entrenados en un código fuente no modificado alojado en GitHub. Si bien el modelo está capacitado, también aprende los estilos de codificación de los datos de capacitación y, incluso más crítico, bugs que pueden conducir a vulnerabilidades relacionadas con la seguridad [15], [16]. Pearce et al. [15] han demostrado que los cambios menores en el mensaje del texto (es decir, las entradas del modelo) pueden conducir a fallas de software program que pueden causar un daño potencial si el código generado se usa inalterado. Los autores usan indicaciones modificadas manualmente y no proporcionan una forma de encontrar las vulnerabilidades de los modelos de generación de código automáticamente.

En este trabajo, proponemos un enfoque automatizado para probar el potencial de los modelos de código en la generación de códigos vulnerables y para comparar la seguridad de código generada por un modelo. Para ARXIV: 2302.04012V2 [cs.CR] 23 de octubre de 2023 Esto, proponemos un enfoque automatizado para encontrar indicaciones que desencadenan sistemáticamente la generación de códigos que contienen una vulnerabilidad específica y permiten examinar el comportamiento de los modelos a gran escala que se puede extender fácilmente al nuevo tipo de vulnerabilidades. Más específicamente, formulamos el problema de encontrar un conjunto de indicaciones que hacen que los modelos potencialmente generen códigos vulnerables como una tarea de inversión. Nuestro objetivo es tener una aproximación del inverso del modelo objetivo, que puede generar indicaciones que pueden llevar al modelo objetivo a generar código con una vulnerabilidad específica. Sin embargo, no está claro cómo se puede acceder al inverso en la configuración de caja negra. Para resolver este problema, proponemos un enfoque para formular la inversión utilizando el modelo mismo y la solicitud de pocos disparos (ejemplos en contexto) [1]que recientemente ha mostrado una sorprendente capacidad para generalizar a nuevas tareas. Un mensaje de pocos disparos contiene algunos ejemplos (entrada y salida esperada) de una tarea específica para enseñar un modelo previamente capacitado para generar la salida deseada. En este trabajo, utilizamos pocos disparos de disparo para guiar el modelo de caja negra objetivo para actuar como una aproximación de su propio inverso. Específicamente, dirigimos al modelo a generar indicaciones que generarán código que contenga una vulnerabilidad específica al proporcionar algunos ejemplos de códigos vulnerables y sus indicaciones correspondientes.

Utilizamos esta aproximación para generar indicaciones que potencialmente llevan a los modelos a generar códigos con vulnerabilidades específicas y revelan sus problemas de vulnerabilidad de seguridad. Figura 1 Descripción basic de nuestro enfoque de inversión de modelo de caja negra. En nuestros experimentos, mostramos que estas indicaciones generadas son transferibles en diferentes modelos y, en contraste con el trabajo anterior, nuestras indicaciones se pueden generar automáticamente para las vulnerabilidades específicas. Aprovechando esta evidencia, empleamos nuestro enfoque para generar un conjunto de indicaciones no seguras utilizando modelos de código de última generación. Estas indicaciones forman un punto de referencia para evaluar y comparar diferentes modelos en la generación de códigos con debilidades de seguridad.

En resumen, hacemos las siguientes contribuciones clave en este documento:

  1. Proponemos un enfoque para probar el potencial de un modelo para generar código susceptible. Logramos esto al aproximar una inversión del modelo de caja negra objetivo a través de pocas solicitudes de disparo.

  2. Nuestro enfoque encontró un conjunto diverso de indicaciones no seguras, lo que lleva a los modelos de generación de código de última generación para generar más de 2K Python y C códigos con vulnerabilidades específicas.

  3. Proponemos un conjunto de datos de diversos indicaciones no seguras para evaluar y comparar la susceptibilidad de los modelos de código en la generación de códigos vulnerables. Estas indicaciones se generaron automáticamente aplicando nuestro enfoque para evaluar los problemas de seguridad en los modelos de última generación.

  4. Con la publicación de este trabajo, lanzaremos nuestro enfoque y generaremos un conjunto de datos como una herramienta de código abierto que se puede utilizar para comparar la seguridad de los modelos de generación de código de caja negra. Esta herramienta se puede extender fácilmente a las vulnerabilidades de seguridad potenciales recientemente descubiertas.

fuente

LEAVE A REPLY

Please enter your comment!
Please enter your name here