본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 06. 23:19

에이전트의 98%가 치명적인 삼중 위협(Lethal Trifecta)을 보유하고 있습니다. 지난주의 사례가 그 이유를 보여줍니다.

요약

Adversa의 보고서에 따르면 프로덕션 AI 에이전트의 98%가 개인 데이터 접근, 신뢰할 수 없는 콘텐츠 노출, 외부 액션 수행 능력이 결합된 '치명적 삼중 위협'을 보유하고 있습니다. 특히 도구 실행 권한이 에이전트의 실패를 심각한 운영 사고로 전환시키는 핵심 요인으로 지목되었습니다.

핵심 포인트

  • 에이전트 98%가 치명적 삼중 위협(Lethal Trifecta) 보유
  • 적절한 방어 체계를 갖춘 시스템은 단 11%에 불과
  • 도구 실행 권한이 폭발 반경 변동성의 76%를 결정
  • 개발 도구 환경(Cursor, Claude Code 등)이 새로운 공격 표면으로 부상

6월 3일에 발표된 Adversa의 2026년 2분기 AI 리스크 사분면 보고서(Q2 2026 AI Risk Quadrant Report)는 공격 표면(attack surface), 폭발 반경(blast radius), 그리고 방어(defenses)라는 세 가지 차원을 기준으로 100개의 프로덕션 에이전트 시스템을 평가했습니다. 주목해야 할 두 가지 수치가 있습니다.

프로덕션 에이전트의 98%가 치명적인 삼중 위협(lethal trifecta)을 보유하고 있습니다. 이는 Simon Willison의 프레임워크에 따른 것으로, 개인 데이터에 대한 접근 권한, 신뢰할 수 없는 콘텐츠에 대한 노출, 그리고 외부 액션을 수행할 수 있는 능력이 동일한 실행 경로(execution path) 상에 결합된 상태를 의미합니다.

적절히 방어되었다고 평가받는 시스템은 단 11%에 불과합니다.

나머지 87%는 삼중 위협이 없는 것이 아닙니다. 삼중 위협을 가지고 있지만, 그것을 둘러싼 방어 체계를 구축하지 않았을 뿐입니다.

도구 실행(Tool execution) 하나만으로도 전체 코호트(cohort)에서 나타나는 폭발 반경(blast-radius) 변동성의 76%를 설명할 수 있습니다. 이것이 이번 조사의 핵심 결과입니다. API에 쓰기, 커밋 푸시, 패키지 설치, 메시지 전송 등 세상에 직접적인 영향을 미칠 수 있는 능력은 에이전트의 실패를 단순한 로그 예외(logged exception)에서 운영 사고(operational incident)로 전환시키는 요인이 됩니다.

프로덕션 환경에서 경계가 없는 삼중 위협의 모습

6월 1일, 침해된 @redhat-cloud-services npm 패키지에서 처음 발견된 Miasma 웜(worm)은 앞서 언급한 87%라는 수치가 실제 사건으로 나타난 사례였습니다. 이 캠페인은 32개의 패키지에 걸쳐 96개의 버전을 재배포했으며, AWS, GCP, Azure 자격 증명, Vault 토큰, SSH 키, 그리고 .env 파일을 수집하는 preinstall 페이로드(payload)를 포함했습니다. 그 후 피해자의 계정이 게시 권한을 가진 모든 패키지를 통해 스스로를 전파했습니다.

6월 5일까지, 변종인

  • 개인 데이터 (Private data): 클라우드 제공업체 자격 증명 (cloud provider credentials), SSH 키, 소스 제어 비밀 정보 (source-controlled secrets) — .env 파일 전체
  • 신뢰할 수 없는 콘텐츠 (Untrusted content): 침해된 관리자 계정으로부터의 패키지 업데이트
  • 외부 액션 (Outbound action): 데이터 유출을 위한 외부 HTTP 통신 및 개발자가 게시할 수 있는 모든 패키지에 대한 쓰기 권한을 포함하여, 개발자의 로컬 권한으로 실행되는 프리인스톨 훅 (preinstall hook)

이 세 가지 삼중 위협 (trifecta) 요소가 개발자의 에이전트 도구 환경 내의 동일한 실행 경로 상에 존재합니다. "의존성을 설치했다"와 "지금 자격 증명을 유출하고 있다" 사이에 존재해야 했던 방어 계층은 존재하지 않았습니다.

에이전트 개발 환경은 집행 표면 (enforcement surface)입니다

AIRQ의 측정치가 시사하고 Miasma가 입증하는 것은, 삼중 위협의 집행 표면 (enforcement surface)이 더 이상 애플리케이션 경계가 아니라는 점입니다. 그것은 바로 개발자의 도구 환경입니다.

Cursor 세션, Claude Code 세션, Gemini CLI 실행 — 이것들은 개발자의 로컬 자격 증명, 소스 트리, 그리고 외부 네트워크에 대한 특권 권한을 가진 에이전트 실행 컨텍스트 (execution contexts)입니다. 침해된 npm 패키지가 해당 컨텍스트 내에서 프리인스톨 훅 (preinstall hook)을 실행할 때, 삼중 위협은 배포된 애플리케이션이 아니라 에이전트 환경에서 완성됩니다.

