Vulnerability Detection with Interprocedural Context in Multiple Languages: Assessing Effectiveness and Cost of Modern LLMs
이 논문은 C, C++, Python 의 509 개 취약점을 대상으로 함수 간 의존성을 포함한 다양한 컨텍스트 수준에서 현대적 LLM 들의 취약점 탐지 효과, 비용 및 설명 품질을 실증적으로 분석하여 AI 기반 보안 도구 설계에 대한 시사점을 제시합니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
이 논문은 **"인공지능 (LLM) 이 코드의 버그 (취약점) 를 찾을 때, 주변 맥락을 얼마나 알려줘야 가장 잘 찾을까?"**라는 질문에 대한 답을 찾는 실험 결과입니다.
마치 **수사관 (AI) 이 범인 (버그) 을 잡으려고 할 때, 범인이 혼자 있는 방 (단일 함수) 을 보는 것이 좋을까, 아니면 범인이 누구와 대화했는지 (호출자/피호출자) 까지 모두 보여주는 것이 좋을까?**를 비교한 이야기라고 생각하시면 됩니다.
이 연구의 핵심 내용을 쉬운 비유로 설명해 드릴게요.
1. 연구의 배경: "혼자 보는 것" vs "주변까지 보는 것"
과거의 연구들은 AI 에게 **범인이 혼자 있는 방 (단일 함수)**만 보여주고 "여기 범죄가 있었나요?"라고 물었습니다. 하지만 실제 범죄는 종종 **범인과 동행자의 대화 (함수 간 연결)**에서 발생합니다.
- 비유: 범인이 "나 지금 도망갈 준비 중이야"라고 말하고, 동행자가 "알았어, 문 열어줄게"라고 대답하는 상황입니다.
- 단일 함수 (방만 보기): "도망갈 준비 중"이라는 말만 보고는 "아, 그냥 준비하는 거겠지"라고 넘어갈 수 있습니다.
- 인터프로시저럴 컨텍스트 (주변까지 보기): 동행자의 대화까지 보면 "아, 이건 범죄를 저지르려는 공범 관계구나!"라고 바로 알 수 있습니다.
연구진은 **"주변 맥락 (동행자 대화) 을 더 많이 알려주면 AI 가 버그를 더 잘 찾을까?"**를 확인하기 위해 실험을 했습니다.
2. 실험 방법: 4 명의 탐정과 3 가지 상황
연구진은 Claude Haiku 4.5, GPT-4.1 Mini, GPT-5 Mini, Gemini 3 Flash라는 4 명의 최신 AI 탐정에게 509 개의 실제 버그 사례를 맡겼습니다. 그리고 세 가지 다른 상황을 만들어 테스트했습니다.
- 상황 A (방만 보기): 범인 (코드) 혼자만 보여줌.
- 상황 B (동행자 추가): 범인이 누구를 불렀는지 (Callees) 까지 보여줌.
- 상황 C (상사 추가): 누가 범인을 불렀는지 (Callers) 까지 보여줌.
3. 놀라운 결과: "더 많은 정보는 오히려 방해가 된다?"
일반적인 상식으로는 "정보를 더 많이 주면 AI 가 더 똑똑해지겠지?"라고 생각하기 쉽습니다. 하지만 결과는 정반대였습니다.
- GPT 모델 (특히 GPT-4.1 Mini): 주변 정보를 더 많이 주면 혼란스러워졌습니다. 마치 수사관에게 쓸데없는 잡담까지 모두 들려주니, 진짜 단서를 놓치고 엉뚱한 데 집중하게 된 것처럼, 오히려 버그를 찾는 정확도가 25% 까지 떨어졌습니다.
- Claude 와 Gemini: 이 두 AI 는 주변 정보를 줘도 안정적이었습니다. 정보량이 변해도 실력 유지가 잘 되었습니다.
핵심 교훈: "더 많은 정보 = 더 좋은 결과"라는 공식은 AI 에 따라 다릅니다. 오히려 불필요한 정보는 AI 를 혼란스럽게 만들어 성능을 떨어뜨릴 수 있습니다.
4. 비용 문제: "더 비싼 정보, 더 낮은 성능"
정보를 더 많이 주면 AI 가 읽어야 할 글자 (토큰) 가 두 배로 늘어납니다. 이는 비용이 두 배로 증가한다는 뜻입니다.
- 결과: 정보를 두 배로 늘려도 정확도는 오르지 않고, 오히려 떨어지는 경우가 많았습니다.
- 가성비 왕 (Best Value): Gemini 3 Flash가 가장 훌륭했습니다. 적은 비용으로 거의 완벽한 성능 (F1 점수 0.978 이상) 을 냈습니다.
- 가장 비싼 모델: Claude Haiku 4.5는 성능도 좋지만, 특히 **버그를 설명하는 능력 (해석력)**이 가장 뛰어났습니다. "여기 버그가 있어요"라고만 말하는 게 아니라, "왜 버그인지, 어떻게 고쳐야 하는지"를 아주 잘 설명해 줍니다.
5. 언어별 차이: C 언어 vs 파이쌐
- C/C++ (수동 관리 언어): 메모리 관리가 복잡해서 버그가 숨어있기 쉽습니다. 여기서 GPT 모델들은 주변 정보를 주면 매우 혼란스러워졌습니다.
- 파이쌐 (자동 관리 언어): 코드가 더 간결해서 AI 가 혼자서도 잘 찾아냈습니다.
6. 결론: AI 를 어떻게 써야 할까?
이 연구는 보안 도구 개발자들에게 다음과 같은 조언을 합니다.
- 무조건 많은 정보를 주지 마세요: 사용하는 AI 모델에 따라, 오히려 정보량을 줄이는 (단순한 코드만 주는) 것이 더 정확하고 저렴할 수 있습니다.
- 목적에 따라 AI 를 고르세요:
- 가장 싸고 정확한 것: Gemini 3 Flash (버그를 빠르게 찾아내고 싶을 때).
- 가장 잘 설명하는 것: Claude Haiku 4.5 (왜 버그인지 자세히 설명받고 싶을 때).
- 최저가: GPT-4.1 Mini (하지만 정확도가 떨어질 수 있음).
- 설명이 곧 실력이다: AI 가 버그를 잘 찾으면, 그 이유도 잘 설명합니다. 반대로 설명이 엉망이면, 버그 찾기도 엉망일 가능성이 높습니다.
요약
이 논문은 **"AI 에게 코드의 버그를 찾을 때, 주변 맥락을 너무 많이 주면 오히려 AI 가 혼란스러워져서 실수가 늘고 비용만 비싸진다"**는 사실을 증명했습니다. 가장 현명한 방법은 사용하려는 AI 모델의 성향과 언어 (C, 파이쌐 등) 에 맞춰 정보의 양을 조절하는 것입니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.