Agno 프레임워크의 PandasTools에서 발생한 CVE-2026-119050 취약점은 모델이 제어하는 함수 이름이 검증 없이 getattr()으로 호출되는 ‘안전하지 않은 반사(unsafe reflection)’ 원리로 작동하며, 임의의 pandas 함수 호출과 원격 코드 실행(RCE)으로 이어질 수 있는 위험을 안고 있습니다.
CVE-2026-119050 취약점 개요 및 영향도
CVE-2026-119050은 오픈소스 LLM 에이전트 프레임워크인 Agno의 PandasTools 구성 요소에서 발견된 심각한 보안 취약점입니다. 이 취약점은 외부에서 제어 가능한 입력값이 클래스나 코드 선택에 사용될 때 발생하는 CWE-470(Use of Externally-Controlled Input to Select Classes or Code, ‘Unsafe Reflection’) 분류에 해당합니다.
해당 취약점의 심각도는 매우 높게 평가되고 있으며, CVSS 점수 9.2의 Critical 등급으로 지정됐습니다. 공격자가 적절한 조건을 갖추면 시스템의 제어권을 획득할 수 있는 치명적인 경로가 존재한다는 뜻입니다.
구체적인 영향 대상 및 기술적 지표는 다음과 같습니다.
| 항목 | 상세 내용 |
|---|---|
| 취약점 식별 번호 | CVE-2026-119050 |
| 영향 버전 | Agno 3.1.11 버전 이하 ( |
| 취약점 분류 | CWE-470 (Unsafe Reflection) |
| CVSS 점수 및 심각도 | 9.2 / Critical |
기술적 분석: unsafe reflection 및 RCE 경로
본 취약점의 핵심은 Agno PandasTools 내의 특정 함수가 모델로부터 전달받은 인자값을 처리하는 방식에 있습니다. 문제의 코드는 PandasTools의 create_pandas_dataframe() 함수 안에 자리합니다.
취약점 발생 원리
정상적인 동작에서는 모델이 데이터프레임을 만들기 위해 적절한 함수를 선택하지만, 이 과정에서 모델이 선택한 함수 이름이 검증 없이 호출 대상 디스패치에 그대로 쓰이는 안전하지 않은 반사(unsafe reflection) 구조가 확인됐습니다.
기술적으로는 모델이 제어하는 create_using_function 값이 getattr(pd,...) 형태로 쓰이면서 pandas(pd) 라이브러리의 임의 함수를 동적으로 호출하게 됩니다.
공격 경로 및 코드 실행 가능성
공격자는 모델의 출력을 조작해 create_using_function 인자에 위험한 pandas 함수를 지정함으로써 임의의 코드를 실행할 수 있습니다.
- 함수 호출: 모델이
read_pickle과 같은 함수를 호출하도록 유도합니다. - 역직렬화 공격:
read_pickle계열의 함수 호출은 데이터의 역직렬화 과정을 수반하는데, 이 과정에서 악성 코드가 담긴 피클 파일을 로드하게 만들어 최종적으로 원격 코드 실행(RCE)까지 이어질 수 있습니다.
해당 이슈는 GitHub issue #8699로 보고되었으며, 구체적인 코드 위치와 악용 사례, 수정 제안이 문서화되어 있습니다.
취약점 노출 조건 및 위험 평가
모든 Agno 사용자가 즉각적인 위험에 노출되는 것은 아니며, 실제 공격이 성립하려면 다음 세 가지 기술적 조건이 동시에 충족되어야 합니다.
- 도구 노출 여부: 에이전트에
PandasTools가 구현되어 있어야 하며, 그중에서도create_pandas_dataframe함수가 도구(Tool)로 노출되어 있어야 합니다. - 인자값 제어 가능성: 모델이
create_using_function및function_parameters값을 실제로 제어하고 결정할 수 있는 권한이 있어야 합니다. - 입력 경로의 존재: 외부 사용자의 입력이 모델의 출력에 영향을 주어, 결과적으로 모델이 공격자가 의도한 함수 이름을 내놓도록 조작할 수 있는 경로가 존재해야 합니다.
이 세 가지 조건이 갖춰지면 공격자는 LLM의 프롬프트 인젝션이나 조작된 입력으로 create_pandas_dataframe 호출 시 read_pickle과 같은 위험한 함수를 실행하도록 유도해 서버 권한을 탈취할 수 있습니다.
대응 방안 및 보안 권고 사항
Agno 프레임워크로 LLM 에이전트를 운영 중인 엔지니어와 보안 담당자는 다음의 점검 순서와 대응 방안을 살펴보시기 바랍니다.
1. 영향 범위 확인 및 업데이트 검토
현재 사용 중인 agno 라이브러리의 버전을 확인하십시오. 3.1.11 버전 이하를 사용하고 있다면 해당 취약점에 노출되어 있을 가능성이 큽니다. 보안 패치 적용 여부를 확인한 뒤, 패치가 나와 있다면 최신 버전으로 업데이트하시기 바랍니다.
2. PandasTools 노출 설정 검토
에이전트에 제공된 도구 목록에 PandasTools의 create_pandas_dataframe 기능이 들어 있는지 확인하십시오. 해당 기능이 비즈니스 로직상 필수적이지 않다면 도구 설정에서 제외해 공격 표면(Attack Surface)을 줄이는 편이 낫습니다.
3. 모델 입력 및 출력 검증 강화
모델이 생성한 함수 이름이 실제 실행 단계로 넘어가기 전에 허용된 함수 목록(Allowlist) 기반의 검증 로직을 추가하길 권합니다. getattr()로 동적으로 함수를 호출하는 구조는 매우 위험하므로, 명시적인 매핑 테이블로 모델의 선택지를 제한하는 편이 안전합니다.
4. 런타임 환경 격리
LLM 에이전트가 실행되는 환경을 샌드박스화하거나 최소 권한 원칙(Principle of Least Privilege)에 따라 실행 권한을 제한해, RCE가 발생하더라도 호스트 시스템으로 영향이 번지지 않도록 조치하십시오.