이는 방어 계층이 수행해야 할 역할을 변화시킵니다. LLM에 대한 벤더 관리형 샌드박싱 (sandboxing)은 도움이 되지 않습니다. 왜냐하면 패키지 설치, npm test 실행, 도구 실행과 같은 치명적인 능력은 모델 제공업체의 데이터 센터가 아니라 개발자의 머신에 있기 때문입니다. 토큰 스코핑 (Token scoping) 또한 임의의 프리인스톨 훅으로부터의 자격 증명 읽기를 거부할 수 있을 만큼 스코프가 충분히 엄격하지 않다면 도움이 되지 않습니다. 에이전트 환경이 사용자를 대신하여 환경 변수를 읽을 수 있다면 Vault 통합 역시 도움이 되지 않습니다.

AIRQ 보고서가 명명한 구조적 패턴은 애플리케이션 계층의 삼중 위협 (application-layer trifecta)입니다. Miasma는 이 패턴을 스택의 한 단계 위로 확장했습니다. 이제 개발자의 도구 환경 (developer's tool environment)이 엄격하게 더 높은 권한을 가진 채 동일한 삼중 위협을 보유하게 된 것입니다. 11%의 '적절히 방어됨' 임계값을 넘어서는 것은 이 계층에서 더 쉬워지는 것이 아니라 더 어려워집니다.

삼중 위협이 한 계층 위로 이동했습니다. 집행 표면 (enforcement surface)도 그와 함께 이동했습니다.

구조적 방어의 실제 모습

에이전트 환경이 집행 표면이 될 때 살아남는 방어책은 세 가지 속성을 가집니다.

사후 탐지가 아닌, 승인 시점의 게이트 (Admission-time gates). 자격 증명 (credentials)을 읽고 이를 유출하는 프리인스톨 훅 (preinstall hook)은 몇 초 만에 실행됩니다. 탐지 기반의 방어는 잘못된 단계의 대응입니다. 게이트는 해당 훅이 실행될지 여부를 결정하는 계층에 위치해야 합니다.

'개발자가 도구를 신뢰한다'는 가정을 견뎌내는 권한 범위 제한 (Capability scoping). 에이전트 도구 환경은 개발자가 승인한 명령을 실행합니다. 자격 증명 노출 범위는 "개발자가 이를 승인했다"는 사실이 "자격 증명에 접근 가능하다"는 의미를 내포하지 않을 만큼 충분히 좁아야 합니다.

자격 증명 순환 (credential rotation)이 아닌, 자격 증명 노출에 대한 식별 및 취소 (Identify-and-revoke) 태세. 훅이 .env 파일을 읽고 그 내용을 전송했다면, 그 이후에 자격 증명을 순환시켰는지 여부와 관계없이 자격 증명은 이미 노출된 것입니다. 운영 측의 대응은 동일한 범위에 대해 새로운 토큰을 생성하는 것이 아니라, 영향을 받은 범위 (scopes)를 식별하고 해당 권한을 취소하는 것이어야 합니다.

Miasma의 설계는 이 세 가지 요소의 부재를 악용합니다. 승인 과정에 대한 계측 (instrumentation)이 이루어지지 않았기 때문에 프리인스톨 훅이 승인 시점에 실행될 수 있었습니다. 도구 환경의 범위 제한 (scoping)이 드물기 때문에 자격 증명에 접근이 가능했습니다. 대부분의 피해를 입은 벤더들이 제시한 복구 가이드는 순환 (rotation)을 대응책으로 명시했는데, 이는 순환 주기 전반에 걸쳐 공격자의 발판을 유지시켜 주는 결과를 초래합니다.

하네스 (harness)가 다루는 것과 다루지 않는 것

agent-security-harness 커뮤니티 플러그인 런타임(runtime) 및 MCP 서버 모듈은 MCP 플러그인 로딩 과정 내에서 preinstall-hook 코드 경로와 동일한 요소들을 실행합니다: 신뢰할 수 없는 YAML, eval-injection 패턴, 파일 크기 제한, 정규표현식(regex) 안전성, 지연 시간 제한(delay caps) 등입니다. 커뮤니티 러너(runner)의 플러그인 검증기(validator)는 Miasma가 npm 레이어에서 악용한 것과 가장 유사한 방어적 대응책을 하네스(harness) 내에 포함하고 있습니다.

솔직히 말해, 현재 하네스가 다루지 않는 부분은 다음과 같습니다:

  • npm preinstall-hook 표면 자체 — 이는 상위 패키지 관리자(package-manager) 공격 벡터이며, MCP 또는 A2A 프로토콜 공격이 아닙니다.
  • 측정된 실행 컨텍스트(measured execution context)로서의 Claude Code / Cursor / Gemini CLI 에이전트 도구 환경 — 이들은 하네스가 직접 조사하지 않는 벤더 관리 샌드박스(sandboxes)입니다.
  • 패키지 간 기여자 계정 탈취(contributor-account-compromise) 전파 — 이는 레지스트리 거버넌스(registry-governance)의 문제이지, 에이전트 프로토콜 런타임(agent-protocol-runtime)의 문제가 아닙니다.

AIRQ 측정은 하네스가 실제로 측정하는 것, 즉 애플리케이션 레이어의 삼중 위협(trifecta) 방어 격차를 위한 올바른 기준점(anchor)입니다. Miasma 사례는 왜 그 격차가 바로 위 레이어에서 중요한지를 보여주는 전형적인 예시입니다.

출처

출처

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0