Sploitus

Exploit for CVE-2026-0073-Android-ADBD-bypass-POC

kitploit · 2026-08-27

Exploit Code

MARKDOWN178 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MARTINPSDEV-CVE-2026-0073-ANDROID-ADBD-BYPASS-POC
# CVE-2026-0073 — Обход аутентификации TLS в Android ADBD

### Путаница типов в `EVP_PKEY_cmp()` → несанкционированный доступ к ADB shell

![Python 3.10+](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white) ![CVE-2026-0073](https://img.shields.io/badge/CVE--2026--0073-CRITICAL-DC3545?style=for-the-badge) ![Android](https://img.shields.io/badge/Android-14+-3DDC84?style=for-the-badge&logo=android&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)

* * *

## 🔥 Обзор

**Критический обход аутентификации** в демоне ADB Android (`adbd`) позволяет любому атакующему в локальной сети получить **полный shell** на целевом устройстве **без авторизации пользователя**.

Уязвимость существует в `adbd_tls_verify_cert()` внутри `daemon/auth.cpp`, где `EVP_PKEY_cmp()` используется как логическое значение. Когда сохранённый ключ является **RSA** , а представленный TLS-сертификат клиента содержит **не-RSA ключ** (EC P-256 или Ed25519), `EVP_PKEY_cmp()` возвращает **-1** (несоответствие типов), что является **истинным в C/C++** , поэтому `authorized = true`.

root@kitploit:~
    
    
    // Уязвимый фрагмент кода в daemon/auth.cpp
    if (EVP_PKEY_cmp(peer_key, stored_key)) {  // ← ОШИБКА: -1 истинно!
        authorized = true;
    }
    

* * *

## ⚡ Быстрый старт

### Установка зависимостей

root@kitploit:~
    
    
    pip install cryptography
    

### Запуск эксплойта

root@kitploit:~
    
    
    # Интерактивный shell
    python adb_tls_auth_bypass.py <IP_ЦЕЛИ> <ПОРТ>
    
    # Выполнение одной команды
    python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id"
    
    # Подробный режим (полный протокол трассировки)
    python adb_tls_auth_bypass.py 192.168.1.42 37521 -v --cmd "id"
    

### Принудительное указание типа ключа

root@kitploit:~
    
    
    python adb_tls_auth_bypass.py 192.168.1.42 5555 --key-type ec
    python adb_tls_auth_bypass.py 192.168.1.42 5555 --key-type ed25519
    

> По умолчанию скрипт автоматически перебирает **EC P-256 → Ed25519 → EC/TLS 1.2** , пока один из вариантов не сработает.

* * *

## 🎯 Схема эксплойта

root@kitploit:~
    
    
       Атакующий                          Цель (adbd)
          │                                    │
          │──── TCP connect ──────────────────►│
          │──── CNXN (открытый текст) ────────►│
          │◄─── STLS (запрос обновления TLS) ─│
          │──── Ответ STLS ──────────────────►│
          │                                    │
          │════ Рукопожатие TLS 1.3 ══════════│
          │  (представлен сертификат клиента EC P-256)  │
          │  EVP_PKEY_cmp(EC, RSA) → -1       │
          │  -1 истинно → authorized=true     │
          │════════════════════════════════════│
          │                                    │
          │◄─── CNXN (информация об устройстве) ─│
          │──── OPEN "shell:" ───────────────►│
          │◄─── OKAY ────────────────────────│
          │◄──► WRTE/OKAY (ввод/вывод shell) ─►│
          │                                    │
        [ПОЛНЫЙ ДОСТУП К SHELL]                │
    

* * *

## 📋 Предварительные требования

Требование  
---  
  
> ⚠️ **Важно:** RSA-ключ должен находиться в `/data/misc/adb/adb_keys`, который заполняется через **сопряжение отладки по USB** (подтверждение диалога «Разрешить отладку по USB?»). Сопряжение беспроводной отладки (`adb pair`) сохраняет ключи в **другом месте** (`adb_known_hosts.pb`) и НЕ удовлетворяет этому требованию.

* * *

## 🛡️ Затронутые версии

  * **Android 14** (AOSP) — ✅ Подтверждённая уязвимость
  * **Android 15** (AOSP) — Вероятно, уязвим (непатченные сборки)
  * Сборки конкретных производителей могут отличаться (Samsung One UI, Pixel и т. д.)



### Как проверить уровень патча

root@kitploit:~
    
    
    adb shell getprop ro.build.version.security_patch
    

* * *

## 🧪 Тестовая среда

Протестировано и подтверждено на:

root@kitploit:~
    
    
    Kernel:   6.1.23-android14-4-00257-g7e35917775b8-ab9964412
    Platform: Android 14 (Android Studio Emulator)
    

* * *

## 🔧 Улучшения по сравнению с оригиналом

Этот форк включает несколько улучшений:

  * ✅ **Множественный запасной вариант ключей** — Автоматический перебор EC P-256 → Ed25519 → EC/TLS 1.2
  * ✅ **Поддержка Ed25519** — Альтернативный тип ключа для более широкой совместимости
  * ✅ **Запасной вариант TLS 1.2** — Другой поток сертификата клиента (отправка во время рукопожатия вместо после рукопожатия)
  * ✅ **Расширенный сертификат** — Правильные расширения X.509 (BasicConstraints, KeyUsage)
  * ✅ **Совместимость с Windows** — Использование потокового ввода/вывода вместо `select()` для кроссплатформенной поддержки
  * ✅ **Увеличенные таймауты** — Лучшая надёжность на медленных сетях
  * ✅ **Подробная диагностика** — Детальная трассировка протокола с флагом `-v`



* * *

## 📁 Структура проекта

root@kitploit:~
    
    
    CVE-2026-0073-Android-ADBD-bypass-POC/
    ├── adb_tls_auth_bypass.py    # Основной скрипт эксплойта
    └── README.md                 # Этот файл
    

* * *

## ⚠️ Отказ от ответственности

Этот инструмент предоставляется **только для авторизованного тестирования безопасности и образовательных целей**. Несанкционированный доступ к компьютерным системам незаконен. Всегда получайте надлежащее разрешение перед тестированием. Автор не несёт ответственности за неправомерное использование этого программного обеспечения.

* * *

## 📚 Ссылки

  * CVE-2026-0073 — MITRE
  * Бюллетень безопасности Android
  * Документация OpenSSL `EVP_PKEY_cmp`
  * Справочник по протоколу ADB



* * *

**Если это помогло вашему исследованию, поставьте ⭐**