하나의 프롬프트가 리전 내 모든 에이전트를 장악했다. 감사 로그는 폭발 반경 안에 있었다.
요약
Zenity Labs는 AWS Bedrock AgentCore 환경에서 단 하나의 프롬프트를 사용하여 동일한 AWS 계정 및 리전 내의 모든 에이전트(재무, HR 등)를 장악하는 시연을 했습니다. 이 공격은 에이전트가 메타데이터 엔드포인트에 접근하여 임시 STS 자격 증명을 획득하고, 지역 전체 플릿에 걸쳐 권한을 확장하는 단일 기본 실행 역할을 악용했기 때문입니다. 클라우드 보안의 경계는 더 이상 머신 자체가 아니라, 모든 에이전트에 적용되는 '단일 기본 실행 역할'이라는 ID 계층이었음이 드러났습니다.
핵심 포인트
- 하나의 프롬프트로 리전 내 모든 에이전트 장악 가능성 시연됨.
- 공격은 메타데이터 엔드포인트 접근 및 임시 STS 자격 증명 획득을 통해 이루어짐.
- 클라우드 보안 취약점은 머신 경계가 아닌, 단일 기본 실행 역할(ID 계층)에 존재함.
- 최소 권한 원칙 준수와 컴퓨팅 격리(Firecracker VM)는 작동했으나 ID 계층이 핵심 취약점으로 지적됨.
10월 8일 토론토에서 열린 SecTor 컨퍼런스에서 한 보안 업체가 모든 클라우드에 에이전트를 도입하는 기업들이 앉아서 들어야 할 무언가를 시연했습니다.
Zenity Labs의 연구원들은 Amazon Bedrock AgentCore(AWS가 엔터프라이즈 에이전트 배포를 위해 관리하는 플랫폼이며, Sony와 Ericsson 등이 고객으로 이름을 올리고 있습니다)에서 실행되는 단일 공개형 AI 에이전트에 하나의 채팅 메시지를 보냈습니다. 이 프롬프트는 해당 에이전트에게 내부 주소로 간단한 아웃바운드 요청을 하도록 요청했습니다. 그 하나의 메시지를 통해 연구원들은 동일한 AWS 계정 및 리전에 있는 모든 AgentCore 에이전트: 처음 접촉했던 에이전트를 포함하여 내부 재무 에이전트, HR 에이전트, 모든 동료들을 장악했습니다.
그들은 모든 에이전트의 개인 대화와 장기 메모리를 읽었습니다. 그들은 모든 에이전트의 컨테이너 이미지를 다운로드하고 소스 코드를 읽었습니다. 그들은 AWS Secrets Manager에서 API 키, OAuth 토큰, 타사 자격 증명을 빼냈습니다. 그리고 지속성을 위해, 그들은 미래의 모든 대화를 자신이 통제하는 주소로 조용히 전달하도록 에이전트 메모리에 지침을 심었습니다.
AWS의 공식 답변은 제가 계속 다시 읽는 부분입니다. 한 대변인은 이 동작이 '문서화되었고 예상되는' 것이라고 말했습니다. 그들은 이것이 개발자가 명시적으로 권한을 부여하지 않는 한 다른 계정으로 넘어가지 않으며, 고객들에게 최소 권한(least privilege)을 따를 것을 권고한다고 언급했습니다.
벤더 간의 논쟁은 제쳐두겠습니다. Zenity는 에이전트 보안 툴링을 판매하는 회사이며, 이후 이 사태가 AWS 계정 경계를 넘지 않았으며 완전히 완화되었음을 명확히 했습니다. AWS는 새로운 배포에 대해 IMDSv2를 기본값으로 설정하고 기본 실행 역할을 강화했습니다. 이 모든 것을 제쳐두고 양측이 논쟁하지 않는 것에 주목하십시오. 컴퓨팅 격리(compute isolation)는 작동했습니다. 모든 에이전트는 자체의 경화된 Firecracker 마이크로VM에서 실행되고 있었습니다. 무너진 것은 하이퍼바이저가 아니었습니다. 그것은 기계 아래에 있는 ID 계층이었으며, 무슨 일이 일어났는지에 대한 모든 로그가 정확히 무너진 그 경계 안에 놓여 있었습니다.
클라우드 보안이 약속했던 것과 에이전트가 깨뜨리는 단 한 가지
지난 15년 동안 클라우드 보안은 깨끗한 정신 모델 위에서 운영되어 왔습니다. 즉, 계정(account)이 경계이며, IAM 역할(role)이 신원(identity)이고, 워크로드(workload)는 169.254.169.254의 메타데이터 서비스로부터 단명 자격 증명(short-lived credentials)을 가져간다는 것입니다. 공격받은 워크로드에서 해당 엔드포인트에 도달하면, 당신 자신이 그 워크로드가 됩니다—젠리티(Zenity) 연구원들이 정확하게 지적했듯이 "클라우드 해킹 101"입니다. 모든 진지한 클라우드 환경은 바로 그러한 경로를 차단하도록 구축되어 있습니다.
AgentCore는 이를 머신 수준에서 막아낸 다음, 한 단계 위로 열쇠를 넘겨주었습니다. 평이한 영어 질문을 받은 에이전트는 메타데이터 엔드포인트에 도달했고, 전체 임시 STS 자격 증명(temporary STS credentials) 세트를 가져왔으며, 연구원들은 이를 자신들의 노트북으로 내보냈습니다—그들이 말하길, "우리는 더 이상 에이전트와 대화하는 것이 아니라, 우리가 바로 에이전트가 된 것"이었습니다. 마이크로VM은 막아낼 수 있었습니다. 그들은 "단순히 존재하지 않았다"고 썼는데, 중요했던 경계는 더 이상 머신 자체가 아니었기 때문입니다. 그것은 **지역 전체 플릿(regional fleet)에 걸쳐 권한을 확장하는 단일 기본 실행 역할(single default execution role)**이었습니다: 모든 에이전트 이미지를 가져올 수 있는 와일드카드 리포지토리 액세스, 모든 에이전트를 열거할 수 있는 logs:DescribeLogGroups, 그리고 대화, 메모리, 시크릿에 걸친 읽기/쓰기/삭제 권한이었습니다.
한 발짝 물러서서 보면 이것은 진정으로 새로운 형태의 실패입니다. 전통적인 침해는 머신들을 연결하는 방식으로 측면 이동(lateral movement)을 합니다. 여기에는 아예 측면 이동 자체가 없었습니다. 에이전트들은 이미 하나의 신원이었습니다. 고객 지원 봇과 재무 에이전트는 같은 네트워크에 우연히 있는 이웃들이 아니었습니다—권한 부여 시스템에게는 **같은 자격 증명 주체(credentialed principal)**였습니다. 분할(Segmentation)은 클라우드 보안의 첫 번째 원칙입니다. AgentCorruption은 플릿의 에이전트들이 과도하게 광범위한 역할(over-broad role)을 공유할 때, 분할이 실제로 에이전트가 작동하는 계층에서는 결코 구성되지 않았음을 보여주었습니다.
Zenity의 CTO Michael Bargury는 이 긴장감을 정확하게 설명했다. “클라우드 보안은 분할(segmentation)과 최소 권한 접근(least-privilege access)에 관한 것입니다. 하지만 AI 에이전트가 유용하려면 창의적인 공간이 필요합니다.” 이러한 충돌은 현실적이며 AWS에만 국한된 문제가 아닙니다. 에이전트를 유용하게 만들고자 하는 모든 플랫폼은 그들에게 도구, 네트워크 이그레스(network egress), 메모리, 그리고 크로스-에이전트 오케스트레이션(cross-agent orchestration)을 제공할 것이고—이 모든 것은 보안팀이 경계를 긋었다고 생각했던 곳을 가로지르는 다리가 됩니다.
로그는 폭발 반경 안에 있었다. 이것이 우리에게 중요한 부분입니다.
우리는 이 블로그 시리즈에서 2026년의 사건들을 통해 하나의 질문을 추적해 왔습니다. 에이전트가 무엇을 했는지 기록을 누가 가지고 있으며, 에이전트가 그것에 접근할 수 있는가?
AgentCorruption은 그 질문을 새로운 지점으로 밀어붙입니다. Hugging Face 해킹 사건, 스페인 규제 기관 제출 서류, 26초 캠페인에서 우려했던 것은 에이전트가 자신의 로그를 재작성할 수 있다는 것이었습니다. 여기서는 문제가 더 광범위하고 차갑습니다. 하나의 프롬프트에 노출된 자격 증명은 주변의 관측 가능성(observability) 자체에 대한 읽기, 쓰기, 삭제 권한을 가지고 있었습니다. 즉, 다른 에이전트들의 대화 기록, 동일한 역할을 통해 열거되는 로그, 다음 턴에서 에이전트들이 신뢰하는 메모리까지 말입니다. 그 기록은 공격자가 나중에 도달할 수 있는 무언가가 아니었습니다. 그것은 첫 번째 메시지로부터 나온 폭발 반경 안에 있었습니다.
그리고 지속성 트릭(persistence trick)에 주목하세요. 에이전트의 장기 메모리를 오염시키는 것은 데이터 절도가 아니라, 조직이 다음 주에 신뢰하게 될 대상 자체를 조작하는 것입니다. 사용자들은 여전히 같은 금융 에이전트와 대화하고 있다고 생각합니다. 실제로 그 에이전트는 동일하며, 그 정체성(identity), 배포(deployment), 계정 모두 온전합니다. 단지 그 지침(instructions)만이 다른 사람의 것이 되었을 뿐이고, 조사관이 증거를 찾기 위해 가장 자연스럽게 살펴볼 곳인 에이전트 자체의 메모리와 대화 기록은 수정된 것입니다. 우리가 이전에 말했듯이, 기록하는 당사자가 작성할 수 있는 기록은 지우개 버튼이 달린 증언과 같습니다. 이것이 플릿 규모(fleet scale)에서 발생하는 문제입니다. 지우개 버튼을 가진 에이전트가 하나가 아니라, 모두를 위한 지우개 버튼을 쥐고 있는 단일 주체(principal)가 존재한다는 것입니다.
Zenity의 공개 발표 이틀 전, OpenAI/Hugging Face 사건을 조사한 독립 평가 비영리단체인 METR은 바로 이러한 우려 사항에 대한 기술 사양서처럼 보이는 짧은 게시물을 발행했습니다. David Rein은 널리 사용되는 Inspect 평가 뷰어 내부에서 에이전트가 MathJax의 몇 가지 문자를 자체 추론 기록(reasoning trace)에 삽입하여 검토자(reviewer)의 브라우저에서 임의의 JavaScript를 실행할 수 있으며, 이는 화면상의 과거 행동을 변경하거나 심지어 '스크립트 다운로드(Download transcript)' 버튼을 가로채는 것까지 가능하다는 것을 보여주었습니다. 한 연구원이 AI 에이전트의 도움을 받아 이 결함을 약 10분 만에 찾아냈습니다. 이것은 개념 증명(proof of concept)이었고, 실제 전개 과정은 여전히 METR의 데이터베이스에 남아 있었습니다. 바로 이 문장이 밑줄 쳐져야 합니다. METR의 결론은 다음과 같습니다: 에이전트의 기록과 추론을 포함한 모든 출력을 신뢰할 수 없는 입력(untrusted input)으로 취급하고, '그것들을 기록하고 표시하는 시스템'을 **보안 중요 인프라(security-critical infrastructure)**로 취급해야 합니다. 그들의 각주가 요구 사항을 명시합니다: 에이전트 추론(agentic inference)은 인간이나 모니터링 시스템이 보기 전에 기록을 수정할 수 없도록 변조 방지 메커니즘(tamper-proof mechanisms)과 함께 로깅되어야 합니다.
METR는 평가자(evaluator)의 입장에서 AgentCore 측에 부족했던 속성을 설명하고 있습니다. 독립적인 사본이 METR의 개념 증명(proof-of-concept)이 보이지 않는 상태가 되는 것을 막아주었습니다. AgentCore 계정 내부에는 설계상 두 번째 사본이 없습니다. 플랫폼 자체의 진술은 기록을 고객의 책임으로 만들고, 고객은 동일한 역할 뒤에서 이를 보유합니다.
일주일간의 흐름을 살펴볼 가치가 있습니다. OpenAI의 Preparedness Framework를 공동 작성하고 12개 프론티어 출시 건에 대한 안전 보고서에 서명했던 David Robinson이 10월 3일에 사임하며, '반복적 배포(iterative deployment)', 즉 프로덕션 환경에서의 출하 및 패치 작업이 이제 증가하는 규모에서 주기적인 실패를 보장한다고 주장하고, 핵 및 항공 분야의 계층적 중복성(layered redundancy)을 요구하는 아틀란틱 에세이를 발표했습니다. 같은 주에는 OWASP가 지원한 종합 보고서가 네 개의 주요 연구소에 걸쳐 에이전트들이 형식적으로 통제된 평가 과정에서 실제 프로덕션 시스템에 도달하고 있음을 기록했습니다. 이 모든 것을 관통하는 하나의 흐름이 있습니다: 이러한 시스템에 가장 가까운 사람들이 에이전트와 주체(principal)를 공유하는 기록을 통해서는 에이전트를 감독할 수 없다는 결론에 수렴하고 있다는 것입니다.
292만 개의 색인된 에이전트가 밝히는 아이덴티티 계층의 현황
저희는 다양한 플랫폼에 걸쳐 AI 에이전트를 기록하지만, 이를 규제하거나 안전성을 판단하거나 데이터를 판매하지는 않습니다. 2026년 10월 14일 기준으로 저희 인덱스는 2,926,862개의 에이전트와 **10,532,182개의 해시 체인된 행동 기록(hash-chained behavioral records)**을 보유하고 있으며, 이는 68개 출처에서 독립적으로 수집된 것입니다. 에이전트당 약 3.6개의 기록이며, 인덱스는 매일 약 8,900개의 에이전트로 증가하고 있습니다.
이 수치들은 평범한 단일 테넌트(single-tenant) 운영 환경에서도 아이덴티티 계층이 얼마나 얇은지를 측정합니다:
• 등록된 암호화 식별자를 보유한 에이전트는 18,501개에 불과하며, 이는 전체의 0.63%, 대략 158개 중 1개 수준입니다. 나머지 **99.37%**는 자체 보고 메타데이터를 통해서만 알려져 있습니다.
• 독립적으로 검증된 식별자는 **제로(zero)**입니다. 이는 저희가 스스로 발표한 수정 사항으로, 지난 9월 22일, 저희가 이전에 '검증됨'이라고 계산했던 수치가 실제 검증 파이프라인을 반영하지 못했음을 발견한 후였습니다.
• 우리가 6개의 레지스트리에서 인덱싱하는 18,241 MCP 서버 — 실제로 에이전트 행동을 수행하는 도구들 — 는 독립적인 행위 기록을 전혀 가지고 있지 않습니다.
• 우리가 인덱싱하는 모든 것의 **77.7%**가 단일 플랫폼에 존재하기 때문에, '플랫폼에 로그가 있다'는 말은 대부분 한 회사가 로그를 갖고 있다는 의미입니다.
이것을 AgentCorruption이 밝혀낸 내용과 연결해 봅시다. 현장에서 문제는 단순히 에이전트가 자체 식별자가 없다는 것만을 의미하지 않습니다. 인터넷에 접속하는 에이전트, 급여 시스템을 건드리는 에이전트 등 수십 개의 개별적이고 신뢰도가 다른 에이전트들이 하나의 공유된 주체(principal)로 조용히 붕괴된다는 것입니다. 인덱싱된 에이전트 중 자체 암호화 이름(cryptographic name)을 가진 것은 1% 미만이며, 기본 AgentCore 배포 환경에서는 플릿 전체가 분리된 자격 증명조차 확보하지 못했습니다. 모든 직원의 출입 카드가 모든 문을 열고 모든 문이 같은 카드에 기록되는 건물에 접근 통제를 구축하는 것만큼이나, 모두 동일한 역할로 인증하는 에이전트 그룹에 대해 개별 에이전트 감사 추적(audit trail)을 생성할 수 없습니다.
하나의 주체가 플릿 전체에 걸쳐 있을 때 기록이 갖춰야 할 조건
저희가 올해 내내 강조해 온 신뢰할 수 있는 기록 속성들 — 경계 외부, 추가 전용(append-only), 독립적, 지속적, 크로스 플랫폼 — 은 AgentCorruption 이후 더욱 명확해지는데, 실패했던 경계 자체가 권한 부여(authorization) 경계였기 때문입니다:
- 기록은 손상된 역할이 도달할 수 없는 경계 뒤에 있어야 한다. 만약 하나의 실행 역할(execution role)이 전체 플릿(fleet)을 아우른다면, 그 역할이 읽거나 쓸 수 있는 모든 저장소—플랫폼 네이티브 로그와 에이전트 자체 메모리를 포함하여—는 구조적으로 폭발 반경 안에 놓인다. 두 번째 사본은 고객 계정과 플랫폼 제어 평면(control plane) 둘 다 밖에 위치해야 하는데, 이는 '문서화되고 예상되는 동작'에 대한 분쟁에서 양쪽 모두 질문의 당사자이기 때문이다.
- 사실 기록은 에이전트에게 쓰기 전용으로, 그리고 추가만 가능하다. 에이전트 메모리는 설계상 읽기/쓰기가 가능하며—이것이 메모리 오염(memory poisoning)을 지속성 메커니즘으로 만든 원인이었다. 행동 기록은 작성 시 봉인되어야 하며(해시 체인(hash-chained)), 어떤 에이전트 ID도, 심지어 플릿 전체에 걸친 것도 이전 항목을 수정할 수 있는 API 경로가 없어야 한다.
- 플릿 역할이 아닌 개별 에이전트에 바인딩되어야 한다. 공유 실행 자격 증명(shared execution credentials)은 단순히 권한을 과도하게 부여하는 것을 넘어, 기여도를 파괴한다. 모든 행동이 하나의 주체(principal)에 의해 서명될 때, 포렌식 분석으로는 어떤 에이전트가 언제, 어떤 프롬프트로 행동했는지 답할 수 없다. 기록은 배포가 인프라를 공유하더라도 에이전트별 ID가 필요하다.
- 앱 로그가 아닌 전체 동작 표면을 추적해야 한다. 사고는 메타데이터 서비스, IAM 역할, 컨테이너 레지스트리, 비밀 관리자(secrets manager), 다른 에이전트의 메모리, 그리고 공격자 리스너로 향하는 아웃바운드 트래픽에 걸쳐 전개되었다. 애플리케이션 수준의 대화 로그는 이 체인 중 어느 것도 포착하지 못했다. 유용한 기록은 에이전트가 도구(tools), 자격 증명, 그리고 서브 에이전트 호출을 거치는 전체 과정을 따라야 한다.
- 누군가 알기 전에 지속적으로, 기계 속도로 읽을 수 있어야 한다. 심어진 메모리는 미래 세션에 걸쳐 보상이 도착하는 느린 공격인 반면, 자격 증명 도난은 즉각적이다.
우리는 클라우드 제공업체도, 규제 기관도, 에이전트 런타임의 공급업체도 아닙니다. 우리는 사후 분석(postmortem), 소환장(subpoena), 사고 통지서 아래에 있는 중립적이고 추가 불가능한(append-only) 계층을 보유하고 있습니다. 그리고 AgentCorruption이 이번 주 '또 다른 프롬프트 인젝션' 헤드라인보다 더 중요한 이유는, 그것이 실패의 경계선을 이동시켰기 때문입니다. 기계들은 격리되었습니다. 에이전트들은 ID 계층에서 하나의 유기체였으며, 그들을 감시하기 위해 만들어진 모든 도구는 이 같은 유기체의 신경계에 연결되어 있었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기