AI VIDEO BRIEFING
LLM 사이버 보안 능력 평가: CTF 문제와 도커 환경으로 모델의 해킹 능력을 측정하는 벤치마크 실험
GPT-4가 디버거를 스스로 다뤄 보안 문제를 풀어내는 장면에서 출발한 프로젝트다. CTF 문제를 도커 컨테이너로 재현해 LLM의 사이버 공격 능력을 측정하는 벤치마크의 설계와, 그 과정에서 드러난 함정들을 정리했다.

핵심 메시지
쉽게 이해하기
발표자는 구글에서 일하는 개발자이자 CTF 참가 경력자로, Apart Research와 함께 사이버 보안 능력 벤치마크를 만들고 있다. 출발점은 아주 단순한 실험이었다. 특정 문자열을 입력해야 플래그를 내주는 C 프로그램을 컴파일해 심볼과 소스를 지운 뒤 GDB에 물리고, 이를 GPT-4에 연결했다.
모델은 main 함수를 디스어셈블하고, 문자열 비교 명령을 발견하고, 비교 대상이 저장된 메모리 주소를 들여다본 뒤, 그 문자열을 프로그램에 입력해 플래그를 얻어냈다. 발표자는 이 정도 수준을 예상하지 못했고 이 장면이 자신의 판단을 바꿨다고 말한다. 그래서 이런 상호작용형 평가가 객관식 문제 위주의 기존 벤치마크보다 훨씬 저평가돼 있다고 본다.
구조는 이렇다. CTF 문제를 도커 컨테이너로 만들어 자체 완결적이고 재현 가능한 환경을 구성하고, 오케스트레이터가 컨테이너를 띄우고 모델 API를 호출하며 성공 여부를 판정한다. 모델 종류에 구애받지 않아 GPT-4를 다른 모델로 갈아 끼우기 쉽고, 한 대의 머신에서 컨테이너 100개를 병렬로 돌릴 수도 있다. 현재 병목은 사실상 API 비용이다.
발표 시점 기준으로는 직접 만든 문제 15개 남짓에 수천 회의 실행이 쌓였다. 결과를 뭉뚱그리면 클로드 오퍼스와 GPT-4가 좋고 나머지는 처진다는 정도가 자신 있게 말할 수 있는 전부다. 다만 문제별로 보면 이야기가 달라진다. 같은 문제에서 Mixtral은 매번 성공하는데 GPT-3.5는 한 번도 성공하지 못하고, 라마 3의 큰 모델이 작은 모델보다 못 푸는 경우도 나온다.
발표의 절반은 그 과정에서 부딪힌 함정들이다. 대표적인 것이 에이전트와 환경을 잇는 방식이다. 파일 목록을 뽑으면 10메가바이트짜리 출력이 쏟아지는데 이를 그대로 컨텍스트에 넣을 수는 없다. 그래서 이 팀은 터미널 화면을 실제로 에뮬레이션해, 사람이 화면에서 봤을 법한 문자 행렬만 모델에게 준다. 잘려 나간 부분이 있다는 사실도 함께 알려 grep이나 less를 쓰도록 유도한다.
주요 인사이트
- 능력 평가에서 가장 큰 불확실성은 모델이 아니라 평가자 쪽에 있다. 발표자는 GPT-4가 어떤 의료 벤치마크에서 프롬프트 최적화 전후로 점수가 크게 달라진 사례, 하위 에이전트를 대량으로 돌리면 못 하던 일을 해내는 사례를 들며, '이 모델의 한계는 여기까지'라고 단언하기가 매우 어렵다고 말한다.
- 성공률을 확률로 읽는 것이 옳은지에 대한 회의도 나온다. 4회 중 2회 성공한 50%가 99%나 1%와 의미 있게 다른지 불분명하다는 것이다. 발표자는 차라리 '이 모델은 GDB로 디버깅을 할 수 있다/없다' 같은 이분법으로 보는 편이 낫겠다는 쪽으로 기울고 있다.
- 샌드박스와 평가 충실도는 서로 부딪힌다. 도커는 주소 공간 무작위화를 끄려는 GDB의 시도를 막는데, 그러면 실행할 때마다 주소가 달라져 모델이 크게 혼란스러워하고 성공률이 떨어진다. 격리 설정 하나가 측정값을 바꾸는 셈이다.
- 다중 턴 상호작용은 비용 구조부터 불리하다. n번 주고받으면 토큰 비용이 n제곱으로 불어난다. 발표자는 호출 사이에 모델 상태를 보존하는 API가 있으면 좋겠다고 하면서, 당장의 현실적 대안으로는 로컬 실행과 캐싱을 든다.
- 단순 성공률보다 '해답 공간을 얼마나 넓게 탐색하는가'가 더 흥미로운 지표일 수 있다. 같은 문제도 문자열을 찾는 정공법 외에 브레이크포인트를 걸거나, 비교문을 제거하도록 바이너리를 수정하거나, 메모리를 그냥 뒤지는 등 여러 경로가 있기 때문이다.
자주 묻는 질문
왜 객관식 벤치마크 대신 CTF 문제를 쓰나?
발표자는 기존 평가가 상호작용성을 활용하지 못한다고 본다. CTF는 터미널로 입출력을 주고받는 형태라 LLM과 접점이 잘 맞고, 사람이 만들어 쌓아둔 방대한 문제와 풀이가 이미 존재한다. 무엇보다 환경을 실제로 조작해 목표를 달성했는지로 능력을 확인할 수 있다.
공개된 문제를 쓰면 모델이 이미 풀이를 외우고 있지 않나?
발표자는 데이터 오염을 큰 문제로 인정하면서, 어디에도 공개되지 않는 비공개 문제 세트가 반드시 필요하다고 답한다. 다만 풀이를 학습했더라도 실제 환경과 프로토콜을 통해 끝까지 해내는지는 여전히 의미 있는 정보라고 덧붙인다.
앞으로의 계획은 무엇인가?
문제 수를 대폭 늘리고, 하나의 문제를 잘게 분해해 단계별로 측정하며, 공격과 방어가 오가는 형태의 CTF까지 다루는 것이 목표로 제시됐다. 결과를 바이너리 익스플로잇, 리눅스 활용, 취약점 탐색 같은 구체적 능력별 점수로 정리하는 방향도 언급된다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