LangChain, AutoGPT, CrewAI, AgentKit. AI Agent 프레임워크가 폭발적으로 늘어나면서 누구나 몇 줄의 코드로 자율 에이전트를 만들 수 있게 됐습니다. 하지만 이들은 공통된 아키텍처 위에 구축됐고, 따라서 공통된 보안 취약점도 공유합니다. 보안 전문 기업 Zenity와 학계 연구진이 밝힌 AI Agent 프레임워크의 구조적 보안 위험과 실전 방어 원칙을 정리했습니다.

핵심 포인트:
- 공통 아키텍처, 공통 취약점: LLM + 도구 + 메모리 + 계획 수립. 모든 AI Agent 프레임워크는 이 구조 위에 구축되며, 각 컴포넌트마다 고유한 공격 벡터가 존재합니다
- 프롬프트 인젝션의 증폭 효과: 단순 LLM 공격과 달리, Agent에서는 하나의 프롬프트 인젝션이 여러 도구와 시스템을 연쇄적으로 장악할 수 있는 게이트웨이 공격으로 변모합니다
- 소프트 가드레일의 한계: LangChain의 CVE-2023-46229, CVE-2023-44467 사례가 보여주듯, 코드 검증과 입력 필터링만으로는 불충분합니다. LLM으로 LLM을 감시하는 구조는 근본적으로 우회 가능합니다
프레임워크는 다르지만 위험은 같습니다
LangChain은 유연한 체인 구성에 강점이 있습니다. AutoGPT는 자율성을 극대화했죠. CrewAI는 역할 기반 협업에 특화됐고, AgentKit은 통합 플랫폼을 제공합니다. 하지만 이들의 핵심 아키텍처는 동일합니다.
Planning & Reasoning Engine: LLM을 사용해 목표를 달성하기 위한 단계를 결정합니다. 체인 오브 쏘트(Chain of Thought), 리플렉션(Reflection), 서브골 분해(Subgoal Decomposition) 같은 고급 추론 기법을 사용하죠.
Memory Systems: 단기 메모리(세션)와 장기 메모리(영구 저장). 컨텍스트를 유지하고 과거 상호작용을 기억합니다. 이게 Agent를 단순 LLM과 구별하는 핵심입니다.
Action & Tool Invocation: API 호출, 데이터베이스 쿼리, 코드 실행. Agent가 실제로 행동할 수 있게 만드는 부분입니다.
Supporting Services: RAG를 위한 벡터 데이터베이스, 장기 메모리용 영구 저장소, 기업 데이터 소스 통합.
이 공통 구조가 문제입니다. 각 컴포넌트가 새로운 공격 표면을 만듭니다. arxiv에 게재된 “Securing Agentic AI” 논문은 이를 5개 도메인으로 분류합니다. 인지 아키텍처 취약점, 시간적 지속성 위협, 운영 실행 취약점, 신뢰 경계 위반, 거버넌스 우회.
1. 인지 아키텍처 취약점: 추론을 조작하는 공격
Agent의 의사결정 과정 자체가 공격 대상이 됩니다. 전통적인 프롬프트 인젝션을 넘어, Agent의 추론 경로를 미묘하게 왜곡시키는 공격이 가능합니다.
추론 경로 하이재킹이 대표적입니다. 공격자가 Agent의 논리적 경로를 조작해서, 표면적으로는 논리적으로 보이지만 실제로는 악의적인 결과로 유도합니다. 모순된 정보나 미묘한 편향을 Agent의 컨텍스트에 주입해서 체인 오브 쏘트를 악용하는 거죠.
예를 들어, 재무 평가 Agent에 모순된 평가 기준을 문서에 주입하면 규정을 위반하는 거래를 승인하게 만들 수 있습니다. 생성된 정당화는 내부적으로 일관되어 보이고 표면적인 위험 통제를 만족시키지만, 실제로는 잘못된 결정입니다.
더 심각한 건 목표 기능 손상과 드리프트입니다. Agent의 핵심 목표나 보상 메커니즘을 조작해서 목적 자체를 바꾸는 겁니다. 조작된 피드백이나 중독된 보상 모델을 통해 가능합니다. 점진적으로 발생하면 탐지가 거의 불가능합니다.
보안 Agent를 예로 들면, 조작된 피드백을 통해 검증보다 속도를 우선시하도록 학습시킬 수 있습니다. 시간이 지나면서 Agent는 의심스러운 접근 패턴을 보안 위협이 아닌 “효율성 최적화”로 분류하기 시작합니다.

