
CVE-2026-5027에 대한 개념 증명 익스플로잇으로, Langflow의 경로 탐색 취약점으로 인해 임의 파일 쓰기 및 조작된 multipart 파일명을 통한 잠재적 원격 코드 실행이 가능합니다.
이 게시물은 EQSTLab이 발행한 연구 문서입니다.
이 취약점을 발견하고 분석해 주신 Yahia Hamza 님께 감사드립니다.
★ CVE-2026-5027 Langflow 경로 탐색 / 임의 파일 쓰기 PoC ★
CVE-2026-5027 : Langflow 임의 파일 쓰기 취약점
설명: Langflow <= 1.8.4의 경로 탐색 취약점으로, 공격자가 /api/v2/files 엔드포인트에 제공된 조작된 multipart filename을 통해 의도된 업로드 디렉터리 외부에 임의 파일을 쓸 수 있습니다. 자동 로그인이 활성화되어 있거나 인증이 약하게 적용되는 배포 환경에서는 공격자가 제어하는 콘텐츠를 민감한 파일시스템 위치에 기록하여 원격 코드 실행을 달성하는 데 악용될 수 있습니다.
Docker를 사용하여 취약한 환경을 빌드하고 실행합니다:
docker build -t cve-2026-5027 .
docker run --rm -it -p 9013:7860 --name cve-2026-5027 cve-2026-5027
# 비파괴적 검증 (증명 파일)
python3 CVE-2026-5027.py -t <HOST_IP>
# 인증 모드로 검증
python3 CVE-2026-5027.py -t <HOST_IP> -u <USERNAME> -p <PASSWORD>
취약한 엔드포인트
POST /api/v2/files
이 문제는 업로드 기능이 클라이언트가 제공한 multipart filename 값을 신뢰하기 때문에 발생합니다. 안전한 서버 측 저장 이름을 생성하거나 해석된 경로를 전용 업로드 디렉터리로 제한하는 대신, 취약한 코드 경로는 ../와 같은 탐색 시퀀스가 최종 대상 경로에 영향을 미칠 수 있도록 허용합니다.
그 결과, 공격자는 의도된 저장 루트를 벗어나 서버 파일시스템의 임의 위치에 파일을 쓰도록 애플리케이션을 강제할 수 있습니다.
대표적인 공격 흐름은 다음과 같습니다:
/api/v2/files에 multipart 업로드 요청을 제출합니다.filename을 제공합니다.이는 근본적으로 CWE-22: 제한된 디렉터리에 대한 경로명의 부적절한 제한 문제입니다.
이 보안 결함은 업로드 처리 중 사용자 제어 파일 경로에 대한 불충분한 검증 및 삭제로 인해 발생합니다. 애플리케이션은 원본 클라이언트 파일명을 수락하고 경로 정규화 및 격리를 적절히 강제하지 않은 채 저장 워크플로우에 전달합니다.
방어적 관점에서 위험한 패턴은 개념적으로 다음 코드와 유사합니다:
save_path = base_dir / file.filename
file.filename에 다음과 같은 경로 탐색 구성 요소가 포함된 경우:
../../../../tmp/poc.txt
최종 해석 경로가 base_dir 외부를 가리킬 수 있어 임의 파일 쓰기가 가능해집니다.
임의 파일 쓰기 취약점은 공격자가 파일 내용뿐만 아니라 대상 경로도 제어할 수 있기 때문에 일반적인 무제한 업로드 문제보다 훨씬 심각한 경우가 많습니다. Langflow 프로세스의 런타임 권한에 따라 다음이 가능할 수 있습니다:
공격자 --(액세스 토큰 획득 또는 자동 로그인 악용)--> Langflow /api/v2/files --(../가 포함된 조작된 multipart filename 제공)--> 업로드 디렉터리 외부 임의 파일 쓰기 --(민감한 위치에 기록)--> 잠재적 원격 코드 실행
이 저장소는 Langflow 인스턴스에 대한 무단 악용을 용이하게 하기 위한 것이 아닙니다. 이 프로젝트의 목적은 보안 연구자, 방어자, 개발자가 취약점을 이해하고 통제된 환경에서 노출을 검증하며 효과적인 완화 조치를 적용할 수 있도록 돕는 것입니다.