
CVE‑2026‑82329 – Набор инструментов для обхода аутентификации JFrog Artifactory

ТОЛЬКО ЭТИЧНОЕ ИСПОЛЬЗОВАНИЕ – АВТОРИЗОВАННОЕ ТЕСТИРОВАНИЕ БЕЗОПАСНОСТИ
Этот репозиторий предоставляет инструменты только для авторизованных специалистов по безопасности, blue teams и пентестеров.
Несанкционированный доступ к компьютерным системам является незаконным в соответствии с CFAA (США), Computer Misuse Act (Великобритания), TCK 243/244 (Турция) и аналогичными законами по всему миру.
📖 Обзор уязвимости
CVE‑2026‑82329 — критическая уязвимость обхода аутентификации в self-hosted JFrog Artifactory (версии 7.111.x – 7.161.x), позволяющая неаутентифицированному злоумышленнику получить полный токен администратора платформы, злоупотребляя механизмом присоединения к кластеру JFrog Access.
Как это работает
- Доверие к пустому ключу присоединения – JFrog Access доверяет фантомному ключу присоединения, значение которого является пустой строкой. Его секрет подписи, следовательно, является детерминированным значением
32 * 0x20 (пробелы).
- Поддельный join JWT – злоумышленник подделывает HS256 JWT, подписанный этим известным секретом, с
kid = SHA256("").
- Выдача SERVICE-токена –
POST /access/api/v1/registry/join возвращает SERVICE-токен с scp=admin без какой-либо аутентификации.
- Обмен на admin-токен –
POST /access/api/v1/tokens с scope=applied-permissions/admin&audience=* выдаёт полный токен администратора платформы.
- Воздействие – полный захват репозитория, кража токенов, создание административных пользователей, отравление артефактов, атаки на цепочку поставок и боковое перемещение в подключённые сервисы (Xray, Mission Control, Distribution). Немедленно обновитесь!
Уязвимые версии
- 7.111.4 – 7.111.20 – уязвима
- 7.117.0 – 7.117.27 – уязвима
- 7.125.0 – 7.125.19 – уязвима
- 7.133.0 – 7.133.28 – уязвима
- 7.146.0 – 7.146.36 – уязвима
- 7.161.0 – 7.161.19 – уязвима
Патч
- Обновитесь до 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38 или 7.161.20 или новее.
- Если обновление невозможно, ограничьте сетевой доступ к Artifactory (никогда не выставляйте его в интернет) и смените все admin-токены в качестве временного обходного решения.
🧰 Инструменты
| Инструмент | Назначение | Целевой пользователь |
|---|
exploit.py | Полный боевой набор с подделкой JWT, обменом на admin-токен, созданием административных пользователей, массовым сканированием, стелс-режимом, ротацией прокси, интерактивным меню и полной цепочкой атаки. | Red teams / авторизованные пентестеры |
safechecker.py | Неинтрузивный чекер уязвимости, который определяет версию Artifactory, проверяет экспозицию и оценивает риск без получения какого-либо токена или выполнения какой-либо полезной нагрузки. Генерирует JSON-отчёты. | Blue teams / аудиторы безопасности |
📊 Сравнение возможностей
| Возможность | exploit.py | safechecker.py |
|---|
| Обнаружение уязвимости | ✅ | ✅ |
| Определение версии | ✅ | ✅ |
| Поддельный join JWT | ✅ | ❌ |
| Выпуск service-токена | ✅ | ❌ |
| Обмен на admin-токен | ✅ | ❌ |
| Создание административного пользователя | ✅ | ❌ |
| Список репозиториев | ✅ | ❌ |
| Список пользователей | ✅ | ❌ |
| Дамп конфигурации | ✅ | ❌ |
| Дамп токенов | ✅ | ❌ |
| Полная цепочка атаки | ✅ | ❌ |
| Интерактивное меню | ✅ | ❌ |
| Массовое сканирование (многопоточное) | ✅ | ✅ |
| Поддержка прокси | ✅ | ✅ |
| Ротация прокси | ✅ | ❌ |
| Поддержка Tor (анонимность) | ✅ | ❌ |
| Ротация User-Agent (OPSEC) | ✅ | ❌ |
| Джиттер (OPSEC) | ✅ | ❌ |
| Адаптивный ограничитель скорости | ✅ | ❌ |
| Неинтрузивный (безопасный) режим | ❌ | ✅ |
| Отчёт о версии | ✅ | ✅ |
| Проверка анонимного доступа | ❌ | ✅ |
| JSON-отчёт | ✅ | ✅ |
| Очистка логов (антифорензика) | ✅ | ❌ |
| Пользовательский User-Agent | ✅ | ✅ |
| Управление проверкой SSL | ✅ | ✅ |
🎯 Сводка по вариантам использования
| Сценарий | Рекомендуемый инструмент |
|---|
| Blue Team – проверка, уязвим ли ваш Artifactory | safechecker.py |
| Аудит безопасности – неинтрузивная оценка уязвимости | safechecker.py |
| Red Team – авторизованное тестирование на проникновение с полной эксплуатацией | exploit.py |
| Bug Bounty – ответственное раскрытие | safechecker.py |
| Массовое сканирование – проверка нескольких целей на уязвимость | exploit.py (только обнаружение) |
| Реагирование на инциденты – проверка, скомпрометированы ли системы | safechecker.py |
⚙️ Установка
git clone https://github.com/tc4dy/CVE-2026-82329-PoC-Exploit
cd CVE-2026-82329-PoC-Exploit
pip install -r requirements.txt
requirements.txt
requests
urllib3
curl_cffi
📋 Параметры
Параметры exploit.py
| Параметр | Описание |
|---|
-u, --url | URL одной цели Artifactory (например, http://artifactory.example.com:8082) |
-f, --file | Файл со списком целей (по одной в строке) для массового сканирования |
--create-admin | Создать постоянного административного пользователя (формат: USER:PASS) |
--keep-admin | Сохранить созданного административного пользователя (не удалять после сканирования) |
--token-only | Только вывести admin-токен (одна цель) |
--interactive | Интерактивное меню после эксплуатации |
--service-id | Service ID для join JWT (по умолчанию: jfrt@01) |
-t, --threads | Количество потоков для нескольких целей (по умолчанию: 10) |
--timeout | Таймаут запроса (по умолчанию: 25с) |
--retry | Максимум повторных попыток (по умолчанию: 3) |
--proxy | HTTP/HTTPS прокси (например, http://127.0.0.1:8080) |
--proxy-list | Файл с прокси для ротации (по одному в строке) |
--jitter | Случайный джиттер (0‑2 сек) между запросами |
--stealth | Включить стелс-режим (ротация UA + X-Forwarded-For) |
--curl-cffi | Использовать curl_cffi для имперсонации TLS-отпечатка |
--full | Полная атака: все модули |
--dump-config | Дамп системной конфигурации |
--dump-tokens | Дамп всех токенов доступа |
--list-repos | Список репозиториев |
--list-users | Список пользователей |
--detect | Только обнаружение (без обмена на admin-токен) |
--exploit | Выполнить полную эксплуатацию |
-o, --output | Сохранить JSON-отчёт в файл |
-v, --verbose | Подробный вывод |
-q, --quiet | Тихий режим |
Параметры safechecker.py
| Параметр | Описание |
|---|
-u, --url | URL одной цели Artifactory (например, http://artifactory.example.com:8082) |
-f, --file | Файл со списком целей (по одной в строке) |
-t, --threads | Количество потоков для нескольких целей (по умолчанию: 5) |
--timeout | Таймаут запроса (по умолчанию: 10с) |
-v, --verbose | Подробный вывод |
-o, --output | Сохранить JSON-отчёт в файл |
💥 Сценарии