설명 (Description)
에이전트 공급망 취약점은 에이전트, 도구, 그리고 관련 아티팩트가 제3자에 의해 제공될 때 발생하는 보안 위험을 의미한다. 이러한 구성요소가 악의적으로 제작되었거나, 침해되었거나, 전송 중 변조될 가능성이 있기 때문이다.
이러한 구성요소는 정적(static) 또는 동적(dynamic) 형태로 제공될 수 있으며 다음을 포함한다.
- 모델 및 모델 가중치
- 도구 (Tools)
- 플러그인 (Plugins)
- 데이터셋
- 다른 에이전트
- 에이전트 인터페이스
- MCP (Model Context Protocol)
- A2A (Agent2Agent)
- 에이전트 레지스트리
- 업데이트 채널
- 기타 관련 아티팩트
이러한 의존성은 에이전트 실행 체인에 다음과 같은 요소를 삽입할 수 있다.
- 안전하지 않은 코드
- 숨겨진 명령
- 기만적인 행동
기존 공급망 취약점과의 차이
공급망 문제는 LLM03:2025 Supply Chain Vulnerabilities에서도 다루지만, 해당 항목은 주로 정적 의존성(static dependency)에 초점을 맞춘다.
반면 Agentic 시스템에서는 다음과 같은 특징 때문에 위험이 더 커진다.
- 런타임에서 외부 도구를 동적으로 로드
- 에이전트 페르소나를 동적으로 구성
- 여러 에이전트 간 분산 협업
이러한 동적 런타임 구성(runtime composition)과 에이전트 자율성이 결합되면 “실시간 공급망(live supply chain)”이 형성되어 하나의 취약점이 여러 에이전트로 연쇄적으로 확산될 수 있다.
따라서 보안의 초점이 다음으로 이동한다.
- 기존: 빌드/배포 단계 보안
- 에이전트 환경: 런타임 구성 요소 보안
이 항목은 Agentic Threats & Mitigations의 다음 위협들과 연결된다.
- T17 Supply Chain Compromise
- T2 Tool Misuse
- T11 Unexpected RCE & Code Attacks
- T12 Agent Communication Poisoning
- T13 Rogue Agent
- T16 Insecure Inter-Agent Protocol Abuse
취약점의 일반적인 사례 (Common Examples)
1️⃣ 외부에서 로드된 악성 프롬프트 템플릿
에이전트가 외부 저장소에서 자동으로 프롬프트 템플릿을 가져올 때, 템플릿에 데이터 유출이나 파괴적 행동을 유도하는 숨겨진 명령이 포함될 수 있다.
2️⃣ Tool Descriptor Injection
공격자가 도구의 메타데이터나 MCP/agent-card에 악성 명령을 숨기면, 호스트 에이전트는 이를 신뢰된 지침으로 해석하여 실행할 수 있다.
3️⃣ 서비스 가장 및 타이포스쿼팅
에이전트가 외부 도구를 자동 탐색할 때 다음 공격에 속을 수 있다.
- Typosquatting: 비슷한 이름의 서비스로 속이기
- Symbol Attack: 합법적인 도구의 API와 행동을 모방한 악성 서비스
이 경우 공격자는 신뢰를 얻어 악성 행동을 수행할 수 있다.
4️⃣ 취약한 제3자 에이전트 (Agent → Agent 공격)
패치되지 않았거나 보안 설정이 취약한 외부 에이전트가 멀티 에이전트 워크플로우에 참여하면,
- 데이터 유출
- 악성 명령 전달
- 공격 확산
과 같은 문제가 발생할 수 있다.
5️⃣ 침해된 MCP / 레지스트리 서버
악성 또는 침해된 MCP 서버나 패키지 레지스트리가 정상처럼 보이는 서명된 매니페스트나 플러그인을 배포하면, 오케스트레이션 시스템이 이를 신뢰하여 대규모로 변조된 구성요소가 배포될 수 있다.
6️⃣ 오염된 지식 플러그인
RAG 플러그인이 외부 인덱서에서 컨텍스트를 가져올 때, 공격자가 삽입한 데이터로 인해 에이전트가 점차 편향된 정보에 의존하거나 민감 데이터를 유출할 수 있다.
공격 시나리오 예시 (Example Attack Scenarios)
1️⃣ Amazon Q 공급망 공격
VS Code용 Amazon Q 저장소에 악성 프롬프트가 삽입되어 수천 명에게 배포되었다.
비록 공격은 실패했지만 업스트림 에이전트 로직 변조가 확장 프로그램을 통해 확산될 수 있음을 보여준다.
2️⃣ MCP Tool Descriptor Poisoning
GitHub MCP 환경에서 공개 도구 메타데이터에 숨겨진 명령이 삽입되었고, 실행 시 어시스턴트가 사용자 모르게 개인 저장소 데이터를 유출했다.
3️⃣ Postmark MCP 서버 위장 공격
npm에서 발견된 실제 악성 MCP 서버가 postmark-mcp를 사칭하여 이메일을 공격자에게 몰래 BCC했다.
4️⃣ AgentSmith Prompt-Hub Proxy 공격
프롬프트 프록시를 통해 데이터를 탈취하고 에이전트 오케스트레이션 흐름을 조작했다.
5️⃣ 악성 NPM 패키지
코딩 에이전트가 자동으로 설치한 패키지에 백도어가 포함되어
- SSH 키
- API 토큰
등을 탈취하며 에이전트 워크플로우 전반에 공급망 공격을 확산시켰다.
6️⃣ Agent-in-the-Middle 공격
악성 에이전트가 agent card (/ .well-known/agent.json)에 과장된 능력을 광고하면, 호스트 에이전트가 이를 선택하여 민감한 요청이 공격자 에이전트를 통해 전달될 수 있다.
예방 및 대응 가이드라인
1️⃣ 구성요소 출처 검증 (Provenance & SBOM/AIBOM)
- 매니페스트, 프롬프트, 도구 정의 서명 및 검증
- SBOM / AIBOM 관리
- AI 구성요소 인벤토리 유지
- 신뢰된 레지스트리만 사용
2️⃣ 의존성 관리
- Allowlist 기반 설치
- Typosquatting 검사
- 설치 전 출처 검증
- 서명되지 않은 패키지 자동 차단
3️⃣ 실행 환경 격리
- 민감한 에이전트를 샌드박스 컨테이너에서 실행
- 네트워크 및 시스템 호출 제한
- 재현 가능한 빌드 적용
4️⃣ 프롬프트 및 메모리 보안
- 프롬프트 및 오케스트레이션 스크립트를 버전 관리
- 코드 리뷰 및 이상 탐지
5️⃣ 에이전트 간 보안
- PKI + mTLS 기반 상호 인증
- 공개 등록 금지
- 모든 메시지 서명 및 검증
6️⃣ 지속적인 검증 및 모니터링
- 런타임에서 서명, 해시, SBOM 검증
- 행동 패턴, 권한 사용, 통신 기록 모니터링
7️⃣ Pinning 전략
- 프롬프트, 도구, 설정을 해시와 커밋 ID로 고정
- 단계적 배포 및 자동 롤백
8️⃣ 공급망 Kill Switch
침해가 발견되면 특정 도구, 프롬프트, 에이전트 연결을 즉시 차단하는 비상 메커니즘을 구축한다.
9️⃣ Zero Trust 설계
LLM 또는 에이전트 구성 요소가 언제든 침해될 수 있다고 가정하는 보안 설계를 적용한다.
참고 자료
- Amazon AI Coding Agent 공격 사례
- MCP GitHub 취약점 연구
- Amazon Q Prompt Infection 분석
- Agent-in-the-Middle 공격 연구
- LangSmith 에이전트 취약점 분석