[논문 리뷰] LLMSecEval: A Dataset of Natural Language Prompts for Security Evaluations
LLMSecEval는 MITRE의 상위 25개 CWE에 속하는 취약점에 취약한 보안 핵심 코드 시나리오를 설명하는 자연어 프롬프트 150개와 이를 동반하는 보안 코드 예시로 구성된 데이터셋을 제공한다. 이 데이터셋을 통해 CodeQL를 통한 자동 분석을 통해 LLM이 생성한 코드의 보안 결함을 체계적으로 평가할 수 있으며, 자연어 설명을 받더라도 LLM이 여전히 취약한 코드를 생성할 수 있음을 입증한다.
Large Language Models (LLMs) like Codex are powerful tools for performing code completion and code generation tasks as they are trained on billions of lines of code from publicly available sources. Moreover, these models are capable of generating code snippets from Natural Language (NL) descriptions by learning languages and programming practices from public GitHub repositories. Although LLMs promise an effortless NL-driven deployment of software applications, the security of the code they generate has not been extensively investigated nor documented. In this work, we present LLMSecEval, a dataset containing 150 NL prompts that can be leveraged for assessing the security performance of such models. Such prompts are NL descriptions of code snippets prone to various security vulnerabilities listed in MITRE's Top 25 Common Weakness Enumeration (CWE) ranking. Each prompt in our dataset comes with a secure implementation example to facilitate comparative evaluations against code produced by LLMs. As a practical application, we show how LLMSecEval can be used for evaluating the security of snippets automatically generated from NL descriptions.
연구 동기 및 목표
- 대규모 언어 모델(Large Language Models, LLMs)의 코드 생성 보안을 평가하기 위한 표준화된 자연어 프롬프트의 부족을 해결하기 위함.
- MITRE의 상위 25개 CWE에서 유래한 알려진 보안 취약점과 자연어 설명을 매핑하는 벤치마크 데이터셋을 제공하기 위함.
- 각 프롬프트에 대한 보안 기반 구현 예시를 포함하여 LLM의 보안 출력을 비교 평가할 수 있도록 하기 위함.
- 보안 코드 생성을 위한 프롬프트 엔지니어링 및 LLM 생성 코드의 자동 취약점 탐지 연구를 지원하기 위함.
- CodeQL를 활용해 LLM 생성 코드 내의 CWE 관련 취약점을 탐지하는 것이 가능함을 입증하기 위함.
제안 방법
- 기존의 CWE 관련 코드 스니펫에서 Codex를 활용해 자연어 설명을 생성함으로써 실제 보안 취약점과의 일치를 확보함.
- MITRE의 2021년 상위 25개 CWE 목록을 기반으로 하여 25개 중 18개의 가장 심각한 취약점에 집중함.
- 언어의 유창성, 표현력, 정보의 충분성, 간결성 등 언어적 및 내용 기반 메트릭을 사용해 수동으로 프롬프트를 검토 및 보완함.
- 각 프롬프트에 대해 보안 기반 참조 구현 예시를 제공하여 LLM 생성 코드와의 직접 비교를 가능하게 함.
- OpenAI의 GPT-3와 Codex API를 활용해 프롬프트에서 코드를 생성한 후, 18개의 CWE를 대상으로 하는 CodeQL 쿼리를 사용해 자동으로 취약점을 탐지함.
- 프롬프트 입력, LLM 코드 생성, CodeQL를 통한 정적 분석을 통합한 평가 파이프라인을 구축하여 생성된 코드의 보안 결함을 식별함.

실험 결과
연구 질문
- RQ1보안 기능을 설명하는 자연어 프롬프트가 LLM이 알려진 취약점이 있는 코드를 생성하도록 신뢰성 있게 유도할 수 있는가?
- RQ2GPT-3 및 Codex와 같은 LLM이 CWE 취약점이 발생할 수 있는 시나리오를 자연어로 설명받을 때 얼마나 많은 보안 코드를 생성하는가?
- RQ3정제된 프롬프트 데이터셋과 함께 사용할 경우 CodeQL가 LLM 생성 코드 내의 CWE 관련 취약점을 탐지하는 데 얼마나 효과적인가?
- RQ4언어에 종속되지 않는 프롬프트 기반 벤치마크가 LLM 코드 생성의 보안 평가 재현성과 표준화를 향상시킬 수 있는가?
- RQ5자연어 유창성과 프롬프트의 명확성이 LLM 생성 코드의 보안 결과에 어떤 영향을 미치는가?
주요 결과
- LLMSecEval의 모든 150개 프롬프트가 자연어 수준에서 4점 이상의 점수를 기록하여 영어 유창성이 높음을 확인함. 대부분의 프롬프트가 표현력 측면에서도 4점 이상을 기록함.
- 150개 중 138개의 프롬프트가 내용 충분성 점수 3점 이상을 확보하여 대부분의 프롬프트가 보안 코드 생성에 필요한 충분하고 관련 있는 정보를 포함하고 있음을 확인함.
- 150개 중 135개의 프롬프트가 간결성 측면에서 3점 이상의 점수를 기록하여 대부분의 프롬프트가 불필요한 배경 정보를 포함하지 않음을 확인함.
- LLMSecEval 기반으로 구축한 애플리케이션은 GPT-3 및 Codex가 생성한 코드에서 상위 25개 CWE 중 18개를 성공적으로 CodeQL로 탐지함으로써, 이 데이터셋이 자동 보안 평가에 실용적임을 입증함.
- 이 데이터셋을 통해 LLM 생성 코드와 보안 기반 참조 구현 예시 간 직접 비교가 가능해지며, 자연어 설명을 받더라도 LLM이 종종 취약한 코드를 생성함을 드러냄.
- 연구 결과에 따르면, 공개 코드베이스로 훈련된 LLM은 훈련 데이터에 존재하는 보안 결함을 유추하고 이를 전파할 수 있으며, 특히 모호하거나 불완전한 설명을 받을 경우 더욱 심각한 영향을 받을 수 있음.
![Figure 2: An example of NL prompt generated from a Python code snippet covering CWE-20 scenario in the Pearce et al. [ 12 ] dataset.](https://ar5iv.labs.arxiv.org/html/2303.09384/assets/Figures/translation.png)
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.