한 보안 연구자가 AI를 풀어놓고 구글의 API 수천 개를 훑게 했습니다. 3개월 뒤 손에 쥔 건 50만 달러의 버그 바운티였죠. 그런데 정작 연구자는 “AI가 한 일은 독창적인 게 아니었다”고 말합니다.

보안 연구자 Brutecat(Arvin Shivram)이 자신의 블로그에 AI를 활용한 구글 취약점 사냥 과정을 공개했습니다. 그는 친구 Michael Dalton과 함께 구글의 비공개 API 1,500여 개를 AI가 사람처럼 테스트하도록 만드는 시스템을 구축했고, 약 3개월간 돌린 결과 50만 달러 규모의 보안 취약점을 찾아냈습니다. 흥미로운 건 결과의 크기가 아니라, AI가 효과적이었던 이유입니다.
출처: Hacking Google with A.I. for $500,000 – Brutecat
AI에게 “구글 보안 연구자처럼 행동하라”고 시키다
구글의 거의 모든 서비스에는 API가 깔려 있습니다. 이 API들의 명세서에 해당하는 ‘디스커버리 문서(discovery document)’를 수집하면, 어떤 엔드포인트가 어떤 입력을 받는지 기계가 읽을 수 있는 형태로 알 수 있습니다. 연구자는 이 문서 1,500여 개를 확보한 뒤, 각 API를 호출하고 결과를 분석하는 작업을 AI에게 맡기기로 합니다.
핵심은 AI가 사람 연구자처럼 일하도록 도구를 쥐여준 것입니다. 그는 API를 직접 호출하는 기능을 MCP(Model Context Protocol) 도구로 만들어 AI에 연결했습니다. AI가 받은 임무는 간단했습니다. 권한 검사가 빠진 엔드포인트, 즉 “남의 데이터를 그냥 읽거나 바꿀 수 있는” 접근 제어 결함을 찾는 것이죠. 작동 방식을 단순화하면 다음과 같습니다.
- AI가 특정 API 그룹을 받아 엔드포인트를 하나씩 호출(probe)한다
- 다른 ID 값과 인증 상태로 여러 번 시도하며 응답을 비교한다
- 권한이 없어야 할 데이터에 접근되면 취약점으로 보고한다
- 모든 엔드포인트를 테스트할 때까지 끝내지 못하게 강제한다
마지막 항목이 중요합니다. 처음엔 AI가 몇 번 찔러보고는 “다 됐다”며 일찍 손을 놓아버렸거든요. 그래서 연구자는 모든 엔드포인트를 최소 한 번씩 테스트해야만 작업을 종료할 수 있게 만들었습니다.
처음엔 90%가 쓰레기였다
시스템을 돌리자마자 성과가 쏟아진 건 아닙니다. 초기에 AI는 버그를 몇 개 찾긴 했지만, 그 주변은 온통 노이즈였습니다. 연구자의 표현으로는 결과의 약 90%가 쓸모없는 것들이었죠. 두 가지 문제가 있었습니다.
첫째는 검증의 어려움이었습니다. AI가 “취약점을 찾았다”고 보고해도, 그게 진짜인지 확인하려면 사람이 직접 같은 요청을 재현해봐야 했습니다. AI가 지어냈을 수도 있으니까요. 둘째는 노이즈였습니다. AI는 실제로는 악용할 수 없는 것, 버그라 부르기 애매한 것까지 죄다 보고했습니다.
이 시스템을 쓸 만하게 만든 건 더 똑똑한 모델이 아니라, 사람이 설계한 두 가지 장치였습니다.
검증 문제는 ‘재생(replay) 시스템’으로 풀었습니다. AI가 API를 호출할 때마다 고유한 작업 번호가 붙고, 보고서에는 반드시 이 번호를 포함하게 했습니다. 그러면 화면에서 버튼 하나로 그 요청을 그대로 다시 실행해 버그가 진짜인지 즉시 확인할 수 있습니다. 지어낼 수 없는 실제 기록이 증거로 남는 셈이죠.
노이즈 문제는 더 끈질긴 작업이었습니다. “무엇을 보고하고 무엇을 보고하지 말아야 하는가”를 시스템 프롬프트에 명확히 적어넣는 일을, 연구자는 한 달 넘게 다듬었다고 합니다. 예를 들어 ‘ID를 추측해서 어떤 자원이 존재하는지 알아내는 것’은 그 자체로는 취약점이 아니므로 보고하지 말라는 식의 기준을 촘촘하게 박아넣었습니다. 이 두 장치가 자리잡자, AI는 50% 이상의 정확도로 버그를 찾기 시작했고 검토는 단순 작업이 됐습니다.
AI가 잘했던 건 ‘독창성’이 아니라 ‘규모’였다
이 글에서 가장 곱씹어볼 대목은 연구자 본인의 결론입니다. AI가 찾아낸 버그들은 기발한 해킹이 아니었습니다. 오히려 어디서나 똑같이 반복되는 뻔한 실수들이었죠. 다른 사용자의 자원에 권한 검사가 빠져 있거나, 디버그용 엔드포인트가 운영 환경에 그대로 노출돼 있거나, 테스트용 환경이 실제 데이터를 가리키고 있는 식이었습니다.
실제로 발견된 사례 중에는 구글 보이스의 관리 API에 접근 제어가 전혀 없어 피해자의 전화번호와 계정 복구용 번호까지 노출된 것, 넷플릭스·디즈니 같은 기업이 쓰는 DRM 시스템 Widevine의 파트너 콘솔에서 모든 조직과 키 정보를 들여다볼 수 있던 것 등이 있었습니다. 하나같이 “복잡한 우회”가 아니라 “있어야 할 검사가 없어서” 뚫린 경우였습니다.
연구자는 이렇게 정리합니다. AI의 역할은 새로운 것을 발명하는 게 아니라, 사람 혼자서는 도저히 다 훑을 수 없는 거대한 표면 위에서 뻔한 것을 지치지 않고 점검하는 것이었다고요. 인간 연구자라면 지루함과 피로 때문에 1,500개 API를 끝까지 동일한 집중력으로 점검하기 어렵습니다. AI에게는 그 ‘지치지 않음’이 곧 무기였습니다.
의미
이 사례는 AI를 보안 연구에 쓴다는 것이 무엇을 뜻하는지 구체적으로 보여줍니다. 화제가 되는 건 ’50만 달러’라는 숫자지만, 실제 교훈은 그 옆에 있습니다. AI는 판단이 필요한 창의적 부분이 아니라, 규모와 반복이 지배하는 단순 노동 영역에서 위력을 발휘했습니다. 그리고 그 위력은 모델 자체보다 그것을 감싼 검증 장치와 명확한 지시에서 나왔습니다.
동시에 한계도 분명합니다. AI가 던진 단서의 상당수는 사람이 직접 확인하고 더 심각한 공격으로 발전시켜야 했습니다. 실제로 연구자가 과거 발견한 원격 코드 실행 취약점도 처음엔 AI가 흘린 단서에서 출발한 것이었습니다. AI는 넓게 훑는 그물이었고, 그 그물에 걸린 것을 가려내 가치를 매기는 일은 여전히 사람의 몫이었습니다.
원문에는 GraphQL API 퍼징으로의 확장, 발견된 각 취약점의 상세한 요청·응답 등 기술적인 내용이 훨씬 풍부하게 담겨 있습니다. 보안 연구의 실제 작동을 깊이 들여다보고 싶다면 원문을 직접 읽어보시길 권합니다.

답글 남기기