신경‑기호 결합 자동 취약점 탐지 프레임워크 QRS
초록
QRS는 코드QL 쿼리 생성을 LLM에 위임하고, 자동 리뷰·정제 에이전트를 통해 의미론적 검증과 익스플로잇 합성을 수행한다. 20개의 기존 CVE와 100개의 인기 PyPI 패키지를 대상으로 90 % 이상의 정확도로 새로운 취약점을 발견했으며, 토큰 비용과 실행 시간도 실용적인 수준으로 유지한다.
상세 분석
본 논문은 기존 정적 분석 도구가 “패턴‑매칭”에 머무르는 한계를 지적하고, 대규모 언어 모델(LLM)의 의미론적 추론 능력을 정적 분석 파이프라인에 통합하는 새로운 패러다임을 제시한다. QRS는 Query, Review, Sanitize라는 세 개의 자율 에이전트로 구성된 ‘신경‑기호’(neuro‑symbolic) 트라이어드이며, 각각 코드QL 쿼리 합성, 의미론적 검증·익스플로잇 제안, 최종 정제·라벨링 역할을 수행한다.
1️⃣ Query 에이전트는 최소한의 스키마 정의와 몇 개의 샘플 예시만으로 고수준 취약점 가설을 코드QL 구문으로 변환한다. 여기서 중요한 점은 “스키마‑증강” 단계에서 LLM이 라이브러리 메타데이터와 AST 정보를 활용해 가설을 구체화한다는 점이다. 또한, 컴파일 오류가 발생하면 자동 ‘fix‑up_query’ 루프를 통해 오류를 분석하고 재시도하는 자기 치유 메커니즘을 제공한다. 이는 LLM이 생성한 코드가 종종 구문 오류를 일으키는 현실적인 문제를 효과적으로 완화한다.
2️⃣ Review 에이전트는 쿼리 결과를 받아 데이터 흐름(source‑to‑sink) 분석, 제어 흐름 추적, CWE 매핑 등을 수행한다. 특히, “익스플로잇 합성” 단계에서 LLM이 잠재적 공격 경로를 제시하고, 이를 기반으로 자동 PoC 코드를 생성한다. 이 과정은 단순 정적 매칭을 넘어 실제 공격 가능성을 평가함으로써 false positive를 크게 감소시킨다.
3️⃣ Sanitize 에이전트는 Review 단계에서 도출된 증거를 토대로 최종 보고서를 정제한다. 여기서는 증거‑중심(evidence‑only) 판단을 강조해, 코드 컨텍스트 없이도 결과의 신뢰성을 검증한다. 또한, MITRE ATT&CK 매트릭스와 연계한 라벨링을 제공해 취약점의 전술·기술적 맥락을 명시한다.
실험 설계는 두 가지 축으로 나뉜다. 첫 번째는 20개의 과거 CVE(주로 PyPI 라이브러리) 재현 실험으로, QRS는 90.6 %의 탐지 정확도를 기록했다. 두 번째는 2025년 11월 기준 가장 많이 다운로드된 100개 PyPI 패키지 전체 스캔이다. 여기서 QRS는 39개의 중·고위험 취약점을 발견했으며, 그 중 5건은 신규 CVE로 인정받고, 5건은 문서 업데이트로 이어졌다. 나머지 29건은 동시 연구자들에 의해 독립적으로 보고돼, 발견된 취약점의 실질적 위험성을 입증한다.
성능 측면에서 QRS는 토큰 비용을 ‘관리 가능한 수준’으로 유지하면서도, 각 에이전트당 최대 3회 재시도와 온·오프라인 혼합 실행을 통해 전체 스캔 시간을 수십 분 내외로 제한한다. 이는 대규모 CI/CD 파이프라인에 실시간 적용 가능함을 시사한다.
한계점으로는 (1) 네이티브 확장·바이너리 코드에 대한 탐지는 지원하지 않으며, (2) 동적 로직·런타임 취약점은 별도 퍼징·동적 분석이 필요하고, (3) 악의적인 코드 변조에 의한 LLM 회피(Adversarial Evasion) 시나리오는 아직 다루지 않는다. 또한, 스키마 정의와 샘플 예시의 품질에 따라 Query 에이전트의 초기 성능이 크게 좌우될 수 있다는 점도 주목할 만하다.
전반적으로 QRS는 “LLM‑주도 쿼리 합성 + 정적 분석 + 자동 검증”이라는 삼위일체 구조를 통해 기존 SAST 도구의 정밀도·재현성을 크게 향상시켰으며, 실무 적용 가능성을 입증한 점이 가장 큰 강점이다. 향후 연구에서는 다중 언어 지원 확대, 동적 분석과의 연계, 그리고 적대적 회피 방어 메커니즘을 추가함으로써 보다 포괄적인 자동 보안 검사 체계를 구축할 수 있을 것으로 기대된다.
댓글 및 학술 토론
Loading comments...
의견 남기기