AI의 확산이 CTF 경쟁과 문제 출제 생태계에 미치는 영향, 그리고 CTF의 미래를 위한 가능한 방향을 제안한다.
올해 초, 나는 솔로로 경쟁하기 시작했다. 직장/사이드 프로젝트 등으로 쓰고 남은 claude max 플랜을 활용하고 워크플로를 최적화해 CTF 대회에서 꾸준히 상위권을 차지했고, 결국 세계 1위까지 올라갔다.
간단히 개요를 말하자면: CTF는 capture-the-flag의 약자로, 사용자가 다양한 카테고리(웹, 리버스 엔지니어링, 암호학, 포렌식 등)의 문제를 풀어 플래그를 찾아내는 사이버보안 대회다. ctftime는 전 세계 상위권 대회를 추적하는 주요 웹사이트이며, 사용자의 순위는 상위 10개 점수와 그해 본인이 개최한 대회의 모든 포인트 레이팅 합의 두 배를 기준으로 산정된다. 보통은 수십~수백 명의 멤버가 있는 대형 팀들과 단 한 사람이 경쟁하는 것은 불가능하지만, AI의 힘으로 그게 가능해졌다. 이제는 대부분의 쉬운 문제들이 "AI slopped"로, 사람의 개입 없이도 풀린다.
AI는 CTF의 수동 풀이 측면(예: 학습, 팀원과의 협업 등)을 없애고 있을 뿐 아니라, AI만 들여다볼 상황이라면 문제 출제자들이 문제를 만들 의욕마저 잃게 만든다. 요즘 CTF 플레이어는 두 부류로 나뉜다. AI를 쓴다고 인정하는 사람과, 인정하지 않는 사람. 실제로 AI를 전혀 쓰지 않는 예외도 있긴 하지만, 그런 경우 십중팔구 리더보드 하위 절반에 있거나, 대형 팀에서 최상급 문제 하나에만 집중하는 경우가 많다. 그렇지 않다면, AI가 이미 대부분의 문제를 풀 수 있고 시간이 갈수록 더 좋아지는데 굳이 배우고 풀 줄 아는 법을 익힐 이유가 무엇인가?
물론 여기에는 "하지만"이 따라오겠지만, 그 전에 나는 이것이 현재 큰 문제라는 데 동의하며, 이것이 내가 이런 일을 하게 된 동기 중 하나였다고 말하고 싶다. 나는 1월 이후로 사실상 매주 주말마다 주중 여러 대회에 참가했고, 대부분에 대해 라이트업을 올렸다. 2023년에 GPT-4가 나왔을 때부터 수년간 이런 흐름이 올 것을 봐 왔다.
그 해는 내가 CTF를 솔로로 시작한 해이기도 하다. 나는 CTF가 전 세계 규모로 코딩/문제 해결 실력을 겨룰 수 있는 거의 유일한 방식 중 하나라고 늘 생각해 왔고 관심도 컸다. 하지만 전기공학도인 내 입장에서 기본기를 배우는 게 너무 어렵고, 투자 대비 의미도 없어 보였다. 시간이 지나면서 나는 점점 실력이 늘었지만, 그것이 경험 덕분인지 AI의 발전 덕분인지 구분하기가 어려웠다. 지금 와서는 크게 중요하지도 않다. 나는 세계에서 가장 어려운 CTF 대회 중 하나에서 대부분의 문제를 3시간 안에, 거의 수동 개입 없이 풀어내는 시스템을 만들었다. 그리고 그와 함께, 내가 받아본 것 중 가장 큰 수준의 악의도 받았다.
내가 오직 가장 고귀한 의도만 가지고 있었다고(예: 사이버보안 연구와 비슷한 정신으로, 큰 문제를 미리 방어적으로 드러내려는 목적) 말하고 싶지만, 이력서를 채우기 위해서이기도 했고, 내가 만든 AI 스타트업(krauq.ai)을 홍보하기 위해서이기도 했다. 나중에 따로 글을 쓸 수도 있지만, 기본적으로 krauq.ai는 원래 일반 대중을 대상으로 만들었으나 CTF 사용자층을 대상으로 홍보했고, 그 결과 800명 이상의 사용자, 구독자 1명, 그리고 수백 달러의 손실로 이어졌다. 아마 곧 종료할 것 같다. 어쨌든 내 동기의 최소 일부는, AI가 무엇을 할 수 있는지, 그리고 더 많은 사람들이 claude code나 codex 같은 도구에 익숙해지면 무엇이 벌어질지 보여주는 것이었다. 나는 claude max 플랜이 나오자마자 구독했고, 매주 한도를 다 쓰는 것을 일종의 동기부여로 삼았으며, 그 과정에서 결과를 개선하기 위한 몇 가지 요령도 익혔다. 이후 더 큰 팀으로 경쟁하면서, AI를 이용해 최소한의 가이던스만으로도 내가 시도한 어려운 문제 대부분을 풀 수 있는 수준에 도달했다. 내가 할 수 있다면 다른 사람도 할 수 있고, CTF는 결국 토큰을 태우는 복권이 될 것이었다.
나는 목표를 이뤘고, 그래서 적어도 지금은 CTF를 그만두려 한다. 내가 아는 한, 상위 100 안에 드는 1인 팀은 다른 곳에 없고, 동시에 많은 사람들이 그것이 가능하다는 것을 알게 됐다. 그래서 문제가 더 커지기 전에 이를 부각시켰다고 생각하고 싶다. 그렇다면 이걸 어떻게 고칠까? 팀과 출제자가 의욕을 잃는 건 좋지 않다. CTF가 죽는 것도 좋지 않다. AI는 나쁘다. 아니면 그런가?
AI에 대한 대중의 정서는 수년간 꾸준히 악화되고 있다. 예술가를 실직하게 만들고, 코딩 일을 더 지루하게 만드는 등 여러 분야에 큰 부정적 영향을 미치고 있으며, 그 목록은 끝이 없다. 하지만 AI는 (아마도) 계속 존재할 것이니 우리가 할 수 있는 건 적응뿐이다. 이제 우리는 AI의 최악의 면을 꽤 명확히 본 것 같다. 도구를 잘 쓰는 것보다 못 쓰는 것이 훨씬 쉽고, 그 결과로 생기는 온갖 slop도 봐 왔다. 그러나 나는 꼭 그럴 필요는 없다고 주장하고 싶다. AI가 꼭 slop을 만들어야 하는 건 아니다. AI가 꼭 CTF를 죽여야 하는 것도 아니다.
AI는 도구이고, 학습 곡선이 있다. 상위 연봉의 테크 기업들(이제 MANGO라고 부르나?)은 지원자의 AI 활용 경험과 실력을 평가하기 시작했고, 그럴 만한 이유가 있다. 이제 AI는 필수다. 고연봉 개발 직무에서 코더가 AI를 쓰지 않는 것은 사실상 불가능해졌다. 그렇다면 사람들은 어떻게 AI를 더 잘 쓰게 될까? 그리고 어떻게 자신이 더 잘한다는 것을 증명할까? 지금도 여전히 leetcode밖에 없고, 사람들은 AI 이전부터도 이미 그걸 시간 낭비라고 여겼다. 만약 사람들이 AI를 쓰는 실력을, 어떤 경쟁적 형식으로든 뽐낼 수 있는 방법이 있다면 어떨까?
생각보다 글이 길어져서, CTF의 미래에 대한 내 아이디어로 건너뛰겠다. AI는 CTF를 훨씬 더 접근 가능하게 만들지만, 대부분의 사람들은 이를 잘 모른다. 상위 테크 기업들은 여전히 CTF에 큰 관심이 없다(적어도 내 구직 지원을 기준으로 보면). 바꿔보자. CTF의 Jeopardy 형식(정해진 카테고리의 문제들을 푸는 방식)은 계속 남을 거라고 보지만, 지금처럼 편안하진 않을 것이다. 보조금을 얹은 AI 구독 플랜은 지속 가능하지 않고, 결국 일반 사람들은 더 많은 돈을 내게 될 것이다. 지금도 이미 CTF 대회에 수천 달러를 쓰는 스크린샷이 올라오고 있는 만큼, CTF를 pay-to-win으로 만들고 싶지 않다면 AI 풀이를 수용해서 1~2시간짜리 플래시 CTF로 줄여야 한다(그래야 사람들이 $20 구독으로도 승산이 생긴다). 아니면 출제자들이 AI를 사용해 문제를 만드는 법을 배우는 데 상당한 시간을 투자해야 한다.
"이 문제를 풀어"라고 말하는 것처럼 "문제를 만들어"라고 말하는 것만으로는 해결되지 않는다. 최신 사이버보안 동향을 AI로 학습하는 과정이 필요하다. 최첨단 연구, 권고문 읽기, 제로데이 익스플로잇 만들기 같은 것들 말이다. 수동 풀이 능력을 계속 의미 있게 유지하는 것이 목표라면, 이런 종류의 일이 필요하다. 사람들은 여전히 AI로 도움을 받을 것이고(아마 그래야 하겠지만), 그렇게 하면 각 문제는 더 의미 있는 사람의 상호작용을 요구하게 된다. 가능하다. 다만 더 어렵다.
또 다른 방법은 실제 문제를 푸는 것이다. 예를 들어 CTF를 leetcode와 합치면 어떨까? 정립된 문제 설명과 평가용 테스트를 두는 방식이다. 학계 연구의 최전선을 전면에 가져오고, 각 분야의 논문을 정리해 통합하고, 프런티어의 정의를 세운 뒤, 사람들을 경쟁적 형식으로 모아 발전을 만들어낼 수 있다. 또는 더 쉬운 방식으로, 사람들이 자신의 문제를 CTF 커뮤니티에 가져와 풀게 할 수도 있다. 보안 감사가 필요하나? 확장 성능과 보안을 갖춘 SaaS 개발이 필요한가? 일반적인 데이터 분석이나 문제 해결이 필요한가? 그들의 돈이 포인트 시스템이 되고, 모든 것을 추적해 리더보드를 만든다.
이 아이디어들은 전혀 다듬어지지 않았고, 맞다. 이건 더 이상 전통적인 CTF가 아닐 수도 있다. 하지만 전 세계가 AI에 적응하고 있고, 감독(proctored) CTF 대회가 전통적인 CTF를 살리는 데 할 수 있는 일에는 한계가 있다. 장면(scene)이 죽고 모두 흩어지기 전에, 의미 있는 무언가를 만들기 위해 장기적으로 생각해야 한다. 더 크게 생각하고, 열린 마음을 유지하자.