논문 리뷰

[논문] Using LLMs for Security Advisory Investigations: How Far Are We?

aaa0843 2025. 6. 21. 22:35

Using LLMs for Security Advisory Investigations: How Far Are We?


대규모 언어 모델(LLMs)은 소프트웨어 보안 분야에서 점점 더 활용되고 있으나, 취약점 권고를 정확하게 생성하는 데 있어 신뢰성은 여전히 불확실하다.

 

목적 및 주요 질문

이 연구는 LLM이 얼마나 정확하고 신뢰성 있는 보안 권고를 생성할 수 있는지, 취약점 데이터의 불일치를 식별할 수 있는지, 가짜 CVE-ID를 탐지할 수 있는지를 조사한다. 기존 연구는 취약점 탐지 및 코드 보안 분석에서 LLM을 탐구한 바 있으나, 보안 권고 생성에서의 신뢰성에 대해서는 거의 연구되지 않았다. 이 공백을 해소하기 위해, 우리는 다음과 같은 연구 질문을 설정하였다:

  • RQ1: 주어진 CVE-ID를 기반으로 LLM이 생성한 보안 권고는 얼마나 신뢰할 수 있는가?
  • RQ2: LLM은 가짜 CVE-ID를 식별할 수 있는가?
  • RQ3: LLM은 주어진 보안 권고 설명으로부터 정확하고 일관된 CVE-ID를 생성할 수 있는가?

데이터셋 구성

 

  • 실제 CVE-ID 100개와 그에 대응하는 보안 권고는 GitHub Security Advisory(GHSA) 데이터베이스에서 수집하였으며, CVE-ID, 제목, 심각도, 영향받는 제품 등 주요 메타데이터를 포함하였다.
  • 가짜 취약점 탐지를 평가하기 위해 Python 스크립트를 이용해 가짜 CVE-ID 100개를 생성하고, 공공 취약점 데이터베이스에 존재하지 않는 것을 확인하여 활용하였다.
  • 실제 및 가짜 CVE-ID 모두 ChatGPT에 입력하여 생성된 권고를 정확성, 일관성, 신뢰성 측면에서 분석하였다.

질문과 동기

RQ1: 주어진 CVE-ID를 기반으로 LLM이 생성한 보안 권고는 얼마나 신뢰할 수 있는가?

동기: 최근 ChatGPT와 같은 LLM의 사이버보안 활용이 증가하고 있으며, 많은 개발자와 보안 실무자들이 취약점 식별 및 권고 생성에 LLM을 활용하고 있다. 그러나 AI가 생성한 권고의 정확성은 여전히 불확실하다. 사이버보안은 정확하고 신뢰할 수 있는 정보에 기반하여 의사결정을 해야 하므로, 잘못된 또는 오도된 권고는 취약점 누락 또는 잘못된 보안 판단을 야기할 수 있다.

또한 LLM은 그럴듯하지만 사실이 아닌 정보를 생성하는 ‘환각(hallucination)’ 문제를 일으킬 수 있다. 보안 권고의 경우, 이는 조작된 취약점 정보나 부정확한 대응 방안을 의미할 수 있다. 비전문가는 AI가 생성한 정보를 검증하기 어려우므로, LLM이 제공하는 권고의 신뢰도를 평가하는 것은 중요하다. 본 연구는 LLM이 보안 정보의 신뢰 가능한 출처가 될 수 있는지, 또는 보안 노력을 저해하는 위험 요소가 될 수 있는지를 파악하고자 한다.


RQ2: LLM은 가짜 CVE-ID를 식별할 수 있는가?

동기: CVE 및 GHSA와 같은 데이터베이스는 공인된 취약점 정보를 제공하지만, 개발자나 보안 실무자는 여전히 ChatGPT와 같은 AI 도구를 통해 빠르게 정보를 얻으려 한다. 그러나 LLM이 진짜와 가짜 취약점을 구별할 수 있는지는 불확실하다. LLM이 가짜 CVE-ID를 식별하지 못할 경우, 잘못된 권고를 생성하거나 혼란을 야기할 수 있다. 특히 공격자나 오도된 사용자가 AI 생성 정보를 악용해 허위 취약점을 퍼뜨리거나 실제 위협을 은폐할 수 있다는 점에서 이는 심각한 문제이다.

또한 LLM은 방대한 공개 텍스트로 훈련되었지만, 실시간 취약점 데이터베이스에 접근할 수 없다. 따라서 그럴듯하지만 완전히 잘못된 CVE-ID를 생성하거나, 잘못된 ID를 허용할 가능성이 있다. LLM이 가짜 CVE-ID를 탐지할 수 있는지를 평가함으로써, 본 연구는 LLM의 보안 도구로서의 신뢰성과 약점을 동시에 분석하고자 한다.


