← 최신 논문
🤖 machine learning

ANVIL: Anomaly-based Vulnerability Identification without Labelled Training Data

이 논문은 마스크 재구성(masked reconstruction)과 하이브리드 점수 산출 메커니즘을 통해 코드 이상치를 식별하기 위해 거대 언어 모델을 활용하는 비지도 학습 기반 취약점 탐지 프레임워크인 ANVIL을 소개하며, 이는 지도 학습 기반 탐지기보다 우수한 성능을 입증하였고 퍼저(fuzzer)와 결합했을 때 이전에 알려지지 않은 취약점들을 성공적으로 찾아냈다.

원저자: Weizhou Wang, Eric Liu, Xiangyu Guo, Xiao Hu, Ilya Grishchenko, David Lie

게시일 2026-06-30
📖 3 분 읽기☕ 가벼운 읽기

원저자: Weizhou Wang, Eric Liu, Xiangyu Guo, Xiao Hu, Ilya Grishchenko, David Lie

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

수백만 개의 완벽한 벽돌로 이루어진 거대한 벽 속에서, 단 하나의 약간 결함이 있는 벽돌을 찾는다고 상상해 보십시오.

문제점: "동전 던지기"의 딜레마
보통, 이러한 결함 있는 벽돌을 찾으려면 수천 개의 결함 사례를 연구하고 그것들이 정확히 어떻게 생겼는지 학습한 전문가 팀이 필요합니다. 이것이 현재 대부분의 컴퓨터 프로그램이 작동하는 방식인 "지도 학습(supervised learners)"입니다. 하지만 여기에는 큰 문제가 있습니다. 제대로 가르칠 만큼의 '결함 있는 코드' 사례가 충분하지 않다는 것입니다.

최근에는 거의 모든 코드를 읽은 초지능형 AI 모델(대규모 언로 모델, LLM)들이 등장했습니다. 여러분은 이렇게 생각할 수도 있습니다. "훌륭하군! 그들은 모든 것을 보았으니 결함 있는 부분을 찾아낼 수 있겠지." 하지만 놀랍게도, 단순히 AI에게 "이 코드 줄이 잘못되었나요?"라고 물으면, 그 성능은 동전을 던져 앞뒤를 맞추는 것보다 나을 게 없습니다. 그들은 코드를 작성하는 데는 뛰어나지만, 코드를 비판하는 데는 서툽니다. 왜냐하면 그들은 패턴을 모방하도록 훈련되었지, 오류를 포착하도록 훈련된 것이 아니기 때문입니다.

해결책: ANVIL ("차이점 찾기" 게임)
이 논문의 연구진은 ANVIL을 통해 발상을 전환했습니다. AI에게 "결함 있는" 코드가 어떻게 생겼는지 가르치는 대신, "AI가 생각하기에 정상적인 코드 줄은 어떤 모습이어야 하는가?"라고 물었습니다.

ANVIL이 작동하는 방식은 다음과 같은 간단한 비유를 통해 설명할 수 있습니다.

  1. 마스킹 게임: 이야기의 한 문장에서 검은색 마커로 한 줄을 가렸다고 상상해 보십시오. 그리고 앞뒤 문장만을 바탕으로 숨겨진 줄이 무엇이었을지 AI에게 맞혀보라고 요청합니다.
  2. 기대치: 만약 숨겨진 줄이 정상적이고 표준적인 코드라면, AI는 그 패턴을 수백만 번 보았기 때문에 아마도 정답을 맞히거나(혹은 정답에 매우 근접하게) 맞힐 것입니다.
  3. 이상 징후: 만약 숨겨진 줄이 "취약한"(결함이 있는) 코드라면, 그 코드는 나머지 데이터와 비교했을 때 이상하거나 특이할 가능성이 높습니다. 이 경우 AI는 예측에 어려움을 겪을 것입니다. AI는 완전히 다른 것을 추측하거나, 매우 불확실해할 것입니다.
  4. 점수: ANVIL은 AI의 추측과 원래의 코드 줄이 얼마나 다른지를 측정합니다. 만약 추측이 원래와 크게 다르거나 AI가 혼란스러워한다면, ANVIL은 해당 줄을 "이상 징후가 있는(수상한)" 것으로 표시합니다.

"하이브리드" 탐정
연구진은 단순히 차이점을 측정하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 때로는 아주 작은 차이(예: >>=로 바꾸는 것)가 거대한 오류가 될 수 있지만, AI는 이를 별것 아닌 것으로 생각할 수도 있기 때문입니다. 그래서 그들은 네 가지 도구를 갖춘 탐정처럼 작동하는 "하이브리드 점수(Hybrid Score)"를 만들었습니다.

  • 정확한 일치(Exact Match): AI가 100% 정확하게 맞혔습니까? 그렇지 않다면 경고 신호입니다.
  • 혼란도 측정기(Confusion Meter): AI가 얼마나 불확실해했습니까? 만약 AI가 확답을 피하고 있다면, 그 코드는 이상할 수 있습니다.
  • 복잡도 체크(Complexity Check): 코드 줄이 지나치게 복잡합니까? 복잡한 코드는 종종 실수가 숨어 있는 곳입니다.
  • "손실(Loss)" 점수: 원래의 코드 줄에 대해 AI가 얼마나 "놀랐는지"를 나타내는 수학적 척도입니다.

결과: 건초더미에서 바늘 찾기
팀은 실제 세계의 방대한 코드 데이터셋을 대상으로 ANVIL을 테스트했습니다.

  • 전문가를 능가하다: 그들은 ANVIL을 학습 데이터가 반드시 필요한 기존의 최고 도구들과 비교했습니다. ANVIL은 학습 데이터를 전혀 사용하지 않았음에도 불구하고, 다른 도구들보다 두 배 더 정확하게 취약점을 찾아냈습니다.
  • 컨텍스트의 기술: 그들은 AI에게 파일 전체를 읽게 하는 것이 오히려 혼란을 줄 수 있다는 것을 발견했습니다(마치 건초더미 속에서 바늘을 찾기 위해 헛간 전체를 들여다보는 것과 같습니다). 대신, ANVL은 "스마트 컨텍스트" 접근 방식을 사용합니다. 즉, 의심스러운 줄을 둘러싼 특정 코드 블록(함수)만을 집중적으로 살펴봅니다. 이를 통해 더 빠르고 정확해졌습니다.
  • 실제 세계에서의 성공: 실전에서 작동함을 증명하기 위해, 그들은 ANVIL을 "퍼저(fuzzer, 무작위 데이터를 던져 소프트웨어를 망가뜨리려는 도구)"에 연결했습니다. ANVIL은 퍼저가 두 개의 새로운, 이전에 알려지지 않은 취약점을 찾는 데 도움을 주었으며, 그중 하나는 매우 심각하여 공식 보안 ID(CVE)를 부여받았습니다.

핵식 요점
ANVIL은 "나쁜 것"이 무엇인지 AI에게 가르치지 않고도 그것을 찾아낼 수 있다는 것을 증명합니다. 그저 AI에게 "정상적인 것"이 무엇인지 물으면 됩니다. 코드가 "정상적인" 패턴에 부합하지 않는다면, 그것은 결함이 있을 가능성이 높습니다. 이는 과거의 실수들을 담은 거대한 라이브러리 없이도 보안 구멍을 찾아내는 더 똑똑하고, 빠르며, 일반적인 방법입니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →