Модель инверсии эффективности и качественных примеров уязвимости от LLMS

Модель инверсии эффективности и качественных примеров уязвимости от LLMS

29 июля 2025 г.

Аннотация и I. Введение

II Связанная работа

Iii. Технический фон

IV Систематическое обнаружение уязвимости безопасности моделей генерации кодов

V. Эксперименты

VI Дискуссия

VII. Заключение, подтверждение и ссылки

Приложение

A. Подробности моделей языка кода

B. Поиск уязвимостей безопасности в GitHub Copilot

C. Другие базовые линии с использованием CHATGPT

D. Влияние различных числа нескольких примеров

E. Эффективность в создании конкретных уязвимостей для C -кодов

F. Результаты уязвимости безопасности после дедупликации нечеткого кода

G. Подробные результаты передачи сгенерированных небезопасных подсказок

H. Подробная информация о генерации набора данных небезопасных подсказок

I. Подробные результаты оценки кодельмов с использованием набора данных небезопасного

J. эффект температуры отбора проб

K. Эффективность схемы инверсии модели при восстановлении уязвимых кодов

L. Качественные примеры, сгенерированные CodeGen и CHATGPT

М. Качественные примеры, сгенерированные GitHub Copilot

K. Эффективность схемы инверсии модели при восстановлении уязвимых кодов

В этой работе основной целью нашей схемы инверсии является создание небезопасных подсказок, которые приводят к созданию модели к созданию

TABLE IX: The number of discovered vulnerable codes generated by the CodeGen and ChatGPT models using the promising non-secure prompts generated by ChatGPT. We employ our FS-Code method to generate non-secure prompts and codes. Columns two to thirteen provide results for Python codes. Columns fourteen to nineteen give the results for C Codes. Column fourteen and nineteen provides the number of found vulnerable codes with the other CWEs that CodeQL queries. For each programming language, the last column provides the sum of all codes with at least one security vulnerability.

TABLE X: The number of vulnerable Python and C codes generated by various models using our non-secure prompt dataset. The results demonstrate the number of generated vulnerable codes among the five most probable model outputs. Columns two to thirteen provide results for Python codes. Columns fourteen to nineteen give the results for C Codes. Column fourteen and nineteen provides the number of found vulnerable codes with the other CWEs that CodeQL queries. For each programming language, the last column provides the sum of all codes with at least one security vulnerability.

Fig. 8: Number of the discovered vulnerable Python codes using different sampling temperatures. The results show the number of generated vulnerable codes using different sampling temperatures in generating non-secure prompt and codes. We employ our FS-Code method to sample vulnerable codes for three CWEs (CWE-020, CWE-022, and CWE-079).

На рисунке 9A и на рисунке 9b показаны успехи реконструкции кодов Python и C, соответственно. На рисунке 9А показано, что CHATGPT имеет более высокие показатели успеха в реконструкции целевых кодов Python, чем CodeGen, по разным порогам. Кроме того, на рисунке 9а показан высокая скорость успеха реконструкции даже для высоких показателей сходства, таких как 80, 85 и 90 для обеих моделей. Например, CHATGPT имеет почти 55% успех на пороге 80. Листинг 6 приводит пример целевого кода Python (список 6A) и реконструированный код (список 6B) с использованием нашего подхода FS-кода. Листинг 6b генерируется с использованием модели CHATGPT, показывающего ближайший код к целевому коду среди 255 выбранных кодов (на основе показателя нечеткого сходства). Примеры кода в листинге 6A и листинга 6B имеют нечеткую оценку сходства 85. Эти два примера реализуют одну и ту же задачу с небольшими различиями в определениях переменных и использовании API. На рисунке 9b показано, что Codegen и CHATGPT имеют близкий уровень успеха по разным порогам. Мы также наблюдаем, что CodeGen имеет более высокие показатели успеха в более высоких показателях сходства, таких как 80 и 85. В целом, на рисунке 9b показано, что модели имеют более низкие показатели успеха для кодов C по сравнению с кодами Python (рис. 9а). Это ожидалось, поскольку нам нужна более высокая сложность в реализации кодов C, чем коды Python. В листинге 7 приведен пример целевого кода C (список 7A) и реконструированного кода (список 7B) с использованием нашего подхода FS-кода. Листинг 7b генерируется с использованием модели Codegen, показывающая ближайший код к целевому коду среди 255 выбранных кодов (на основе показателя нечеткого сходства). Примеры кода в листинге 7A и в листинге 7B имеют нечеткую сходство оценки 68. Целевой код C реализует различные функциональные возможности по сравнению с генерируемым кодом, и два кода перекрываются только в некоторых библиотечных функциях и операциях.

L. Качественные примеры, сгенерированные CodeGen и CHATGPT