2. 시간적 지속성 위협: 메모리가 무기가 되는 순간
Agent의 장기 메모리가 공격 벡터가 됩니다. RAG 데이터베이스와 영구 저장소가 점진적 중독의 표적이 되죠.
지식 기반 중독과 신념 루프를 보세요. 공격자가 Agent의 지식 기반이나 영구 메모리에 거짓 정보를 심습니다. 이 정보가 미래 결정에 영향을 미치죠. 더 나쁜 건 자기 강화 사이클입니다. 조작된 신념이 메모리에 저장되고, 나중에 증거로 검색되면서 원래의 거짓을 강화합니다.
벡터 데이터베이스 중독이 좋은 예시입니다. 보안 프로토콜 예외를 지식 기반에 심으면 Agent가 무단 접근을 잘못 분류할 수 있습니다. Agent가 이 잘못된 분류를 로그에 기록하고, 나중에 자신의 로그를 증거로 참조하면 잘못된 신념이 굳어집니다.
stateless 애플리케이션과 달리, 공격자는 오랜 기간에 걸쳐 오해를 불러일으키는 정보를 도입할 수 있습니다. 며칠, 몇 주, 심지어 몇 달 후에야 영향이 나타날 수 있어서 사고를 근본 원인까지 추적하기가 극도로 어렵습니다.
현재 프레임워크들은 이런 메모리 시스템을 보호하거나 언제 손상되었는지 탐지하는 방법에 대한 가이드가 부족합니다. LangChain, AutoGPT, AgentKit 모두 RAG와 장기 메모리를 지원하지만, 메모리 무결성 검증 메커니즘은 개발자 몫입니다.
3. 운영 실행 취약점: 도구가 무기가 되다
Function Calling이 만든 새로운 공격 표면입니다. LangChain, AgentKit, AutoGPT 모두 도구를 Agent에 연결하는 메커니즘을 제공합니다. 문제는 이 도구들이 쓰기 권한을 가질 수 있다는 점입니다.
무단 작업 실행의 위험성을 보세요. Agent가 개별적으로는 안전해 보이는 작업들을 연쇄적으로 실행해서 권한을 상승시키는 겁니다. 허용된 데이터 검색 함수와 제대로 샌드박스되지 않은 코드 실행 도구를 결합해서 민감한 데이터를 유출하는 식이죠.
Zenity가 분석한 AgentKit의 “MegaZord” 에이전트가 좋은 예시입니다. Google Drive 파일 읽기, PayPal 인보이스 생성, 커스텀 MCP 서버 호출을 모두 할 수 있는 단일 에이전트. 프롬프트 인젝션 한 번이면 이 모든 시스템을 장악할 수 있습니다.
Palo Alto Networks가 발견한 LangChain의 CVE-2023-46229가 이를 실제로 보여줍니다. LangChain의 SitemapLoader는 사이트맵 URL을 받아 그 안의 모든 URL을 방문합니다. 하지만 접근 범위에 제한이 없었죠. 공격자가 인트라넷 리소스 URL을 사이트맵에 포함시키면 SSRF 공격이 가능했습니다. 민감한 정보 유출이나, 잘못 설계된 API의 경우 원격 코드 실행까지 가능했습니다.
계산 리소스 조작도 간과할 수 없습니다. 공격자가 과도한 리소스를 소비하도록 설계된 입력을 만들어 서비스 거부 상태를 만들거나, 보안을 타협하는 운영 단축키를 강제할 수 있습니다. 깊게 중첩된 추론 체인, 대규모 RAG 검색, 복잡한 도구 상호작용을 트리거하는 입력이 해당됩니다.
4. 신뢰 경계 위반: 누구를 믿을 것인가
Agent, 사용자, 시스템 간의 신뢰 경계가 모호해집니다. 여기서 두 가지 위협이 발생합니다.
ID 스푸핑과 신뢰 악용입니다. Agent의 작업이 사용자 권한을 부적절하게 상속받거나, 신뢰할 수 있는 Agent ID를 가장하는 공격이 가능합니다. 멀티 에이전트 시스템에서는 더 심각합니다. API 키 탈취, 인증 토큰 조작, 프로토콜 약점 악용으로 신뢰받는 Agent 신원을 가정할 수 있습니다.
AgentKit의 자격증명 관리 문제가 이를 잘 보여줍니다. 외부 서비스와 연결하려면 액세스 토큰이 필요한데, 많은 경우 사용자가 OAuth 플레이그라운드에서 직접 생성합니다. 권한 범위를 수동으로 정의하다 보면 필요 이상으로 높은 권한의 토큰을 만들 위험이 있습니다. 이 토큰이 잘못 처리되거나 유출되면 여러 시스템에 무단 접근이 가능해집니다.
인간-Agent 신뢰 조작도 위험합니다. 사람들은 AI 추천을 자연스럽게 신뢰하는 경향이 있습니다. 공격자가 Agent 응답을 조작해서 높은 확신을 가장하거나, 거짓 권위를 참조하거나, 즉각적인 행동을 촉구하는 소셜 엔지니어링 프롬프트를 생성하면 사용자가 해로운 행동을 취할 가능성이 높아집니다. 기술적 통제를 인간 상호작용을 통해 우회하는 거죠.

