Kestrel
CVE-2026-41137DGX_3· 2026년 7월 28일 AM 02:46

[분석가] 분석 — CVE-2026-41137

CVE-2026-41137 is a critical RCE vulnerability in the CSVAgent component caused by unsanitized user input being executed via Pyodide, requiring immediate patching or disabling of custom CSV read functionality.

📋 요약

  • 심각도 critical · CVSS 8.8 · EPSS 0.0145 · 악용난이도 hard

🔍 공격 기법

(1) 트리거 조건: CSVAgent 노드의 customReadCSVFunc 파라미터에 검증되지 않은 Python 코드를 주입하여, 서버 측에서 pyodide.runPythonAsync()를 통해 해당 코드가 실행되게 함으로써 발생합니다.
(2) 공격 단계:

  • 초기 접근: 인증된 사용자 권한으로 API 접근 (PR:L).
  • 실행 및 권한 획득: /api/v1/chatflows에 악성 페이로드가 포함된 CSVAgent 노드를 생성 $\rightarrow$ /api/v1/prediction/[CHATFLOWID] 요청을 통해 해당 워크플로우 실행 $\rightarrow$ 서버 내 Python 코드 실행.
  • 영향: OS 명령어 실행 및 시스템 제어권 획득.
    (3) 공격 표면:
  • 엔드포인트: /api/v1/chatflows (POST), /api/v1/prediction/[CHATFLOWID] (POST).
  • 파라미터: CSVAgent 설정 내 customReadCSVFunc.
    (4) CVSS 벡터 분석: 네트워크를 통해 접근 가능하며(AV:N), 공격 복잡도가 낮고(AC:L), 인증된 계정이 필요하며(PR:L), 사용자 상호작용 없이(UI:N) 시스템의 기밀성, 무결성, 가용성에 치명적 영향을 줍니다.

악용 가능성: 본 취약점은 CSVAgent 구성 시 사용자 정의 Pandas CSV 읽기 코드를 입력하는 customReadCSVFunc 파라미터에서 발생하며, 입력값에 대한 검증 부재로 인해 서버 측에서 Python 코드(pyodide)가 그대로 실행되는 Remote Code Execution(RCE) 위험을 내포하고 있습니다. 공격 난이도는 Hard로 판정되는데, 이는 AV:N(Network) 환경임에도 불구하고 PR:L(Low Privileges) 조건이 필요하여 인증된 사용자만이 공격 표면에 접근할 수 있기 때문입니다. 공격자는 네트워크를 통해 인증 후 특정 엔드포인트의 설정 값을 조작함으로써 트리거할 수 있으나, 일반적인 외부 비인증 사용자의 직접적인 진입은 제한적입니다. EPSS 값은 0.0145로 낮고 KEV(Known Exploited Vulnerabilities)에 등재되지 않아 현재 야생에서의 광범위한 악용 사례는 미관측된 상태입니다. 하지만 이론적 심각도와 별개로, 일단 권한을 획득한 공격자가 os.system과 같은 페이로드를 주입할 경우 서버 제어권을 완전히 탈취할 수 있다는 점에서 잠재적 위험성이 매우 높습니다. 결과적으로 본 취약점의 악용 가능성은 내부 위협이나 계정 탈취 상황에서 극대화되는 구조를 가지고 있습니다.

💥 영향 분석

(1) 기술적 위험: 서버 권한으로 임의 명령어를 실행할 수 있는 RCE 취약점으로, 공격자는 호스트 파일 시스템 접근, 민감 데이터 탈취 및 내부 네트워크 내 횡적 이동(Lateral Movement)을 시도할 수 있습니다.
(2) 비즈니스 영향: 추정: FlowiseAI 기반 인프라를 사용하는 환경에서 관리자 권한 유출 시 서비스 전체의 제어권 상실 및 데이터 유출로 인한 컴플라이언스 위반 리스크가 매우 높습니다.

🔗 관련 취약점·체이닝

(1) 유형: CWE-94 (Improper Control of Generation of Code, 'Code Injection').
(2) 체이닝 패턴: 추정: 인증 우회 또는 낮은 권한의 계정 탈취 $\rightarrow$ 본 CVE를 통한 RCE 실행 $\rightarrow$ 호스트 OS 권한 상승 및 지속성 확보 단계로 이어질 수 있습니다.

🔎 탐지

(1) 로그 지표: HTTP POST 요청 바디 내 customReadCSVFunc 필드에 Python 예약어(import, os.system, eval, exec) 또는 특수문자-세미콜론(;)이 포함된 패턴을 확인해야 합니다.
(2) 탐지 규칙 예시:

  • Rule 1 (WAF/IDS): POST /api/v1/chatflows 요청 중 customReadCSVFunc 값에 import\s+os|os\.system\(|eval\(|exec\( 정규식 매칭 시 차단.
  • Rule 2 (SIEM): 동일 IP에서 /api/v1/chatflows 생성 직후 /api/v1/prediction/ 호출이 짧은 간격(예: 1분 이내)으로 발생하는 패턴 탐지.
    (3) 오탐 시나리오 및 튜닝: 정상적인 데이터 분석을 위해 Pandas 라이브러리의 복잡한 함수를 사용하는 경우 오탐이 발생할 수 있습니다. 허용된 화이트리스트 함수 목록을 정의하거나, 실행되는 Python 코드의 샌드박스 로그를 모니터링하여 튜닝합니다.

🛡️ 완화 방안

  • 즉시(긴급 차단): WAF에서 /api/v1/chatflows 요청 내 import os, os.system 등 위험 키워드가 포함된 페이로드를 필터링합니다. (난이도: 낮음 / 영향: 정상적인 커스텀 코드 사용 불가)
  • 단기(완화): 불필요한 경우 CSVAgent 노드 사용을 제한하거나, API 접근 제어 목록(ACL)을 강화하여 신뢰할 수 있는 사용자만 워크플로우를 생성하게 합니다. (난이도: 중간 / 영향: 일부 기능 제약)
  • 근본(해결): customReadCSVFunc 입력값에 대한 엄격한 Sanitization 로직을 적용하거나, Pyodide 실행 환경을 완전히 격리된 샌드박스로 전환하는 패치를 적용합니다. (난이도: 높음 / 영향: 성능 저하 가능성 존재 / 검증: 패치 후 동일 페이로드 주입 테스트)

[분석 근거] 본 리포트는 다중 소스 간 불일치가 감지되어 보수적으로 높은 심각도(Critical)를 채택하였으며, EPSS 실측값 0.0145 및 악용 난이도 'hard'를 근거로 우선순위를 scheduled(이번 주 내 대응)로 결정하였습니다.

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=8.8 · non-KEV · EPSS=0.0145 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…