RQ3: LLM은 주어진 보안 권고 설명에서 정확하고 일관된 CVE-ID를 생성할 수 있는가?

동기: 보안 취약점을 분석할 때, 권고 설명과 해당 CVE-ID를 정확히 연결하는 것은 보안 추적과 대응에서 매우 중요하다. 만약 LLM이 권고 설명으로부터 정확한 CVE-ID를 생성할 수 있다면, 이는 보안 관리 프로세스를 자동화하는 데 유용한 도구가 될 수 있다. 이는 개발자, 보안팀, 조직 모두에게 위협 식별 및 대응 속도를 높이는 데 도움이 된다.

그러나 LLM이 잘못된 CVE-ID를 생성하면, 이는 잘못된 정보를 유포하고 보안 커뮤니티 내 혼란을 초래할 수 있다. 특히 새로운 취약점일 경우, 모델이 일관되게 올바른 ID를 매칭하지 못하면 AI 기반 보안 통찰의 신뢰성이 떨어진다. 따라서 본 연구는 LLM이 얼마나 정확하게 CVE-ID를 생성할 수 있는지를 평가하여, 보안 워크플로우에서의 유용성과 향후 개선 방향을 제시하고자 한다.


데이터 수집

CVE 유형 수량
실제 CVE-ID 100개
생성된 가짜 CVE-ID 100개
총계 200개

1) GHSA에서 보안 권고 정보 추출

우리는 GitHub Security Advisory(GHSA) 데이터베이스에서 전체 보안 권고 정보를 수집하고, 무작위로 실제 CVE-ID 100개를 선택하였다. 각 항목은 CVE-ID, 제목, 영향받는 제품, 심각도, CWE-ID, 게시일, 상세 설명 등을 포함하였다. 


2) 가짜 CVE-ID 생성

LLM이 보안 권고를 생성할 때의 신뢰도를 분석하기 위해, 우리는 Python 코드를 사용하여 CVE-YYYY-NNNN(N) 형식에 따라 무작위로 가짜 CVE-ID 100개를 생성하였다. 이후 NVD(National Vulnerability Database)에서 검색하여 해당 ID가 존재하지 않음을 확인한 경우에만 가짜 CVE-ID로 채택하였다.

 

프롬프트 설계 (Prompt Design)

프롬프트는 Stack Overflow나 Reddit과 같은 플랫폼에서 실제 개발자들이 ChatGPT를 사용하는 방식과 유사하게 구성되었다. 예를 들어, Reddit 토론글에서는 사용자들이 ChatGPT에 이미 알려진 CVE 정보나 ‘예약된’ CVE 세부 정보를 질의하는 실제 사례가 나타난다.

프롬프트는 그림 4(Fig. 4)와 같이 구조화된 템플릿을 사용하여 ChatGPT에 수동으로 입력되었다. 이 실험에서는 파일 업로드나 모델의 파인튜닝 없이 진행되었다. 또한, ChatGPT의 응답은 프롬프트 표현 방식에 매우 민감하게 반응하는 것으로 나타났다. 예를 들어, “영향받는 제품을 명시하라”는 구체적인 지시를 포함하면 더 구체적인 정보를 생성하였고, 이를 생략할 경우 모호하거나 일반적인 출력이 나타났다.

 

이러한 결과는 프롬프트 설계의 중요성을 보여주며, 우리는 향후 연구에서 프롬프트 설계 전략을 더욱 심층적으로 탐구할 계획이다.


수작업 분류 (Manual Classification)

이 연구의 수작업 분류는 단일 평가자가 구조화된 기준에 따라 수행하였다. 신뢰성 분류에서는, 출력된 보안 권고가 내부적으로 일관되고 그럴듯하면 ‘신뢰 가능(Reliable)’, 날짜 불일치나 비현실적인 정보 등 불일치가 있는 경우 ‘신뢰 불가(Unreliable)’로 분류하였다.

유사성 분류는 어휘적 유사성과 의미적 일관성을 기준으로, 아래와 같은 다섯 가지 등급으로 평가되었다:

  • 완전히 다름 (Totally Different)
  • 꽤 다름 (Quite Different)
  • 다소 다름 (Somewhat Different)
  • 꽤 유사함 (Quite Similar)
  • 유사함 (Similar)

 

결과 및 논의


A. RQ1: 주어진 CVE-ID를 기반으로 LLM이 생성한 보안 권고는 얼마나 신뢰할 수 있는가?

