
Оружиезированный proof-of-concept для CVE-2026-0073 — обход аутентификации Android adbd, обеспечивающий удалённый root-доступ без взаимодействия с пользователем через Wireless ADB, с модулями пост-эксплуатации для профилирования, извлечения данных и закрепления в системе.
Рабочий Proof of Concept для уязвимости обхода TLS-аутентификации Wireless ADB. Обнаружена Barghest, рабочий PoC от devtint.
CVE-2026-0073 — это критическая ошибка криптографической логики в демоне Android Debug Bridge (adbd), которая предоставляет неаутентифицированному атакующему в той же локальной сети Zero-Click удалённый root-доступ.
Этот репозиторий содержит:
adb_tls_auth_bypass.py — Чистый автономный PoC для обхода аутентификации STLS/TLS.main.py — Расширенный фреймворк эксплуатации с автоматическим профилированием, извлечением артефактов и внедрением персистентности.Уязвимость существует в daemon/auth.cpp внутри функции adbd_tls_verify_cert(). Когда клиент подключается через Wireless ADB (путь STLS), происходит взаимное TLS 1.3 рукопожатие. Устройство сравнивает открытый ключ клиента с сохранёнными авторизованными ключами с помощью OpenSSL EVP_PKEY_cmp().
// daemon/auth.cpp — Уязвимая логика
if (EVP_PKEY_cmp(stored_key, client_key)) {
// EVP_PKEY_cmp возвращает:
// 1 = ключи совпадают
// 0 = ключи различаются
// -1 = несоответствие типов (RSA vs EC) ← ОШИБКА: истинно в C++
authorized = true;
}
EVP_PKEY_cmp() возвращает -1 (несоответствие типов).-1 вычисляется как true.adbd интерпретирует это -1 как полное совпадение.Эта эксплойт работает только на пути Wireless Debugging STLS, а не на устаревшем пути adb tcpip.
| Режим подключения |
|---|
192.168.1.34:38741)Это означает, что вы подключаетесь к устаревшему ADB TCP-порту (обычно 5555). Устаревший путь использует старое RSA AUTH-рукопожатие — совершенно другой путь кода в adbd, который не затронут этой CVE. Вместо этого необходимо подключаться к порту беспроводной отладки.
Фреймворк (main.py) расширяет базовый обход TLS в модульный набор инструментов пост-эксплуатации:
uid=0(root).--profile): Мгновенно определяет ОС цели, уровень патчей безопасности, статус SELinux и активные таблицы маршрутизации для перемещения по внутренней сети.--extract): Автоматически выгружает высокочувствительные системные файлы (например, /data/misc/adb/adb_keys, /system/build.prop) напрямую через сокет обхода.--persist): Внедряет поддельный RSA-ключ в файл авторизованных ключей цели. После внедрения атакующий сохраняет постоянный, полностью аутентифицированный доступ, даже если CVE позже будет исправлена.Установка зависимостей:
pip install cryptography
Поиск цели: Найдите устройство Android с включённой беспроводной отладкой в вашей локальной подсети. Запишите динамический порт с экрана «Параметры разработчика» устройства.
Запуск фреймворка эксплуатации:
# Интерактивная оболочка (по умолчанию)
python main.py <IP> <PORT>
# Выполнение одной команды
python main.py <IP> <PORT> --cmd "id"
# Автоматическое профилирование системы
python main.py <IP> <PORT> --profile
# Скрытое извлечение артефактов
python main.py <IP> <PORT> --extract
# Внедрение постоянного бэкдор-ключа
python main.py <IP> <PORT> --persist
Автономный PoC (минимальный):
python adb_tls_auth_bypass.py <IP> <PORT> --cmd "id; whoami"
Этот репозиторий предназначен строго для образовательных целей, red teaming и авторизованного тестирования безопасности. Несанкционированный доступ к компьютерным системам незаконен. Автор не несёт ответственности за неправомерное использование этой информации.
| Порт |
|---|
| Протокол |
|---|
| Уязвим? |
|---|
adb tcpip 5555 (устаревший) | 5555 (фиксированный) | AUTH (RSA-вызов) | ❌ Нет |
| Wireless Debugging (Android 11+) | Случайный (30000–50000) | STLS → TLS 1.3 | ✅ Да |
| Ошибка | Причина | Решение |
|---|
Connection refused | Порт закрыт / беспроводная отладка ВЫКЛ | Включите беспроводную отладку, используйте правильный динамический порт |
AUTH instead of STLS | Подключение к устаревшему ADB TCP (порт 5555) | Используйте порт беспроводной отладки, а не 5555 |
SSLV3_ALERT_CERTIFICATE_UNKNOWN | Устройство запатчено (май 2026+) | Цель не уязвима — исправление работает |
timed out | Порт открыт, но не отвечает корректно | Проверьте порт, перезапустите беспроводную отладку на устройстве |