RealVuln: Benchmarking Rule-Based, General-Purpose LLM, and Security-Specialized Scanners on Real-World Code
이 논문은 26 개의 실제 취약점 Python 저장소를 기반으로 규칙 기반 SAST, 범용 LLM, 보안 특화 스캐너 등 15 가지 도구를 비교한 'RealVuln' 벤치마크를 소개하며, 보안 특화 도구가 범용 LLM 과 규칙 기반 도구를 압도하는 3 단계 성능 계층 구조를 확인했다고 요약할 수 있습니다.
이 논문은 **"실제 해킹이 일어나는 현장 (실제 코드) 에서, 누가 가장 잘 범인을 잡을 수 있을까?"**를 테스트한 실험 결과입니다.
마치 치안 유지를 위해 세 가지 다른 종류의 **'수사관'**을 불러와서, 실제 범죄가 발생한 26 개의 가짜 마을 (교육용 취약한 프로그램) 에서 범인을 얼마나 잘 찾아내는지, 그리고 엉뚱한 사람을 잡지 않았는지 비교한 이야기라고 생각하시면 됩니다.
이 실험의 주인공들은 다음과 같습니다.
1. 세 가지 수사관 (스캐너) 종류
규칙 기반 수사관 (Rule-Based SAST):
비유: "범인은 항상 검은 모자를 쓴다"라는 매뉴얼만 믿는 형사입니다.
특징: 미리 정해진 패턴 (예: "SQL 인젝션은 이런 문법으로 쓴다") 과 딱딱 맞아떨어지는 경우만 잡습니다. 하지만 범인이 모자를 안 쓰고 다른 옷을 입으면 놓쳐버립니다.
결과: 범인을 잡는 능력 (재현율) 이 매우 낮았습니다.
일반적인 AI 수사관 (General-Purpose LLM):
비유:만능 지능형 형사입니다. 범인 잡는 법은 배우지 않았지만, 언어를 이해하고 추론하는 능력이 탁월합니다.
특징: "이 문맥을 보면 수상해"라고 생각하며 범인을 찾아냅니다. 규칙만 따르는 형사보다는 훨씬 똑똑하지만, 보안 전문가로 훈련받은 건 아니라 가끔 헷갈리기도 합니다.
결과: 규칙 기반 형사보다는 훨씬 잘 잡았지만, 전문 수사관보다는 조금 부족했습니다.
보안 전문 수사관 (Security-Specialized Scanner):
비유:오직 범인 잡는 일만 위해 태어난 특수부대입니다.
특징: 범인의 심리, 범죄 수법, 숨은 흔적을 찾아내는 데 특화된 훈련을 받았습니다.
결과:압도적인 1 위를 차지했습니다.
2. 실험 결과: 누가 이겼나?
이 실험에서는 **"범인을 놓치는 것 (실수)"**이 **"무고한 사람을 잡는 것 (오보)"**보다 훨씬 치명적이라고 가정했습니다. (한 명의 범인을 놓치면 마을이 파괴될 수 있으니까요.)
🏆 1 위: 보안 전문 수사관 (Kolega.Dev)
성적: 73 점 (만점 100 점 기준).
특징: 범인을 80% 이상 찾아냈습니다. 물론 엉뚱한 사람도 잡는 경우가 좀 있었지만 (정밀도는 낮음), 중요한 건 범인을 놓치지 않았다는 점입니다.
비유: "범인일 가능성이 있는 사람 10 명을 잡아서 조사하면, 그중 4 명은 범인이지만 나머지 6 명은 무고할 수도 있어. 하지만 진짜 범인은 절대 놓치지 않아!"
🥈 2 위: 만능 AI 형사 (Claude Sonnet 등)
성적: 51 점.
특징: 범인을 50% 정도만 잡았습니다. 엉뚱한 사람을 잡는 일은 적었지만, 진짜 범인을 놓치는 경우가 많았습니다.
비유: "수사관이 똑똑해서 무고한 사람을 잘 안 잡지만, 범인이 위장술을 쓰면 놓쳐버려."
🥉 3 위: 규칙 기반 형사 (Semgrep 등)
성적: 17 점.
특징: 범인을 20% 미만만 잡았습니다.
비유: "매뉴얼에 없는 범인은 아예 못 봄. 범인이 조금만 변장해도 놓쳐버림."
3. 핵심 교훈 (이 논문이 말하고자 하는 것)
"똑똑한 AI"만으로는 부족합니다: 범인을 잡는 일은 단순히 "지식"이 많은 것만으로는 해결되지 않습니다. 보안이라는 특수한 목적에 맞춰 설계된 시스템이 있어야 합니다. 일반적인 AI 는 범인 잡는 데는 '아마추어'일 뿐입니다.
놓치는 것보다 잡는 게 중요합니다: 보안에서는 "무고한 사람을 잡아서 조사하는 수고"보다 "진짜 범인을 놓쳐서 해를 입는 것"이 훨씬 큰 문제입니다. 그래서 **범인을 놓치지 않는 능력 (재현율)**을 가장 중요하게 평가했습니다.
비용 효율성: 전문 수사관 (Kolega.Dev) 이 가장 비싼 만능 AI 보다 더 싸고 더 잘 잡았습니다. (비용 대비 성능이 가장 뛰어났습니다.)
4. 결론
이 실험은 **"보안 문제를 해결하려면, 범인 잡는 데 특화된 전문 도구 (Security-Specialized) 를 써야 한다"**는 것을 증명했습니다.
지금까지 많은 기업들이 "범인 잡는 법을 알려줘"라고 일반적인 AI 에게 물어보며 시간을 보냈지만, 이 연구는 **"범인 잡는 법을 배운 특수부대 (전문 도구) 를 써야 진짜 안전하다"**고 말합니다.
이 실험 결과와 데이터는 모두 공개되어 있어, 누구나 다시 검증하거나 새로운 수사관 (스캐너) 을 시험해 볼 수 있습니다. 마치 치안 유지 시스템을 계속 발전시키기 위해 모든 자료를 공개한 것과 같습니다.
1. 문제 제기 (Problem Statement)
현실적 SAST 도구의 한계: 기존 정적 애플리케이션 보안 테스트 (SAST) 도구는 높은 오탐 (False Positive) 비율로 인해 실무에서 신뢰를 잃고 있습니다. 예를 들어, Ghost Security 보고서에 따르면 Python/Flask 애플리케이션의 명령어 주입 (Command Injection) 발견 건 중 99.5% 가 오탐이었습니다.
기존 벤치마크의 부재:
합성 코드 (Synthetic Code): OWASP Benchmark 등 기존 벤치마크는 실제 애플리케이션의 복잡성과 구조를 반영하지 않는 인공적인 Java 스니펫을 사용하여 실제 성능을 평가하기 어렵습니다.
데이터 비공개 및 편향: 일부 벤치마크는 데이터가 공개되지 않았거나, 벤더가 자체 도구를 평가하는 '자기 평가' 형태라 객관성이 떨어집니다.
오탐 측정 부재: 대부분의 벤치마크는 탐지율 (Recall) 만을 보고하며, 실무에서 가장 큰 부담인 오탐 (False Positive) 을 체계적으로 측정하지 않습니다.
LLM 기반 스캐너의 검증 필요성: 새로운 LLM 기반 보안 스캐너가 등장하고 있지만, 이것이 실제 코드에서 의미 있는 성능 향상을 제공하는지, 아니면 단순히 다른 형태의 실패를 초래하는지에 대한 공정한 비교 기준이 없습니다.
2. 방법론 (Methodology)
이 논문은 RealVuln이라는 최초의 오픈소스 벤치마크를 제안하여 세 가지 범주의 스캐너를 동일한 실전 코드에서 비교 평가했습니다.
데이터셋 구성 (RealVuln v1.0):
소스: GitHub 의 26 개 의도적으로 취약한 Python 저장소 (PyGoat, DVPWA, VAmPI 등 교육용 및 CTF 애플리케이션) 를 사용했습니다.
라벨링: 796 개의 수동 라벨링된 항목 (676 개의 실제 취약점 + 120 개의 오탐 함정/FP Traps) 을 포함합니다. '오탐 함정'은 겉보기엔 위험해 보이지만 실제로는 안전한 코드로, 스캐너의 정밀도를 테스트합니다.
표적 유형: 현재는 의도적으로 취약한 앱 (Type 1) 만 포함하며, 향후 실제 CVE 가 포함된 프로덕션 코드 (Type 2~5) 로 확장 예정입니다.
General-Purpose LLM (10 개): Claude Sonnet/Opus/Haiku, Gemini, Grok, Kimi, GLM 등 7 개 모델 계열. 모든 모델은 동일한 프롬프트와 에이전트 모드 (파일 읽기, grep 검색 등 도구 사용) 로 평가되었습니다.
Security-Specialized (2 개): Kolega.Dev (저자 개발, 취약점 탐지 전용 아키텍처), GitHub SecLab Taskflow Agent (다단계 위협 모델링 에이전트).
평가 지표:
주요 지표: F3 Score (β=3). 정밀도 (Precision) 대비 재현율 (Recall) 을 9 배 더 가중치하여 계산합니다. 보안 분야에서는 '놓친 취약점'의 비용이 '오탐'의 비용보다 훨씬 크므로, 재현율을 중시하는 이 지표를 채택했습니다.
보조 지표: F1, F2 점수 및 비용 효율성 ($/100k LOC) 도 함께 보고합니다.
매칭 알고리즘: 스캐너 결과와 Ground Truth 를 파일 경로, CWE 분류, 라인 번호 (±10 라인 오차 허용) 를 기준으로 매칭하며, 오탐 함정은 True Negative 로 처리합니다.
3. 주요 기여 (Key Contributions)
체계적인 비교 평가: 규칙 기반 SAST, 범용 LLM, 보안 특화 스캐너 등 3 가지 범주의 15 개 도구를 동일한 실전 코드에서 처음 비교했습니다.
오픈소스 벤치마크 프레임워크: Ground Truth 데이터, 스캐너 출력 결과, 평가 스크립트, 대시보드 등 모든 아티팩트를 오픈소스로 공개하여 재현성을 보장합니다.
살아있는 벤치마크 (Living Benchmark): 버전 관리가 가능하며, 커뮤니티가 새로운 저장소, 스캐너, 라벨을 추가할 수 있는 확장성을 제공합니다.
편향 완화: 저자가 개발한 Kolega.Dev 를 포함하고 있지만, 모든 데이터와 평가 코드를 공개하여 독립적인 검증과 제 3 자 감사를 장려합니다.
4. 주요 결과 (Key Results)
평가 결과, 모든 지표에서 명확한 3 단계 계층 구조 (Three-tier hierarchy) 가 나타났습니다.
1 단계: 보안 특화 스캐너 (Security-Specialized)
Kolega.Dev가 F3 점수 73.0으로 1 위를 차지했습니다. 재현율 (Recall) 이 80.9% 로 가장 높았으며, 이는 실제 취약점의 80% 이상을 찾아냈음을 의미합니다.
반면, GitHub SecLab Taskflow Agent 는 F3 점수 8.4 로 하위권에 머물렀습니다. 이는 '보안 특화 아키텍처' 자체보다는 광범위한 탐지 범위 (Breadth) 가 성능을 결정하는 핵심 요소임을 시사합니다.
2 단계: 범용 LLM 스캐너 (General-Purpose LLM)
Claude Sonnet 4.6이 F3 점수 51.7로 2 위를 차지했습니다. 규칙 기반 도구보다 약 3 배 높은 성능을 보였으며, 정밀도 (0.785) 와 재현율 (0.498) 의 균형을 잘 맞췄습니다.
일부 최상위 모델 (Opus 4.6 등) 은 처리 시간 제한으로 인해 일부 저장소에서 실패하여 전체 점수가 낮아지는 경향을 보였습니다.
3 단계: 규칙 기반 SAST (Rule-Based SAST)
Semgrep이 F3 점수 17.7로 최상위 규칙 기반 도구였으나, LLM 기반 도구들에 비해 성능이 현저히 낮았습니다. SonarQube 는 7.1 점으로 매우 낮은 재현율 (6.5%) 을 보였습니다.
비용 효율성:
Kolega.Dev 는 100k LOC 당 $25 로 가장 높은 성능을 보여주며, 범용 LLM 들 (Claude Sonnet 등 $83 이상) 보다 비용 효율성이 훨씬 뛰어났습니다.
5. 의의 및 결론 (Significance & Conclusion)
패러다임의 전환: 단순한 패턴 매칭 (Rule-Based) 을 넘어, LLM 의 의미론적 이해 (Semantic Understanding) 가 보안 취약점 탐지에 필수적임을 입증했습니다. 특히 SQL 인젝션, 명령어 주입 등 복잡한 데이터 흐름이 필요한 취약점에서 LLM 의 우위가 두드러졌습니다.
보안 특화 아키텍처의 중요성: 범용 LLM 도 훌륭한 성능을 보이지만, 도메인 특화 아키텍처 (Security-Specialized) 를 갖춘 도구 (Kolega.Dev) 가 재현율과 신뢰성 면에서 가장 우수함을 보여주었습니다. 이는 보안 분야에서는 '놓친 취약점'의 위험이 '오탐'의 비용보다 훨씬 크므로, 재현율을 극대화하는 접근이 필요함을 시사합니다.
미래 방향: 범용 AI 를 보안 프롬프트에 적용하는 것을 넘어, LLM 추론과 도메인 특화 아키텍처를 결합한 전용 보안 시스템 구축이 취약점 탐지의 미래임을 결론지었습니다.
지속 가능성: RealVuln 은 지속적으로 발전하는 벤치마크로, 향후 JavaScript, Go, Java 등 다국어 지원과 실제 프로덕션 환경 (CVE 기반) 의 데이터로 확장될 예정입니다.
이 논문은 보안 연구자와 실무자에게 현재 SAST 도구의 성능 한계를 명확히 보여주며, LLM 기반 보안 솔루션의 도입과 평가에 대한 새로운 기준을 제시한다는 점에서 큰 의의가 있습니다.