고친 모양이 아니라 동작을 채점한다: CWE-bench v2 의 검증기 설계
보안 약점 수정 벤치마크 CWE-bench v2 가 공개한 과제 100개와 과제마다 확인한 여섯 가지 품질 질문, 11개 모델 결과를 원문 그대로 정리하고, 그 검증기 설계가 법률 AI 평가에 주는 시사점을 가설로 살펴봅니다.
초록 Collinear AI 는 2026년 11월 3일 Hugging Face 블로그에 보안 약점 수정 벤치마크 CWE-bench v2 를 소개했습니다. 에이전트가 실제 오픈소스 저장소와 짧은 지시를 받아 기존 기능을 깨지 않고 보안 약점을 찾아 고치는 과제 100개(CWE 91종)를 공개했고, 채점은 전부 프로그램 검증기로 한다고 밝혔습니다. 과제마다 검증기가 특정 수정의 모양이 아니라 올바른 동작을 보는지, 외운 해법을 떨어뜨리는지 같은 여섯 가지 질문을 확인했다고 합니다. 평가한 11개 모델 가운데 1위도 과제의 19% 는 네 번 모두 실패했습니다. 이 칼럼은 그 검증기 설계를 정리하고, 법률 AI 의 답을 평가할 때 옮겨 볼 수 있는 점을 검증 전 가설로 살펴봅니다.
평가에서 흔한 실패는 모델이 문제를 풀었는지가 아니라 정답과 비슷하게 생겼는지를 재는 것입니다. 보안 약점을 고치는 방법은 여러 가지인데, 검증기가 특정 패치의 모양만 정답으로 인정하면 다른 올바른 수정은 떨어지고, 알려진 패치를 외운 모델은 붙습니다. CWE-bench v2 의 글은 이 문제를 정면으로 다룹니다. 과제마다 '검증기가 한 가지 수정의 구조가 아니라 올바른 동작을 보는가', '외운 해법을 떨어뜨리는가'를 확인했다고 적었습니다. 이 글은 원문이 보여 준 설계와 결과를 먼저 정리하고, 법률 답변 평가로 옮길 때 무엇을 따로 재야 하는지를 나눠 봅니다.
핵심 기술 개념
프로그램 검증기(programmatic verifier)
사람이나 언어 모델의 판단 없이, 정해진 시험을 실행해 통과 여부로 채점하는 장치입니다. 원문은 CWE-bench 의 채점이 전부 이런 방식이라 결과가 결정적이고 재현할 수 있다고 적었고, 과제·검증기·실행 환경을 공개했습니다.
비공개 평가 세트(held-out set)
공개하지 않고 따로 남겨 두는 과제 묶음입니다. 아무 모델도 보지 않은 과제로 진척을 계속 재기 위해 둡니다. 원문은 공개 과제 100개와 별도로 이런 세트를 유지한다고 밝혔습니다.
pass@1 · pass@4
과제를 한 번 시도해 통과하는 비율과, 네 번 시도해 한 번이라도 통과하는 비율입니다. 원문은 과제당 4회를 돌려 400회의 평균 보상을 점수로 보고했습니다.
기술 심층 분석
무엇을 시험하나
CWE-bench 는 에이전트에게 실제 오픈소스 저장소의 체크아웃과 짧은 지시를 줍니다. 목표는 보안 약점을 찾아 고치되 기존 기능은 깨지 않는 것입니다. v2 는 누구나 돌려 볼 수 있는 공개 과제 100개를 내놓았고, 이 과제들은 CWE 91종에 걸쳐 있습니다. 원문은 방어자는 공격자가 들어올 수 있는 길을 모두 예상하고 매번 맞혀야 한다며, 익숙한 패턴을 알아보는 것만으로는 부족하다고 적었습니다. 채점은 전부 프로그램으로 하고, 그 검증 코드는 LLM 심사단의 도움을 받아 더 어렵고 공정한 방향으로 다듬었다고 합니다. 공개 과제와 별도로 아무 모델도 보지 않은 비공개 세트를 유지해 진척을 계속 재고, 그 세트로 평가받으려면 회사에 따로 연락하게 했습니다.
과제마다 확인한 여섯 가지 질문
원문은 모든 과제에 대해 여섯 가지를 확인했다고 밝혔습니다. 지시가 평가 상황이 아니라 현실의 요청처럼 읽히는가, 채점하는 동작을 지시에서 추론할 수 있는가, 검증기가 특정 수정의 구조가 아니라 올바른 동작을 보는가, 시작 코드는 실패하고 참조 수정은 통과하는가, 새 수정 뒤에도 원래 기능이 동작하는가, 그리고 알려진 업스트림 패치 같은 외운 해법을 검증기가 떨어뜨리는가입니다. 모든 과제는 사람이 직접 검토했고, 공개 자체도 품질을 높이려는 같은 노력의 일부라고 적었습니다. 이 질문들은 모델이 아니라 시험 자체를 점검합니다. 시작 코드가 이미 통과하거나 참조 수정이 실패한다면, 그 과제의 점수는 모델의 능력에 대해 아무것도 말해 주지 못하기 때문입니다.
결과가 말해 주는 것
평가한 11개 모델 가운데 Gemini 4 Argon 이 pass@1 67.8%, pass@4 81.0% 로 가장 높았고, Claude Opus 5.5 가 67.3%, 78.0% 로 뒤를 이었습니다. 95개 과제는 적어도 한 모델이 풀어 과제 자체는 풀 수 있다는 근거가 됐지만, 1위 모델도 과제의 19% 는 네 번 모두 실패했습니다. 비용으로 보면 DeepSeek V4.1 Flash 가 롤아웃당 0.04달러에 pass@1 57.0%, Opus 5.5 가 1.83달러에 약 10점 더, Gemini 4 Argon 이 3.92달러에 조금 더 높은 점수를 냈습니다. 이 수치는 원문이 정한 과제·하네스·시도 횟수에서 나온 것입니다.
법률 답변 평가로 옮기면 — 가설
원문은 보안 코드 수정에 관한 벤치마크이고, 법률 답변을 다루지 않습니다. 그래서 여기서부터는 검증 전 가설입니다. 법률 질문에도 맞는 답을 쓰는 방법은 여러 가지입니다. 평가가 모범 답안과 문장이 얼마나 닮았는지를 재면, 다르게 썼지만 옳은 답은 깎이고 모범 답안을 외운 답은 붙을 수 있습니다. CWE-bench 의 질문을 옮기면 '결론과 인용한 조문·판례가 맞는가를 보는가, 표현의 모양을 보는가', '사실관계나 요건을 바꾼 비공개 문제에서도 공개된 모범 답안을 그대로 되풀이하지 않는가', '새로 고친 뒤에도 전에 맞히던 질문을 여전히 맞히는가'가 됩니다. 공개 답안과 같은 답이라는 사실만으로 틀렸다고 볼 수는 없습니다. 이 질문들이 법률 답변 평가에서 실제로 차이를 만드는지는 따로 시험해 봐야 합니다.
기술적 트레이드오프
긴장 관계 프로그램 검증기는 결정적이고 재현할 수 있지만, 미리 정한 동작만 볼 수 있어 예상하지 못한 올바른 답이나 다른 종류의 실수를 놓칠 수 있습니다.
실무적 해소 원문처럼 검증기를 쓰되 과제마다 사람이 검토하고, 외운 답과 기존 기능의 회귀를 함께 시험하는 편이 현실적입니다. 공개 세트와 별도로 비공개 세트를 두어, 공개된 과제에 맞춰진 점수와 처음 보는 과제의 점수를 나눠 보는 것도 같은 이유입니다. 평균 점수 하나로 고르지 않고, 모든 시도에서 실패하는 과제가 어떤 종류인지도 함께 보는 것이 좋습니다.
이 주장이 틀리는 조건
반증 조건 본 칼럼의 주장, 곧 평가는 정답의 모양이 아니라 동작을 봐야 하고 외운 답과 회귀를 함께 재야 한다는 주장은 다음 관측으로 약해질 수 있습니다. 첫째, 난도와 구성을 맞춘 법률 문제에서 모범 답안과의 유사도로 잰 평가와 결론·인용의 정확성으로 잰 평가가 중대한 오류를 비슷한 비율로 잡아내는 경우입니다. 둘째, 문제 노출 여부만 다른 두 세트에서 오류율이 꾸준히 같게 나와 외운 답의 영향이 확인되지 않는 경우입니다. 이런 결과가 쌓이면 이 설계의 추가 비용은 다시 따져야 합니다.
법마디 OS에 적용한다면
법마디 OS 는 관리형 API 로 범용 LLM 을 쓰고, 답변 속 조문과 판례 인용을 law.go.kr 원문과 대조해 확인되지 않은 인용은 내보내지 않도록 설계했습니다. CWE-bench 를 돌리지는 않았습니다. 다만 원문의 질문 가운데 '시작 코드는 실패하고 참조 수정은 통과하는가'와 같은 확인은 콘텐츠 게이트를 고칠 때 쓰고 있습니다. 예컨대 11월 8일 자동 발행 잡의 커밋 단계 결함을 고칠 때 넣은 회귀 테스트는, 고치기 전 스크립트로 되돌리면 실패하고 고친 스크립트에서 통과하는 것을 확인한 뒤 넣었습니다. 테스트가 실제로 결함을 잡는지 확인하지 않으면, 통과 표시가 아무것도 증명하지 못하기 때문입니다.
기술적 함의
- 검증기가 특정 정답의 모양을 채점하면 다른 올바른 답은 떨어지고 외운 답은 붙을 수 있다. CWE-bench v2 는 이를 과제마다 확인했다.
- 1위 모델도 과제의 19% 는 네 번 모두 실패했다. 평균 점수만으로는 이런 긴 꼬리가 보이지 않는다.
- 이 설계를 법률 답변 평가에 옮기는 것은 시험해 봐야 할 가설이며, 원문은 법률 답변을 다루지 않는다.
"평가를 믿을 수 있게 만드는 것은 높은 점수가 아니라, 검증기가 무엇을 보고 무엇을 놓치는지를 과제마다 확인해 두는 습관입니다."