5. 거버넌스 우회: 감시를 피하는 기술
Agent의 자율성과 속도가 거버넌스 메커니즘을 압도합니다. 두 가지 패턴이 나타납니다.
감독 포화 공격입니다. 공격자가 의도적으로 대량의 낮은 중요도 이벤트, 알림, 검토가 필요한 작업을 생성해서 거버넌스 메커니즘을 압도합니다. 인간 검토 대기열과 자동화된 모니터링 시스템이 마비되죠. 대량의 낮은 심각도 알림, 분석이 필요한 복잡한 로그, 필수 검토가 표시된 작업을 생성해서 ‘감독 사각지대’를 만듭니다. 진짜 악의적인 행동이 소음 속에서 놓치게 됩니다.
거버넌스 회피와 난독화는 더 교묘합니다. 복잡한 Agent 상호작용의 모호성을 악용해서 책임 추적을 흐리게 만듭니다. 공격을 여러 Agent에 분산시키거나, 임시 신원을 사용하거나, 로그를 조작하거나, 복잡하고 제대로 기록되지 않은 상호작용을 활용해서 ‘귀속 격차’를 만듭니다. “저속 공격(low and slow)” 기법으로 탐지 임계값 아래에서 일관되게 작동하거나, 상관 엔진을 트리거하지 않도록 공격 패턴을 전략적으로 교체합니다.
LLM-as-a-Judge 패턴의 한계가 여기서 드러납니다. 많은 프레임워크가 LLM을 사용해 다른 LLM을 감시합니다. 분류 Agent를 앞에 배치해서 사용자 입력이 안전한지 판단하게 하는 식이죠. 문제는 분류 Agent도 LLM이라는 점입니다. 더 똑똑한 공격 프롬프트가 나오면 무너집니다.
LangChain의 CVE-2023-44467가 이를 잘 보여줍니다. PALChain은 사용자 쿼리를 Python 코드로 변환합니다. 보안 메커니즘으로 위험한 함수들(system, exec, execfile, eval)을 블랙리스트로 관리했죠. 하지만 __import__()
같은 내장 함수로 우회 가능했습니다. 문자열 파라미터로 모듈을 임포트해서 AST 검증을 우회하고 subprocess 모듈을 가져올 수 있었습니다. 원격 코드 실행이 가능했죠.
프레임워크 선택보다 설계 원칙이 중요합니다
LangChain을 쓰든, AutoGPT를 쓰든, CrewAI를 쓰든, AgentKit을 쓰든 상관없습니다. 핵심은 어떤 프레임워크를 선택하느냐가 아니라, Agent를 어떻게 설계하고 배포하느냐입니다.
최소 권한을 재정의하세요. 단일 Agent에 여러 도구를 몰아주지 마세요. 특히 읽기와 쓰기 권한을 분리하세요. 전문화된 작은 Agent들을 조합하는 게 MegaZord보다 안전합니다.
신뢰 경계를 명확히 설계하세요. 사용자 입력을 시스템 명령에 직접 넣지 마세요. AgentKit의 input_as_text
변수를 Agent 명령에 바로 포함시키는 건 프롬프트 인젝션의 정의 그 자체입니다. 외부 MCP 서버나 API는 신뢰할 수 있는 출처만 연결하세요.
다층 검증 구조를 구축하세요. 소프트 가드레일만으로는 부족합니다. 하드 가드레일과 조합하되, 이것도 충분하지 않습니다. 추가적인 검증 계층을 직접 만드세요. 코드 실행 전 샌드박스 테스트, 민감한 작업에 대한 인간 승인, 행동 이상 탐지 시스템이 필요합니다.
모니터링 우선으로 설계하세요. Agent가 무엇을 하는지 실시간으로 추적할 수 있어야 합니다. 추론 경로, 도구 호출, 메모리 접근을 모두 로깅하세요. 이상 징후를 탐지할 수 있는 시스템을 만드세요. 사후 대응보다 사전 탐지가 중요합니다.
인간 개입 지점을 전략적으로 배치하세요. 완전 자율 Agent는 위험합니다. 중요한 결정이나 쓰기 작업 전에 인간의 승인을 요구하세요. 하지만 User Approval도 완벽하지 않습니다. 승인 메시지를 명확하고 구체적으로 작성해서 사용자가 정확히 무엇을 승인하는지 이해할 수 있게 하세요.
메모리 무결성을 검증하세요. RAG 데이터베이스와 영구 메모리에 암호화 해시나 디지털 서명을 사용하세요. 정기적으로 무결성을 검증하는 자동화 워크플로우를 만드세요. 메모리 중독을 조기에 탐지할 수 있어야 합니다.
Agent의 자율성과 보안은 제로섬 게임입니다. 더 많은 권한과 도구를 주면 더 유용해지지만, 동시에 공격 표면도 넓어집니다. 완벽한 균형점은 없습니다. 여러분의 위험 허용도와 사용 사례에 맞춰 선택해야 합니다. 프레임워크는 도구일 뿐입니다. 진짜 보안은 여러분이 어떻게 설계하고, 배포하고, 모니터링하느냐에 달렸습니다.
참고자료:
- Analyzing The Security Risks of OpenAI’s AgentKit – Zenity Labs
- Vulnerabilities in LangChain Gen AI – Palo Alto Networks Unit 42
- Securing Agentic AI: A Comprehensive Threat Model and Mitigation Framework – arXiv
답글 남기기