이 질문을 해결하기 위해, 우리는 ChatGPT에 특정 CVE-ID를 주고 해당 보안 권고의 상세 내용을 생성하도록 요청하였다. 프롬프트는 그림 4(Fig. 4)에 나온 구조를 사용하였으며, 실제 및 가짜 CVE-ID 모두를 입력으로 활용하였다. 이후 모든 출력 결과는 수작업으로 분석하여, 생성된 설명의 정확성과 신뢰성을 평가하였다.

표 II에서는 LLM이 생성한 보안 권고가 얼마나 신뢰할 수 있는지를 나타낸다.

 

표 II – LLM 생성 권고의 신뢰성 기준

분류 설명
신뢰 가능 (Reliable) 생성된 보안 권고가 일관성이 있으며 실제처럼 보일 경우
신뢰 불가 (Unreliable) 생성된 권고가 비논리적이거나 내부 정보가 불일치할 경우 (예: 날짜 불일치 등)
 

 

표 III은 CVE-ID 유형에 따른 ChatGPT 출력 결과의 신뢰성 비율을 보여준다.

 

표 III – 주어진 CVE-ID 기준 ChatGPT 생성 권고의 신뢰성 비율

 

CVE-ID 유형 신뢰 가능 (%) 신뢰 불가 (%)
실제 CVE-ID 96% 4%
가짜 CVE-ID 97% 3%
 

이 결과는 ChatGPT가 입력이 실제이든 가짜이든 대부분 신뢰할 수 있는 권고를 생성함을 보여준다. 다시 말해, 입력된 CVE-ID가 가짜여도 그럴듯한 설명을 매우 잘 생성하기 때문에, 사용자는 진짜처럼 믿을 가능성이 높다.

하지만 생성된 권고의 신뢰성이 CVE-ID의 정확성과 일치하는 것은 아니므로, 우리는 실제 CVE-ID 100개에 대해 생성된 설명이 원본 설명과 얼마나 유사한지를 분석하였다. 이 유사성은 아래의 다섯 등급으로 분류되었다 (표 IV 참고).

 

표 IV – 생성된 설명과 원본 설명 간의 유사성 등급

완전히 다름 (Totally Different) 전혀 관련 없음
꽤 다름 (Quite Different) 일부 관련 정보는 있으나 대부분 상이
다소 다름 (Somewhat Different) 주요 정보는 비슷하나 세부사항 다름
꽤 유사함 (Quite Similar) 거의 유사하며 일부만 다름
유사함 (Similar) 완전히 동일하거나 구조·내용이 일치함
 

그 결과는 그림 5에 나타나며 다음과 같다.

  • 95%: 완전히 다름
  • 3%: 꽤 다름
  • 2%: 다소 다름
  • 0%: 꽤 유사함 또는 유사함 없음

 

이 결과는 ChatGPT가 생성한 보안 권고가 상당히 그럴듯해 보이더라도, 실제 보안 권고와는 거의 유사하지 않으며 대부분 환각(hallucination) 정보로 채워져 있다는 것을 의미한다. 이로 인해, 사용자가 이를 신뢰할 경우 보안적으로 매우 위험한 오용이 발생할 수 있다.


B. RQ2: LLM은 가짜 CVE-ID를 식별할 수 있는가?

이 질문에서는 ChatGPT가 스스로 생성한 가짜 CVE-ID를 식별할 수 있는지를 평가하였다. 각 가짜 CVE-ID를 입력으로 넣고, 해당 ID가 유효한지 판단할 수 있는지를 관찰하였다.

 

표 V – 가짜 CVE-ID 탐지 실패율

탐지 결과 비율
탐지함 0%
탐지 실패 100%
 

ChatGPT는 모든 가짜 CVE-ID를 정상적인 ID로 인식하였고, 단 한 번도 가짜임을 식별하지 못하였다. 이는 모델이 CVE-ID의 진위를 실제 데이터베이스와 대조하거나 확인할 수 없다는 것을 의미한다.

 

이는 다음과 같은 위험을 초래한다

  • 악의적 사용자나 공격자가 가짜 CVE-ID를 퍼뜨릴 경우, LLM이 이를 여과 없이 받아들여 잘못된 정보를 생성할 수 있음
  • 개발자들이 이를 참조하여 잘못된 패치를 적용하거나 존재하지 않는 위협에 대비할 수 있음

따라서 LLM 기반 보안 분석에는 외부 검증 절차가 반드시 통합되어야 한다.


C. RQ3: LLM은 주어진 보안 권고 설명으로부터 정확하고 일관된 CVE-ID를 생성할 수 있는가?