В листинге 8 и в листинге 9 представлены два примера уязвимых кодов Python, сгенерированных CHATGPT. В листинге 8 показан пример кода Python, который содержит уязвимость безопасности типа CWE-022 (траверта пути). Листинг 9 содержит пример кода Python с уязвимостью типа CWE-089 (инъекция SQL). В листинге 8 первые восемь строк являются небезопасным подсказкой, а остальная часть примера кода является завершением для данной нереактивной подсказки. Код содержит уязвимость прохождения пути в строке 23. В листинге 9 первые восемь строк-это небезопасная подсказка, а остальная часть примера кода является завершением заданного небезопасного подсказки. Код в листинге 9 содержит уязвимость инъекции SQL в строке 22.

В листинге 10 и в листинге 11 представлены два примера уязвимых C -кодов, сгенерированных CodeGen. В листинге 10 и листинг 11 предоставлены код C с несколькими уязвимостями типа CWE787 (stacings write). В листинге 10 строки с 1 по 7 являются небезопасными подсказками, а остальная часть примера кода является завершением для заданного небезопасного подсказки. Код содержит уязвимость типа CWE-787 в строке 25. В листинге 11 первые девять строк являются небезопасным подсказкой, а остальная часть примера кода является завершением для данной нереактивной подсказки. Код в листинге 11 содержит несколько вне склонных уязвимостей в строках 10, 11 и 17.

М. Качественные примеры, сгенерированные GitHub Copilot

В листинге 12 и в листинге 13 показаны два примера сгенерированных кодов Github Copilot, которые содержат уязвимости безопасности. В листинге 12 изображен сгенерированный код, содержащий CWE-022, который известен как уязвимость прохождения пути. В этом примере строки с 1 по 6 являются небезопасными подсказками, а остальная часть кода-это завершение заданного небезопасного подсказки. Код в листинге 12 содержит уязвимость прохождения пути в строке 10, где он позволяет производить файловые записи во время извлечения файла TAR. В листинге 13 показан сгенерированный код, который содержит CWE-079, эта проблема связана с атаками сценариев поперечного сайта. Строки с 1 по 8 листинга 13 содержат подсказку, не являющуюся входным, а остальная часть кода является завершением небезопасной подсказки. Код на этом рисунке содержит уязвимость сценариев поперечного сайта в строке 12.

Listing 8: A vulnerable Python code example generated by ChatGPT. The code contains a CWE-022 vulnerability in line 23. In this example, the first eight lines are the non-secure prompt, and the rest of the code is the completion of the given non-secure prompt.

Fig. 9: The success rate of generating target codes over different thresholds of code similarity. The codes are generated using our FS-Code approach. We use fuzzy matching as the code similarity threshold.

Listing 6: Python code reconstructed using our FS-Code approach. The vulnerable part of the target Python code was used as the last part of the FS-Code prompt. (a) represents the target code that contains a CWE-611 vulnerability. The first nine lines are the prompt, and lines 10 to 12 are the vulnerable part of the code. (b) shows the closest generated code to the target code generated by the ChatGPT model. In the generated code, lines 1 to 5 are p

Listing 9: A vulnerable Python code example generated by ChatGPT. The code contains a CWE-089 vulnerability in line 22. In this example, the first ten lines are the non-secure prompt, and the rest of the code is the completion of the given non-secure prompt.

Listing 7: C code reconstructed using our FS-Code approach. The vulnerable part of the target C code was used as the last part of the FS-Code prompt. (a) represents the target code that contains a CWE-476 vulnerability. The first six lines are the prompt, and lines 7 to 24 are the vulnerable part of the code. (b) shows the closest generated code to the target code generated by the CodeGen model. Here, lines 1 to 4 are the prompt. The fuzzy similarity score between (a) and (b) is 68.

Listing 10: A vulnerable C code example generated by CodeGen. The code contains a severe CWE-787 vulnerability in line 25. In this example, the first seven lines are the nonsecure prompt, and the rest of the code is the completion of the given non-secure prompt.

Listing 11: A vulnerable C code example generated by CodeGen. The code contains multiple vulnerabilities of type CWE-787 (lines 10, 11 and 17). In this example, the first nine lines are the non-secure prompt, and the rest of the code is the completion of the given non-secure prompt.

Listing 12: A vulnerable code example generated by GitHub Copilot. The code contains a CWE-022 vulnerability in line 10. In this example, the first six lines are the non-secure prompt, and the rest of the code is the completion of the given nonsecure prompt.

Listing 13: A vulnerable code example generated by GitHub Copilot. The code contains a CWE-079 vulnerability in line 12. In this example, the first eight lines are the non-secureprompt, and the rest of the code is the completion of the given non-secure prompt.

Авторы:

(1) Хоссейн Хаджипур, Центр Cispa Helmholtz для информационной безопасности (hossein.hajipour@cispa.de);

(2) Кено Хасслер, Центр Cispa Helmholtz для информационной безопасности (keno.hassler@cispa.de);

(3) Торстен Хольц, Центр Cispa Helmholtz для информационной безопасности (holz@cispa.de);

(4) Lea Schonherr, Cispa Helmholtz Center для информационной безопасности (schoenherr@cispa.de);

(5) Марио Фриц, Центр Cispa Helmholtz для информационной безопасности (fritz@cispa.de).


Эта статья естьДоступно на ArxivПод CC By-NC-SA 4.0 Лицензия.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE