[Lobsters 요약] Fuzzilli와 BigSleep 비교: JavaScript 엔진 취약점 탐색에서 퍼징과 AI의 역할
0
설명
Google Project Zero 팀은 Chrome의 JavaScript 엔진 V8에서 취약점을 찾는 두 가지 자동화 도구, Fuzzilli(퍼저)와 BigSleep(LLM 기반 시스템)을 비교했습니다.
지난 6개월간 BigSleep은 Fuzzilli보다 더 많은 취약점을 발견했으며, 두 도구 간에는 상당한 중복이 존재했습니다.
이 비교는 LLM이 취약점 발견에 기여할 수 있음을 보여주지만, 퍼징과 LLM은 여전히 상호 보완적인 접근 방식임을 시사합니다.
### 배경 설명
소프트웨어 개발 및 보안 분야에서 버그 및 취약점 탐색은 지속적인 과제입니다. 전통적으로 커버리지 기반 퍼징(coverage-guided fuzzing)은 Chrome이나 V8과 같은 복잡한 프로젝트에서 버그를 찾는 데 성공적인 방법으로 자리 잡았습니다. 그러나 최근 몇 년간 코드 이해, 추론 및 생성 능력을 갖춘 대규모 언어 모델(LLM)의 등장은 소프트웨어 개발 및 보안에 혁신적인 변화를 가져오고 있습니다. LLM 기반 시스템은 코드의 복잡한 논리를 이해하고 잠재적인 취약점을 식별하는 데 새로운 가능성을 제시합니다. 이러한 배경에서, 기존의 강력한 퍼징 기술과 새롭게 부상하는 LLM 기반 취약점 탐색 시스템 간의 성능 및 상호 보완성을 비교하는 것은 매우 중요합니다. 특히, V8과 같이 고성능 JavaScript 및 WebAssembly 엔진은 복잡한 내부 구조와 최적화로 인해 버그 발견이 어려운 영역이며, 이는 두 접근 방식의 비교를 위한 흥미로운 대상이 됩니다. 본 분석은 2026년 4월부터 9월까지의 실제 운영 데이터를 기반으로 하며, LLM이 얼마나 많은 취약점을 발견하고, 기존 퍼징 방식과 얼마나 중복되는지, 그리고 각 방식이 발견하는 취약점의 특성은 어떠한지에 대한 질문에 답하고자 합니다.
### 운영 통계: Fuzzilli vs. BigSleep
2026년 4월부터 9월까지 6개월간의 V8 엔진 취약점 발견 통계를 분석한 결과, BigSleep은 45건의 취약점을 발견하여 Fuzzilli의 37건보다 약간 앞섰습니다. 두 시스템 간의 중복되는 취약점은 약 25%로 추정되었습니다. 이는 BigSleep이 LLM의 추론 능력을 활용하여 Fuzzilli가 놓칠 수 있는 특정 유형의 복잡한 버그를 발견할 수 있음을 시사합니다. 예를 들어, BigSleep은 TDZ(Temporal Dead Zone)와 관련된 복잡한 논리를 포함하는 crbug.com/449760249와 같은 버그를 발견했으며, 이는 퍼저가 트리거하기 어려운 시나리오입니다. 반면, Fuzzilli는 crbug.com/40076141과 같이 소스 코드만으로는 파악하기 어려운, 값 표현 방식과 관련된 버그를 발견하는 데 강점을 보였습니다. 이러한 결과는 두 도구가 서로 다른 유형의 취약점을 발견하는 데 특화되어 있음을 보여줍니다.
### 취약점 중복성 실험
운영 데이터의 중복성 추정치를 검증하기 위해, Project Zero 팀은 BigSleep을 사용하여 과거 Fuzzilli가 발견한 취약점을 재현하는 실험을 수행했습니다. 이 실험에서 BigSleep은 과거 Fuzzilli 취약점의 약 62%를 재현하는 데 성공했으며, 추가 실험을 통해 이 비율은 약 70%까지 상승했습니다. 이는 실제 운영 환경에서의 중복성 추정치(25%)보다 훨씬 높은 수치입니다. 이러한 차이는 실제 운영 환경에서 버그가 수정되는 속도, 각 도구가 사용하는 특수 빌드 및 런타임 플래그의 차이, 그리고 자동화 파이프라인의 잠재적인 문제점 등 여러 요인에 의해 발생할 수 있습니다. 특히, LLM은 특정 코드 커밋을 기반으로 취약점을 탐색하는 데 효과적이었으며, 이는 LLM이 코드 변경 사항을 이해하고 잠재적인 문제를 예측하는 능력을 보여줍니다. 그러나 이 실험은 BigSleep의 성능에 영향을 미칠 수 있는 프롬프트 엔지니어링 및 시작점 선택의 중요성도 강조했습니다.
### 취약점의 특성 분석
Fuzzilli와 BigSleep이 발견한 취약점의 특성을 분석한 결과, 각 도구의 강점과 약점이 명확히 드러났습니다. BigSleep은 복잡한 논리적 추론, 특정 '마법' 값 요구, 또는 퍼저가 아직 지원하지 않는 새로운 언어 기능이나 비표준 하네스를 요구하는 버그 발견에 강점을 보였습니다. 예를 들어, crbug.com/449760249는 중첩된 break 문과 switch 문을 활용한 복잡한 시나리오에서 발생했으며, 이는 LLM의 추론 능력을 통해 발견되었습니다. 반면, Fuzzilli는 소스 코드만으로는 파악하기 어려운 비지역적 버그, C++ 컴파일러 최적화 오류, 또는 죽은 코드 처리와 관련된 버그 발견에 더 효과적이었습니다. crbug.com/40076141은 값 표현 방식과 컴파일러 최적화 간의 상호작용으로 인해 발생했으며, 이는 LLM이 단순히 코드만으로는 파악하기 어려운 유형의 버그입니다. 또한, 두 접근 방식 모두에게 어려운 버그 유형으로, 매우 비지역적이고 복잡한 테스트 케이스를 요구하는 버그가 존재할 수 있습니다.
### 가치와 인사이트
이 연구는 JavaScript 엔진 V8에서 취약점을 찾는 데 있어 전통적인 퍼징 기법과 LLM 기반 시스템의 상호 보완성을 명확히 보여줍니다. 2026년 4월부터 9월까지의 운영 데이터에 따르면, BigSleep(LLM 기반)은 Fuzzilli(퍼저)보다 더 많은 취약점을 발견했지만, 두 시스템 간의 중복은 약 25%에 불과했습니다. 이는 각 도구가 서로 다른 유형의 취약점을 발견하는 데 특화되어 있음을 시사합니다. 특히, LLM은 복잡한 논리적 추론, 새로운 언어 기능 활용, 또는 특정 '마법' 값 요구와 같은 시나리오에서 강점을 보인 반면, 퍼저는 소스 코드만으로는 파악하기 어려운 비지역적 버그나 컴파일러 최적화 오류와 같은 영역에서 여전히 가치를 제공합니다. 따라서, 소프트웨어 공급업체는 취약점 발견을 극대화하기 위해 퍼징과 LLM 기반 에이전트 분석을 모두 수행할 것을 권장합니다. 이는 사용자에게 영향을 미치기 전에 더 많은 취약점을 식별하는 데 도움이 될 것입니다.
### 향후 전망
LLM 기술의 지속적인 발전은 향후 취약점 발견 분야에서 LLM 기반 시스템의 역할을 더욱 증대시킬 것으로 예상됩니다. Gemini 3.6 flash와 같은 최신 모델은 이미 상당한 발전을 이루었으며, 향후 모델 개선, 더 나은 프롬프트 엔지니어링, 그리고 모델이 직접 퍼저를 구축하고 개선하는 등 더 유연한 하네스 개발은 LLM 기반 시스템이 발견하는 취약점의 비율을 더욱 높일 것입니다. 경쟁 측면에서는 LLM 기반 취약점 탐색 시스템의 성능 향상이 기존 퍼징 도구와의 격차를 줄이거나, 특정 영역에서는 이를 능가할 가능성이 있습니다. 하지만, LLM이 학습 데이터에 포함되지 않은 새로운 유형의 버그나 매우 비지역적인 버그를 발견하는 데는 여전히 한계가 있을 수 있으며, 이러한 영역에서는 퍼징의 역할이 유지될 것입니다. 또한, LLM이 코드 감사뿐만 아니라 직접 퍼저를 설계하고 실행하는 등 더 능동적인 역할을 수행하게 될 가능성도 있습니다. 커뮤니티 측면에서는 LLM 기반 취약점 탐색 도구의 오픈 소스화 및 접근성 향상이 보안 연구 생태계에 긍정적인 영향을 미칠 수 있습니다.
📝 원문 및 참고
- Source: Lobsters
- 토론(Lobsters): [lobste.rs](https://lobste.rs/s/rswyzt/fuzzers_vs_ai_comparing_fuzzilli)
- 원문: [링크 열기](https://projectzero.google/2026/10/fuzzing-v-AI.html)
---
출처: Lobsters · [원문 링크](https://projectzero.google/2026/10/fuzzing-v-AI.html)
이 글에 대한 한 줄 의견
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠
댓글 0
아직 댓글이 없습니다. 로그인하면 바로 의견을 남길 수 있습니다.