이번에는 실제 보안 권고 100개, 이들로부터 ChatGPT가 생성한 권고 100개, 가짜 CVE-ID 기반 생성 권고 100개를 입력으로 하여, 해당 보안 설명에서 CVE-ID를 추출하도록 하였다. 프롬프트는 그림 6에 나타난 간단한 구조를 사용하였다.


표 VI – 실제 권고에서 ChatGPT가 생성한 CVE-ID의 정확도

정확한 CVE-ID 생성 (True) 94%
잘못된 CVE-ID 생성 (False) 6%
 

즉, 실제 권고를 기반으로 했을 때도 6%에서 잘못된 ID를 생성하였다.

 

표 VII – ChatGPT가 생성한 권고에서 다시 CVE-ID를 추출했을 때의 일관성

일관됨 (Consistent) 1%
일관되지 않음 (Inconsistent) 99%
 

이는 ChatGPT가 동일한 취약점 정보를 반복 입력해도 일관된 결과를 내지 못한다는 것을 의미한다.

 

표 VIII – 가짜 권고에서 생성한 CVE-ID가 실제 존재하는 ID인지 여부

실제 존재하는 CVE-ID 10%
존재하지 않는 허구 CVE-ID 90%
 

이 결과는 ChatGPT가 가짜 입력에도 불구하고 실제 존재하는 CVE-ID를 우연히 생성해낼 가능성이 있음을 보여주며, 이는 정보 오용 가능성과 위험을 함께 내포한다.

 

타당성에 대한 위협 (Threats to Validity)

1. 시간에 따른 LLM 성능 변화

이 연구는 2024년 4월부터 6월 사이에 수행되었으며, 따라서 본 논문에서 제시된 모든 결과는 해당 시점의 ChatGPT 성능을 반영한다. LLM은 지속적으로 업데이트되고 개선되므로, 향후에는 본 연구와 다른 성능을 보일 가능성이 있다. 이는 실험 결과의 재현성과 일반화 가능성에 영향을 미칠 수 있다.

 

2. 프롬프트 설계의 민감성

ChatGPT의 응답 품질은 프롬프트의 표현 방식, 구조, 명확성에 매우 민감하다. 본 연구에서 사용된 프롬프트는 구조화된 형식을 따랐으나, 약간의 표현 차이만으로도 결과가 달라질 수 있다. 향후 연구에서는 다양한 프롬프트 변형을 체계적으로 비교 분석할 필요가 있다.

 

3. 수작업 분류의 주관성

보안 권고의 유사성 분류 및 생성된 CVE-ID의 정확도 평가 과정은 모두 수작업으로 이루어졌으며, 단일 평가자의 기준에 의존하였다. 평가 기준은 일관되게 적용되었으나, 평가자의 주관에 따라 결과가 달라질 가능성이 존재한다. 다양한 평가자의 교차 검증을 통한 다중 레이블링 접근이 향후 연구에서 보완되어야 한다.


결론 (Conclusion)

본 연구는 LLM, 특히 ChatGPT의 보안 권고 생성 및 CVE 식별 능력을 평가하였다. 우리는 실제 CVE-ID 100개와 가짜 CVE-ID 100개를 활용하여, ChatGPT가 얼마나 신뢰성 있게 보안 권고를 생성하고, 가짜 ID를 탐지하며, 권고 설명으로부터 정확한 CVE-ID를 추출할 수 있는지를 분석하였다.

주요 발견

  • ChatGPT는 매우 그럴듯한 보안 권고를 생성할 수 있지만, 원본 권고와는 내용이 크게 다르며, 대부분 사실이 아닌 정보를 포함하고 있었다.
  • 가짜 CVE-ID를 전혀 식별하지 못하였으며, 모두 실제 ID처럼 응답하였다.
  • 보안 권고 설명으로부터 CVE-ID를 재추출하는 능력은 매우 낮았고, 일관성도 없었다.

이러한 결과는 LLM이 보안 관련 작업을 보조 도구로 활용할 수는 있으나, 사람의 검증 없이 단독으로 신뢰해서는 안 된다는 점을 분명히 한다. 특히 보안 권고 생성, 취약점 검증, CVE 관리와 같은 중요한 업무에는 LLM의 정보가 사실이라는 전제 하에 자동화하는 접근은 위험하다.

향후 연구는 다음과 같은 방향으로 확장될 수 있다.

  • 외부 검증 시스템을 통합하여 LLM이 생성한 정보의 진위를 보장하는 방법
  • 더 정교한 프롬프트 설계 기법을 통한 응답의 일관성과 정확도 향상
  • 보안 특화 데이터셋을 활용한 LLM의 파인튜닝 또는 도메인 적응