MAS-SZZ: Multi-Agentic SZZ Algorithm for Vulnerability-Inducing Commit Identification
본 논문은 루트 원인을 요약하고 코드 이력을 자율적으로 추적하여 취약점을 유발하는 커밋을 정확하게 식별하기 위해 협력형 에이전트와 구조화된 프롬프팅을 활용하는 다중 에이전트 알고리즘인 MAS-SZZ를 제안하며, 이는 기존 SZZ 방법보다 최대 65.22%의 F1 점수 향상으로 현저히 우수한 성능을 보입니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
한 거대하고 끊임없이 변화하는 도시에서 범죄를 해결하려는 형사가 되어보십시오. 그 "범죄"는 소프트웨어 취약점 (보안 구멍) 이며, "범죄 현장"은 최근에 수정된 특정 코드 영역입니다. 당신의 목표는 개발자가 실수로 버그를 처음 도입한 역사상 그 정확한 순간, 즉 **취약점 유발 커밋 (Vulnerability-Inducing Commit, VIC)**을 찾아내는 것입니다.
이것이 바로 SZZ 알고리즘의 역할입니다. 이는 "수정"을 보고 도시의 역사를 거슬러 올라가 원래 실수를 찾아내는 시간 여행 형사와 같습니다.
그러나 이전 형사들 (이전 SZZ 알고리즘) 은 종종 제 역할을 하지 못합니다. 그들은 두 가지 큰 실수를 저지릅니다:
- 잘못된 단서: 조사할 잘못된 코드 라인을 선택합니다. 때로는 실제로 고장 난 코드가 아니라, 단순히 이동하거나 이름이 바뀐 코드 (예: 거리 표지판을 옮기는 것) 를 조사합니다.
- 너무 일찍 포기: 조사를 너무 일찍 중단합니다. 수정 사항과 "비슷해 보이는" 커밋을 발견하고 거기서 멈추어, 문제의 씨앗을 심은 수년 전의 실제 커밋을 놓쳐버립니다.
등장: MAS-SZZ, 형사 팀
이 논문의 저자들은 MAS-SZZ(Multi-Agentic SZZ)를 개발했습니다. 고독한 형사 한 명이 아니라, 사건을 해결하기 위해 고도화된 경찰대처럼 협력하는 전문 AI 에이전트 팀을 구축한 것입니다.
다음은 그들의 팀이 단계별로 작동하는 방식입니다:
1. 감사관 (감식 분석가)
먼저, 팀은 "범죄 보고서 (CVE 설명)"와 "수정 보고서 (버그를 수정한 코드)"를 살펴봅니다.
- 그들이 하는 일: 감사관은 버그가 발생한 이유를 정확히 요약합니다. 중요한 점은 그들이 단순히 추측하지 않고, 모든 주장을 뒷받침하기 위해 보고서 내의 구체적인 증거를 지적한다는 것입니다.
- 검증: "판사" 에이전트가 감사관의 작업을 이중으로 점검합니다. 감사관이 논리적 오류를 범하거나 주장에 대한 증거를 찾지 못하면, 판사는 작업을 다시 하도록 보냅니다. 이를 통해 팀은 범죄에 대한 견고하고 검증된 이론으로 시작할 수 있습니다.
2. 검토자 및 위치 확인자 (목표 전문가)
이제 그들이 "무엇"이 범죄였는지 알았으니, 추적할 구체적인 증거 조각을 찾아야 합니다.
- 문제점: "수정"에는 종종 노이즈가 많이 포함되어 있습니다. 정리되거나 이름이 바뀌거나 새로운 기능을 위해 추가된 코드 등이 그렇습니다.
- 해결책: 검토자는 수정 사항의 모든 변경 사항을 읽으며 "개발자의 의도는 무엇이었는가?"라고 묻습니다. 코드 리팩토링과 같은 "노이즈"를 필터링하고 보안 구멍을 실제로 수정한 변경 사항만 유지합니다.
- 위치 확인자: 관련 변경 사항이 발견되면, 위치 확인자는 "결정적 증거 (smoking gun)"가 되는 정확한 코드 라인을 특정합니다. 이것이 **앵커 문장 (Anchor Statement)**이 됩니다.
3. 추적자 (시간 여행자)
이 부분이 가장 중요합니다. 추적자는 그 "앵커 문장"을 받아 코드 저장소라는 도시의 역사를 거슬러 올라가기 시작합니다.
- 작동 방식: 한 걸음 뒤로 물러서고 멈추는 대신, 추적자는 계속 나아갑니다. 매 단계마다 "여전히 버그가 있는가?"라고 묻습니다.
- 중지 신호: 그들은 버그가 아직 존재하지 않는 코드 버전을 찾을 때까지 뒤로 계속 이동합니다. 그 다음 바로 다음 커밋 (버그가 처음 나타난 것) 이 범인으로 선언됩니다.
- 더 나은 이유: 이전 알고리즘들은 코드가 "다르게" 보일 때 (유사도가 떨어짐) 종종 멈추었습니다. 추적자는 코드가 얼마나 다른지에 상관없이, 취약점이 존재하는지에만 집중합니다.
결과: 더 나은 형사
저자들은 이 새로운 팀을 두 개의 주요 데이터셋에서 얻은 실제 데이터로 다른 일곱 개의 "형사" 알고리즘과 비교 테스트했습니다.
- 점수: 이 알고리즘들의 세계에서는 "F1 점수"가 모든 나쁜 놈을 찾아내는 것 (재현율, Recall) 과 무고한 사람을 고발하지 않는 것 (정밀도, Precision) 을 균형 있게 평가하는 최종 성적표와 같습니다.
- 승리: MAS-SZZ는 조금 더 잘한 것이 아니라, 경쟁을 압도했습니다. 가장 우수한 이전 방법과 비교하여 최종 점수를 최대 **65.22%**까지 향상시켰습니다.
- 교훈: 증거를 검증하고, 노이즈를 필터링하며, 진정한 기원을 찾을 때까지 뒤로 계속 이동하는 AI 에이전트 팀을 사용함으로써, MAS-SZZ는 이전에 사용된 어떤 방법보다 소프트웨어 취약점의 근본 원인을 찾는 데 훨씬 더 신뢰할 수 있습니다.
요약하자면, MAS-SZZ는 어설프고 1 인이 수행하는 탐색을, 실제 범인을 거의 놓치지 않는 협력적이고 증거 기반의 수사 활동으로 바꿉니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.