보안 도구와 샌드박스의 배신
우리는 방패를 믿었다.
보안 스캐너가 지켜줄 거라고. 샌드박스가 가둬줄 거라고. "당연히 안전하다"고 생각했다. 2026년 3월, 그 믿음이 세 번 연달아 배신당했다.
같은 달에, 거의 같은 주에, 보안의 근간이라고 여겼던 것들이 무너졌다. 하나는 보안 스캐너였고, 하나는 AI 샌드박스였고, 하나는 에이전트 프레임워크의 격리 기능이었다.
첫 번째 배신은 보안 스캐너에서 왔다.
Trivy. 이름이 낯설 수 있지만, 개발자들에게는 공기 같은 도구다. 컨테이너 이미지 안에 보안 취약점이 있는지 검사해주는 스캐너다. GitHub 스타 25,000개 이상. 사실상 업계 표준이다. 코드를 배포하기 전 마지막으로 "이거 안전해?"라고 물어보는 관문 역할을 한다.
3월 19일, 그 관문이 적의 손에 넘어갔다.
공격자는 자신을 "TeamPCP"라고 불렀다. 이들은 Trivy의 GitHub 환경에서 잘못 구성된 설정을 이용해 특권 접근 토큰을 빼냈다. 그리고 그 토큰으로 76개 버전 태그를 통째로 바꿔치기했다. 악성 바이너리를 공식 릴리즈인 것처럼 올렸다. 버전 이름은 v0.69.4.
이 가짜 Trivy가 하는 일은 단순했다. AWS 키, GitHub 토큰, Docker 인증 정보 — CI/CD 파이프라인에 저장된 소중한 비밀들을 몽땅 수집해서 공격자의 서버로 전송하는 것이었다. 보안을 지키라고 설치한 도구가, 보안의 열쇠를 훔치고 있었다.
거기서 멈추지 않았다. 공격자는 탈취한 npm 토큰을 이용해 CanisterWorm이라는 웜을 47개 패키지에 심었다. 웜은 스스로 복제하면서 퍼져나갔다. Docker 이미지를 통한 정보 탈취와 Kubernetes 와이퍼까지 확인됐다. 최종적으로 Aqua Security의 44개 리포지토리가 훼손됐다.
소방관이 방화범이 된 격이다. 보안 회사의 보안 도구가, 보안을 뚫는 무기가 됐다.
CrowdStrike는 이 사건을 분석하면서 제목을 이렇게 붙였다. "스캐너에서 스틸러로(From Scanner to Stealer)." 한 줄로 모든 게 설명됐다.
두 번째 배신은 샌드박스에서 왔다.
Amazon Bedrock의 AI 코드 실행 환경이다. 에이전트가 코드를 실행하는 격리된 공간. 밖과 통신할 수 없어야 한다. 문은 잠겨 있고, 창문도 없고, 인터넷도 차단돼 있다. 안전한 방이다.
그런데 딱 하나. DNS 조회는 허용돼 있었다.
DNS가 뭐냐면, 인터넷의 주소록이다. "이 웹사이트의 IP 주소가 뭐야?"라고 물어보는 것. 아주 기본적인 기능이라 대부분의 환경에서 허용한다. 물 한 잔 달라는 정도의 요청이라고 생각한 거다.
하지만 보안 연구팀 BeyondTrust는 그 "물 한 잔"으로 탈옥에 성공했다.
DNS 쿼리에 명령을 실어 보내고, DNS 응답에 데이터를 실어 받는 양방향 터널을 만들어냈다. 이 방법으로 AWS의 저장소에 있던 고객 개인정보, API 키, 재무 기록을 빼내는 시연에 성공했다. 이 구멍은 서비스가 출시된 2025년 8월부터 7개월간 열려 있었다.
가장 놀라운 건 AWS의 대응이었다. "의도된 기능입니다." 패치를 거부했다. 격리된 방에 문이 하나 열려 있었는데, "원래 그런 설계입니다"라고 말한 셈이다. 대신 문서를 업데이트해서 "샌드박스 모드는 DNS 해석을 허용합니다"라고 명시했다.
OpenClaw도 같은 달에 샌드박스 관련 취약점이 공개됐다. 샌드박스 안에서 샌드박스가 꺼진 자식 프로세스를 만들 수 있었다. 격리된 방에서 격리되지 않은 방을 만드는 탈옥이다. 경로 순회를 통해 작업 디렉토리 밖의 파일을 읽고 쓰는 취약점도 함께 발견됐다.
이전 글에서 다뤘던 NVIDIA의 OpenShell이 정확히 이 문제를 해결하려고 만들어진 것이다. 커널 레벨 격리, deny-by-default 네트워크. 하지만 Bedrock의 DNS 사례가 보여주듯, "기본적으로 다 막고 일부만 허용"하는 방식에서도 허용된 그 "일부"가 탈출구가 될 수 있다.
세 사건을 나란히 놓으면 공통점이 선명하다.
Trivy. "스캐너니까 안전하다." 그 스캐너가 악성 코드를 배포했다.
Bedrock. "샌드박스니까 격리됐다." DNS 한 줄이 격리를 무너뜨렸다.
OpenClaw. "샌드박스 안이니까 안전하다." 자식 프로세스가 벽을 허물었다.
"당연히 안전하다"는 믿음. 그 믿음 자체가 공격의 출발점이었다.
AI 시대에 이건 더 위험해진다. 전통적인 소프트웨어는 사람이 실행 버튼을 누른다. AI 에이전트는 스스로 판단하고 행동한다. 샌드박스에 구멍이 있으면, 에이전트가 그걸 "발견"하고 이용할 수 있다. 의도적이든, 프롬프트 인젝션에 의해서든.
공급망도 더 길어졌다. 모델, 프레임워크, 플러그인, 실행 환경, CI/CD 도구. 체인이 길어질수록 가장 약한 고리가 뚫릴 확률은 올라간다. DNS처럼 "당연히 열어두는" 통로도 많다. 열어둔 문 하나가 전체를 무너뜨린다.
이번 주 샌프란시스코에서 열린 RSAC 2026에서 업계의 답이 나오고 있다.
Microsoft는 AI 에이전트를 엔드포인트와 동급의 보안 대상으로 선언했다. 에이전트도 사람처럼 신원을 확인하고, 권한을 제어하고, 행동을 모니터링하겠다는 것이다. Cisco는 OpenClaw 전용 보안 솔루션인 DefenseClaw를 발표했다. "나도 집에서 OpenClaw를 돌린다. 그래서 DefenseClaw를 만들었다"라는 블로그 제목이 인상적이었다.
에이전트 보안이라는 새로운 보안 카테고리가 탄생하고 있다. 네트워크 보안, 엔드포인트 보안, 클라우드 보안 다음의 네 번째 레이어다.
하지만 근본적인 교훈은 도구가 아니라 태도에 있다.
보안 스캐너니까 안전하다? Trivy가 아니라고 증명했다. 샌드박스니까 격리됐다? Bedrock이 아니라고 증명했다. deny-by-default니까 괜찮다? 허용된 한 줄이 전부를 무너뜨릴 수 있다.
"당연한 안전"은 없다.
신뢰하되, 반드시 검증하라.