Langflow – 개발자가 LLM 프롬프트, 데이터 소스 및 사용자 정의 Python 코드를 하나로 엮을 수 있게 해주는 오픈 소스 플랫폼 – 에서 취약한 서버에 누구나 임의의 Python 코드를 실행할 수 있는 치명적인 결함이 발견되었습니다. CVSS 점수 9.8로 평가된 CVE-2026-33017은 1.9.0 이전의 모든 버전에 영향을 미치며, 인증 없이도 트리거될 수 있어 운영자는 반드시 업그레이드를 하거나 “public flow” 기능을 꺼야 합니다.

버그의 동작 방식

Langflow의 public-flow 엔드포인트는 로그인 없이 누구나 체험해 볼 수 있는 데모 스타일의 챗봇을 위해 설계되었습니다. 이 엔드포인트는 요청 본문(request body)에서 data 파라미터를 수락하고, 페이로드가 안전한 flow 정의를 포함하고 있다고 가정하며, 그 내용을 Python의 내장 exec() 함수로 직접 전달합니다. exec()는 문자열을 코드로 평가하여 Langflow 프로세스와 동일한 권한으로 실행합니다.

공격자는 공유된 URL에 자주 표시되는 값인 public flow의 ID만 있으면 악성 flow 정의로 교체하는 요청을 생성할 수 있습니다. 서버가 이 요청을 처리하면 주입된 Python 코드가 즉시 실행되어, 공격자가 호스트 시스템에 대한 완전한 제어권을 갖게 됩니다.

취약점이 발생한 원인

이전 버전에서는 data 필드가 존재할 경우 데이터베이스에서 flow를 로드하는 코드 경로가 우회되었습니다. 서버는 페이로드를 정제하거나 검증하는 대신 호출자를 신뢰하고 이를 있는 그대로 실행했습니다. 이 엔드포인트는 로그인 없이도 접근할 수 있기 때문에, public flows 기능이 활성화된 모든 Langflow 인스턴스에 대해 공격 표면은 공용 인터넷 전체가 됩니다.

위험 대상

심각도 점수를 고려할 때, 이 취약점은 “critical(치명적)”인 것으로 간주됩니다.

즉각적인 완화 조치

  1. Langflow 1.9.0으로 업그레이드 – 이것이 유일하게 검증된 해결책입니다.
  2. 익명 액세스가 필요하지 않은 경우 public flow 기능을 비활성화하십시오.
  3. AUTO_LOGIN을 끕니다 – 이를 통해 인증되지 않은 요청에 대한 자동 세션 생성을 중단할 수 있습니다.
  4. 신뢰할 수 있는 IP 범위로 액세스를 제한하기 위해 API를 방화벽 또는 리버스 프록시 뒤에 배치하십시오.
  5. data 파라미터를 포함하는 build_public_tmp 엔드포인트로의 요청을 차단하는 웹 애플리케이션 방화벽(WAF)을 배포하십시오.

수정이 중요한 이유

이 취약점은 높은 권한으로 실행되는 컨텍스트에서 사용자가 제공한 코드를 신뢰하는 근본적인 설계 오류를 악용합니다. Langflow 1.9.0은 이러한 신뢰를 제거하고 더 엄격한 입력 처리를 강제함으로써, 공개 데모 사용자와 기본 서버 사이의 장벽을 복구합니다.

향후 주의 사항

  • 커뮤니티 대응 – 후속 패치나 권고 사항이 있는지 Langflow 저장소를 모니터링하십시오.

결론: public-flow 엔드포인트를 노출하는 모든 Langflow 배포 환경은 오늘 즉시 패치해야 합니다. 버전 1.9.0이 실행될 때까지 해당 기능을 중단하고 네트워크 제어를 통해 서비스를 방어하십시오. 침해 사고로 인한 비용은 빠른 업그레이드에 드는 노력보다 훨씬 큽니다.