오펜시브 보안 영역의 LLM 활용 사례 (1)
들어가며
LLM(대규모 언어 모델, Large Language Model)에 대한 관심이 뜨겁습니다. 아직까지 LLM이 인간이 하는 일을 완전히 대체하지는 않지만, 인간이 하는 일을 도울 수 있다는 사실은 분명합니다. Security Assessment 팀의 보안 연구원들도 LLM 기술에 관심을 가지고, 업무에서 활용하기 위한 준비를 하고 있습니다. 이번 포스트에서는 오펜시브 보안 분야의 LLM 활용 사례를 살펴보겠습니다.
Security with LLM
보안 분야의 LLM은 방어적인 보안(Defensive Security)의 관점에서 주로 활용되고 있습니다. 보안을 고려한 코드 작성을 돕는 Microsoft의 Copilot for Security, 위협 인텔리전스(Threat Intelligence)를 기반으로 AI(인공지능, Artificial Intelligence) 및 LLM 기술을 활용한 공격/위협 탐지가 대표적인 사례입니다. 사이버 보안 산업 및 연구 분야에서 LLM의 활용 현황과 트렌드를 담은 서베이 논문 Large Language Models in Cybersecurity: State-of-the-Art에서도 LLM이 방어적인 보안 분야에서 활발하게 활용되는 반면, 오펜시브 보안(Offensive Security) 분야에서 공개된 LLM 활용 사례 및 그 영향에 대한 연구가 미흡하다는 언급이 있었습니다.
하지만, 최근 들어 오펜시브 보안 연구 분야에서도 LLM은 큰 주목을 받고 있습니다. 특히, 취약점 자동 탐지 및 퍼징(Fuzzing)에 LLM을 활용하는 방식에 대한 연구가 활발히 이루어지고 있습니다. 전통적으로 취약점을 탐지하고 취약점의 유효성 및 심각도(Exploitability)를 판단하는 작업은 인간의 경험과 직관과 함께 많은 시간이 필요했습니다. 그러나 최근 LLM 기반 챗봇(Chatbot)(예: OpenAI의 ChatGPT, Anthropic의 Claude)이 급부상하며, LLM이 반복적인 패턴 분석을 넘어 코드 및 바이너리(Binary)의 문맥과 흐름을 일부 파악할 수 있게 되었습니다. 이와 같은 기술 발전을 기반으로, LLM을 활용한 현실 세계의 취약점 탐지 가능성에 대한 다수의 연구 사례가 공개되고 있습니다.
그럼, 오펜시브 보안 분야의 학계 및 산업계에서 진행되고 있는 연구들을 살펴보겠습니다. 먼저, 퍼징 관련 연구입니다.
Google의 OSS-Fuzz와 AI의 만남: OSS-Fuzz-Gen
오픈 소스 테스팅(Open Source Testing)은 이전부터 꾸준히 연구되고 있는 분야입니다. 그중에서도 Google의 OSS-Fuzz는 오픈 소스 프로젝트에 대해 자동으로 퍼징 테스트를 돌려 취약점을 탐지하는 플랫폼으로, 다양한 언어를 지원하며 8년 이상 운영되고 있습니다. 그러나 기존의 OSS-Fuzz는 시드 코퍼스(Seed Corpus, 테스트 입력)와 퍼저 하네스(Fuzzer Harness, 테스트 프로그램)를 인간이 직접 작성해야 했고, 커버리지(Coverage)는 대부분 30% 수준이었습니다. 이런 한계점을 극복하기 위해 시작된 프로젝트가 LLM을 활용하여 자동으로 하네스를 생성하는 OSS-Fuzz-Gen입니다.
OSS-Fuzz-Gen에서는 LLM이 사전에 제공된 Application Programming Interface(API) 리스트를 토대로 하네스를 자동 생성합니다. 컴파일(Compile) 오류가 발생하면, LLM은 오류 메시지를 토대로 하네스를 수정하여 실행 가능하도록 만듭니다. 퍼징 수행 후에는, 하네스의 커버리지를 평가하고, 이를 토대로 하네스를 개선하는 일련의 프로세스를 반복합니다. 해당 과정을 통해 전문 인력의 리소스를 줄이면서도, 기존보다 더 효율적으로 퍼징 테스트를 수행할 수 있었습니다.
OSS-Fuzz-Gen 사용 결과, TinyXML2 프로젝트의 경우 OSS-Fuzz에서의 커버리지 대비 31% 수준의 추가 커버리지를 확보할 수 있었고, 그 외 대부분의 프로젝트에서도 1~10% 범위의 커버리지 증가를 확인할 수 있었습니다. 이는 OSS-Fuzz-Gen이 단순 테스팅 플랫폼을 넘어, 지속적인 코드 품질 개선 도구로 기능할 수 있는 가능성을 보여줍니다.
LLM 기반 퍼징 연구: PromptFuzz
OSS-Fuzz-Gen 이후에도 LLM을 활용한 퍼징 연구는 계속되고 있습니다. 주목할만한 대표 사례는 PromptFuzz(Prompt Fuzzing for Fuzz Driver Generation)입니다. 2023년 11월 발표된 PromptFuzz는 헤더(Header) 파일에서 API 함수와 관련된 타입을 파싱(Parsing)해 자동으로 하네스를 생성하는 방식으로 사전 준비 작업의 비용을 줄였습니다. 또한 기존 OSS-Fuzz-Gen이 단일 API에 대한 하네스를 생성했다면, PromptFuzz는 API 간의 상호작용에서 발생할 수 있는 오류까지 고려하여 API 시퀀스(Sequence) 단위로 하네스를 생성할 수 있게 되었습니다.
그 외에도 퍼징 결과를 토대로 테스트 입력이 가져야 하는 제약 조건을 분석함으로써, 트리비얼 브랜치(Trivial Branch)를 회피하고 새로운 유니크 브랜치(Unique Branch)를 커버하는 프로세스를 제안하기도 습니다. PromptFuzz는 이와 같은 다양한 시도를 통해 커버리지를 높여 소프트웨어 테스팅의 효율성을 향상시켰습니다.
다음으로 살펴볼 연구는 Google Project Zero 팀의 Naptime 프로젝트입니다.
Google Project Zero 팀의 Project Naptime
많은 오펜시브 보안 연구자들이 Google Project Zero 팀이 공개한 또 하나의 LLM 활용 사례 프로젝트인 Naptime에 주목하고 있습니다. Sergei Glazunov와 Mark Brand가 주도한 이 연구는 오펜시브 보안 분야에 LLM을 적용하는 가능성에 대해 논의하고 있습니다.
올해 초 Meta에서 메모리 안전성 관련 버그 발견 및 익스플로잇(Exploit)에 대한 LLM 벤치마크(Benchmark)인 CyberSecEval 2를 공개한 바 있습니다. Project Zero 팀은 취약점 발견 효율을 증대시킨 LLM 기반 퍼징 프레임워크를 통해 이 벤치마크 결과를 최대 20배까지 높이는 결과를 얻어냈습니다. Project Zero 팀은 “LLM이 우리 대신 일을 함으로써, 우리가 낮잠을 잘 수 있게 만들어줄 잠재력이 있다고 생각해서” 해당 프로젝트를 “Naptime”이라고 명명했다고 합니다.
도출된 결과물은 다수의 선행 연구에서 공개된 LLM의 강점을 최대한 활용하도록 고안된 퍼징 프레임워크(Framework)의 설계에서 기인하고 있습니다. 자세한 내용은 해당 포스트에서 확인할 수 있습니다. 설계의 주요 원칙들은 아래와 같습니다.
구체적인 컨텍스트(Context)가 주어진 상황에서 LLM의 광범위한 추론을 장려하는 것
인터렉티브(Interactive)한 환경 구축을 통해 잘못된 결과를 조정할 수 있도록 하는 것
보안 연구자와 마찬가지로 취약점 연구에 필요한 디버거(Debugger)나 스크립팅(Scripting) 환경을 LLM에게 제공하여 정확하게 계산하고 프로그램 상태와 에러를 효율적으로 처리할 수 있도록 하는 것
취약점 발견 과정을 구조화하여 잠재적인 솔루션이 완벽하게 검증되도록 만들어 벤치마크 결과를 신뢰할 수 있고, 재현 가능하도록 만드는 것
여러 독립적인 경로를 통해 다수의 가설(취약점 발견 및 익스플로잇)을 탐색하고, 효율적으로 검증할 수 있도록 하는 샘플링(Sampling) 전략
위 구조도에서 확인할 수 있듯이 Naptime 아키텍처에서는 AI 에이전트(Agent)가 인간 보안 연구원의 워크플로우(Workflow)를 모방하여, 디버거 및 타겟 코드베이스(Target Codebase)를 탐색하는데 사용되는 코드 브라우저(Code Browser), 파이썬(Python), 그리고 전반적인 프로세스를 파악하고 확인하는 리포터(Reporter)를 포함한 다양한 도구를 활용하여 인간의 역할을 대신하고 있습니다. 즉, 오펜시브 보안 연구원들이 사용하는 도구와 LLM이 결합된 형태입니다.
Naptime은 이를 통해 반복적이고, 가설 기반의 접근 방식을 취하는 보안 연구원을 모방하는 취약점 연구 방식을 LLM을 통해 구현하고 있으며, 특히 위에서 소개한 설계 원칙들을 통해 취약점 식별 능력뿐 아니라 결과의 재현 가능성을 보장하고 있습니다.
Naptime은 상용 LLM(예: GPT, Gemini)을 AI 에이전트로 활용하여 비교 분석을 통해 성능 평가를 진행했습니다. 벤치마크로 사용된 Meta의 CyberSecEval 2에 대한 소개와 각 메모리 취약점(예: Buffer overflow, Advanced memory corruption)에 대한 자세한 평가(Evaluation) 결과 및 수치는 Project Zero 블로그 포스트를 통해 확인할 수 있습니다.
결론적으로, Project Zero 팀에서는 Naptime과 같이 적절한 환경이 갖춰진 경우, LLM이 기본적으로 격리된 CTF(Capture The Flag) 스타일의 보안 문제를 해결하는 일에 사용될 수 있음을 확인했습니다. 하지만, CTF와 달리 현실(Real World)에서는 대규모의 시스템을 이해하고, 공격자 입장에서 어떤 요소가 중요한지 판단하고 분석하는 일련의 과정이 더 중요합니다. 따라서, 실제 환경에서 비슷하게 좋은 성능을 낼 것이라 보장하기는 어렵습니다. Project Zero 팀이 언급한 것처럼, 인간의 작업을 완벽히 모방하기 위해서는, 결국 보안 전문가들이 복잡한 추론, 가설 생성 및 검증을 계속해서 반복하는 것과 마찬가지로 LLM에게도 동일한 유연성을 제공할 수 있어야 할 것입니다.
취약점 자동 탐지에 대한 관심은, 최근 DEF CON에서 준결승이 진행된 AIxCC(AI Cyber Challenge)에서 잘 드러납니다. 티오리의 AIxCC에 대한 내용은 해당 포스트에서 보다 자세히 다루고 있습니다.
AIxCC: AI를 활용한 오픈 소스 보안 강화 챌린지
최근 미국 DARPA(방위고등연구계획국, Defense Advanced Research Projects Agency)에서 AIxCC를 개최했습니다. 오늘날 많은 소프트웨어는 유기적으로 연결되어 있고, 이는 공격 표면의 급격한 확장으로 이어졌습니다. 또한, 오픈 소스 소프트웨어의 빠른 발전과 광범위한 활용은 오픈 소스 소프트웨어 보안의 중요성을 더욱 부각하는 계기가 되었습니다. 오픈 소스 소프트웨어가 사회 기반 인프라(예: 교통, 에너지, 응급 시스템)에서도 사용되고 있기 때문에, 오픈 소스의 안전성에 대한 고민이 필요했고, 오픈 소스가 정말 안전하다고 확신할 수 있는지 의문이 제기되었습니다.
이러한 문제의식에서 시작된 AIxCC는 AI 시스템을 개발하여 오픈 소스 소프트웨어의 보안 취약점을 자동으로 탐지하고, 증명하고, 패치(Patch)하는 능력을 경쟁하는 대회입니다. 다양한 언어로 작성된 오픈 소스 프로젝트가 참가자들에게 제공되며, 첫 커밋(Commit)에서는 취약점이 없다는 가정 하에, 이후의 커밋에서 발생하는 취약점을 AI를 통해 자동으로 찾아내야 합니다. 참가자들은 취약점이 발생한 커밋 해시(Hash), 문제가 발생한 입력 코포라(Corpora, 말뭉치), 패치를 제출하여 시스템의 능력을 증빙해야 합니다.
DARPA의 과거 사례: CGC와의 비교
2016년 DARPA가 주최한 CGC(Cyber Grand Challenge)는 로우 레벨(Low Level)의 기술(예: 실행 파일 수준에서의 패치 진행)을 요구했습니다. 반면 AIxCC는 오픈 소스를 가정하고 LLM을 활용한다는 특징이 있습니다. AIxCC 참가자는 LLM을 통해 소스 코드 레벨에서 취약점을 탐지하고, 이를 분석해 패치해야 하며, 이 과정에서 대회 시스템이 제공하는 LLM API만을 사용할 수 있습니다. 소스 코드 수준에서 문제를 해결한다는 점이 기존 CGC와의 가장 큰 차이입니다.
마치며
이번 포스트에서는 오펜시브 보안 분야에서의 LLM 활용 사례에 대해 알아보았습니다. LLM의 코드 이해 및 생성 능력이 발전함에 따라, 소프트웨어 보안과 테스트 자동화 분야에서 AI의 역할은 점점 더 커지고 있습니다. Google, DARPA, Meta를 비롯한 다양한 기관 및 기업들이 LLM을 활용해 코드의 취약점을 자동으로 탐지하고 수정하는 방식에 주목하고 있습니다. 비록 복잡한 문제에서는 아직 AI의 한계가 존재하지만, 이러한 기술들은 앞으로 더 발전해 오픈 소스 보안 강화에 기여할 것입니다.
기술의 발전이 인간의 자리를 앗아가는 것에 대한 우려의 시각이 있지만, Security Assessment 팀의 연구원들은 오펜시브 보안 분야 LLM에 대한 연구가 더 발전하여 조금 더 많은 자유시간을 가져다 주기를 기대하고 있습니다. 2부에서는 저희 팀이 주로 다루는 웹 서비스의 보안과 관련된 LLM 활용 사례들을 보다 깊이 있게 살펴보겠습니다.
About Theori Security Assessment
티오리 Security Assessment 팀은 실제 해커들의 오펜시브 보안 감사 서비스를 통해 고객의 서비스와 인프라스트럭처를 안전하게 함으로써 비즈니스를 보호합니다. 특히, 더욱 안전한 세상을 위해 난제급 사이버보안 문제들을 해결하는 것을 즐기며, 오펜시브 사이버보안의 리더로서, 공격자보다 한발 앞서 대응하고 불가능하다고 여겨지는 문제를 기술중심적으로 해결합니다.