facts
AI 에이전트 구축에 널리 쓰이는 세 가지 프레임워크에서 원격 코드 실행(RCE) 및 경로 탐색(Path Traversal) 취약점이 확인됐다. 이번에 공개된 취약점들은 AI 모델 자체의 결함이 아니라, 프레임워크가 데이터를 처리하고 저장하는 인프라 계층의 전형적인 보안 허점에서 기인한다.
먼저 LangGraph에서는 세 가지 취약점이 발견됐다. SQLite 체크포인터의 SQL 인젝션 취약점인 CVE-2025-67644(CVSS 7.3)와 msgpack 체크포인트 디코더의 취약점인 CVE-2026-28277(CVSS 6.8), 그리고 Redis 체크포인터를 통해 동일한 경로로 이어지는 CVE-2026-27022(CVSS 6.5)가 그것이다. 이에 대한 해결책으로 `langgraph-checkpoint-sqlite` 3.0.1, `langgraph` 1.0.10, `langgraph-checkpoint-redis` 1.0.2 버전이 배포됐다.
Langflow는 CVE-2026-5027(CVSS 8.8) 취약점이 확인됐으며, Censys의 조사 결과 인터넷에 노출된 약 7,000대의 인스턴스가 발견됐다. 특히 이 취약점은 4월 15일 버전 1.9.0에서 패치됐으나, 6월 9일 VulnCheck에 의해 실제 공격 사례가 확인됐다.
LangChain-core에서는 두 가지 취약점이 보고됐다. 레거시 프롬프트 로딩 API의 경로 탐색 취약점인 CVE-2026-34070(CVSS 7.5)과 환경 변수 비밀번호를 노출시키는 역직렬화 결함인 CVE-2025-68664(CVSS 9.3)다. 패치 버전은 CVE-2026-34070의 경우 `langchain-core` 1.2.22 및 0.3.86이며, CVE-2025-68664는 1.2.5 및 0.3.81 버전에서 해결됐다.
how-it-works
LangGraph의 RCE 공격은 두 단계의 취약점을 체이닝(Chaining)하는 방식으로 작동한다. 첫 번째 단계인 CVE-2025-67644는 SQLite 체크포인터가 `get_state_history()`와 같은 히스토리 엔드포인트에서 사용자 입력 필터 키를 파라미터화나 이스케이프 처리 없이 쿼리에 직접 삽입할 때 발생한다. 공격자는 이를 통해 체크포인트 테이블에 조작된 행을 삽입할 수 있다.
두 번째 단계인 CVE-2026-28277은 msgpack 체크포인트 디코더가 저장된 데이터로부터 파이썬 객체를 재구성하는 과정에서 발생한다. 디코더가 공격자가 삽입한 조작된 행을 정상적인 체크포인트로 로드하면, 공격자가 지정한 모듈을 임포트하고 `os.system`과 같은 함수를 호출해 에이전트 서버의 권한으로 임의 코드를 실행한다. 단, LangSmith 플랫폼의 PostgreSQL을 사용하는 경우에는 이 노출 경로가 차단된다.
Langflow의 CVE-2026-5027은 `POST /api/v2/files` 엔드포인트에서 파일 이름을 검증 없이 디스크에 기록하는 경로 탐색 취약점을 이용한다. 공격자는 파일 이름에 탐색 시퀀스를 포함해 `/etc/cron.d/`와 같은 시스템 경로에 파일을 생성할 수 있다. 특히 Langflow의 기본 설정에서 '자동 로그인(auto-login)' 기능이 활성화되어 있어, 인증되지 않은 요청만으로도 쉘(Shell) 권한을 획득하는 것이 가능하다.
LangChain-core의 CVE-2026-34070은 `load_prompt()` 함수가 설정 딕셔너리에서 파일 경로를 읽을 때 절대 경로 및 탐색 시퀀스 검사를 수행하지 않는 점을 이용한다. 이를 통해 공격자는 프로세스가 접근 가능한 임의의 파일을 읽을 수 있으며, 특히 `OPENAI_API_KEY`나 `ANTHROPIC_API_KEY`가 저장된 `.env` 파일을 탈취하는 경로로 이어진다.
implementation-impact
개발자와 보안 실무자가 즉시 조정해야 할 지점은 프레임워크의 '기본 설정'에 대한 신뢰를 버리는 것이다. Langflow의 사례처럼 편의를 위해 제공되는 자동 로그인 등의 기본 설정이 실제로는 인증 장벽을 완전히 제거하는 취약점이 된다. 따라서 프로덕션 환경 배포 시 모든 기본 설정을 최소 권한 원칙에 따라 재설정해야 한다.
패치 적용 시에는 의존성 버전을 세밀하게 확인해야 한다. 특히 LangChain-core의 경우, CVE-2026-34070과 CVE-2025-68664의 패치 버전이 서로 다르다. 하나만 업데이트할 경우 더 심각한 취약점이 여전히 활성화된 상태로 남을 수 있으므로, 두 취약점이 모두 해결된 버전인지 교차 확인이 필요하다.
운영 관점에서는 기존의 WAF(웹 애플리케이션 방화벽)나 EDR(엔드포인트 탐지 및 대응) 도구만으로는 이러한 프레임워크 내부의 취약점을 탐지하기 어렵다는 점을 인지해야 한다. WAF는 세 겹 아래에서 작동하는 msgpack 디코더의 동작을 볼 수 없으며, EDR은 에이전트 서버가 수행하는 정상적인 프로세스 호출과 공격자의 코드 실행을 구분하기 어렵다.
결국 AI 에이전트 도입은 단순한 라이브러리 추가가 아니라, 해당 프레임워크가 가진 보안 위생(Hygiene)을 그대로 상속받는 공급망 리스크를 수반한다. 개발자는 프레임워크를 단순한 도구가 아닌, 데이터와 권한이 교차하는 '인프라 경계'로 취급하고 접근 제어와 입력값 검증 로직을 프레임워크 외부에 추가로 구현하는 것을 검토해야 한다.



