- Google의 공식 발표가 아닌 진행 중인 IssueTracker 기능 요청에서 ADB 핵심 유지보수 담당자가 악용 방지를 위해 로컬 연결을 제한하고
wlan0에만 바인딩하는 방안을 거론함 wlan0만 허용하면 루프백 주소127.0.0.1을 이용하는 기기 내 ADB는 물론 VPN·Ethernet 기반 ADB와 여러 개발 환경까지 작동하지 않을 수 있음- 논의는 Wireless ADB 인증을 완전히 우회한 CVE-2026-0073에서 시작됐으며, 원래 요청은 ADBD의 수신 인터페이스를 선택해 모든 네트워크에 노출되지 않도록 하자는 것임
- 일반적인 악성 앱은 ADBD를 직접 시작하거나 Wireless ADB 페어링·TCP/IP 승인을 단독으로 마칠 수 없어, 사용자의 수동 조작 없이는 ADB 권한을 얻기 어려움
- 루프백 연결을 영구 차단하면 Shizuku와 libadb-android 기반 도구가 영향을 받으므로, 기본 차단을 재부팅 후에도 해제할 수 있는 사용자 선택 설정이 필요함
공식 발표가 아닌 초기 논의
- 이번 사안은 Google의 확정된 정책이나 공식 발표가 아니라, 진행 중인 IssueTracker 기능 요청과 ADB 핵심 유지보수 담당자의 댓글을 근거로 함
- 담당자는 앱이 ADBD의 로컬 소켓을 사용해 권한을 높인 사례를 들어, ADBD를 Wi-Fi 인터페이스인
wlan0에만 바인딩하는 방안을 거론함 - 공개 논의에서는 단순 항의나 모욕, 동일한 사용 사례의 반복을 피해야 함
- 고유한 사용 사례가 있다면 작업 흐름과 관련 링크, 기술적 절충안을 포함해 구체적으로 의견을 남길 수 있음
- 같은 사례가 이미 등록됐다면 댓글을 반복하기보다 +1과 알림 기능을 이용하는 편이 권장됨
- 저품질 댓글이 몰리면 이슈가 잠기거나 유용한 피드백과 공개 업데이트가 줄어들 수 있음
ADB의 세 가지 연결 방식
- ADB는 Android 기기를 시험하고 관리하는 개발자·고급 사용자에게 높은 권한의 명령 접근을 제공하는 프로토콜임
- 주요 연결 방식은 세 가지로 나뉨
- USB: 별도 컴퓨터에서 USB 케이블로 기기에 직접 연결하는 원래 방식임
- ADB TCP/IP: 일반적으로
5555포트를 사용하며 트래픽이 평문으로 전달되고 YES/NO 승인 창으로 인증함. 기존 ADB 연결이 있어야 활성화할 수 있음 - Wireless Debugging: Android 11에서 도입됐으며 코드나 QR 코드로 컴퓨터를 페어링한 뒤 인증·암호화된 연결을 구성함. 활성화에 기존 ADB 연결이 필요하지 않음
기기 내 ADB가 만든 생태계
- 일반적인 ADB는 Android 기기의 ADBD와 별도 개발 컴퓨터의 ADB 클라이언트를 연결하지만, 컴퓨터 없이 Android 기기에서 직접 작업하는 개발자도 있음
- 기기 내 ADB(On-Device ADB) 는 공식 용어가 아니며, Termux 같은 터미널 에뮬레이터에서 ADB 클라이언트를 실행해 같은 기기의 ADBD에 연결하는 방식을 가리킴
- ADB TCP/IP 또는 Wireless Debugging을 사용함
- 클라이언트와 서버가 같은 기기에 있으므로 루프백 주소
127.0.0.1을 통함
- 이 방식은 libadb-android, Shizuku 등 개발자·고급 사용자용 오픈소스 프로젝트의 기반이 됨
- ShizuCallRecorder는 장애로 인한 일상적 어려움을 줄이기 위해 만들어진 Shizuku 기반 앱임
- 한 사용자는 사망한 가족의 음성사서함을 보존하는 데 이 앱을 사용함
- Android 통화 녹음은 사용자 요청이 많았고 Android 11에서 공식 기능이 추진됐다 취소됐으며, 현재는 폐쇄형이거나 사생활 침해 가능성이 있는 우회 앱도 존재함
- 일부 OEM은 법적으로 필요하지 않은 지역에서도 통화 녹음 안내 음성을 강제함
인터페이스 선택 요청과 wlan0 제한
- 새 기능 요청의 본래 목적은 ADBD가 수신할 네트워크 인터페이스를 개발자가 선택할 수 있게 하는 것임
- 배경에는 Wireless ADB 인증 절차를 완전히 우회할 수 있었던 CVE-2026-0073이 있음
- 현재 ADBD는 휴대전화가 연결된 모든 네트워크에서 접근할 수 있어, 인터페이스 선택 기능 자체는 노출 범위를 줄일 수 있음
- 그러나
wlan0만 허용하면 다음 구성이 깨질 수 있음- 루프백을 사용하는 기기 내 ADB
- VPN을 통한 ADB
- Ethernet을 통한 ADB
- 그 밖의 특수한 개발 환경
- Android 개발자도 컴퓨터에 접근할 수 없을 때 기기 내 ADB를 사용한 사례가 있음
악성 앱이 넘어야 하는 제약
- 기기 내 ADB가 권한 상승에 사용될 수는 있지만, 일반적인 악성 앱은 스스로 연결을 성립시킬 수 없음
-
일반 Android 사용자
- ADB가 비활성화돼 있으면 ADBD가 실행되지 않음
- 악성 앱에는 ADB를 통해 수동 부여해야 하는
WRITE_SECURE_SETTINGS권한도 없어 ADB 공격을 시도하기 어려움
-
Android 11 이상에서 Wireless ADB를 사용하는 개발자
- 사용자가 USB 디버깅과 Wireless ADB를 직접 활성화해야 ADBD가 네트워크 인터페이스에서 수신함
- 앱이 연결하려면 사용자가 설정 화면에서 일회용 페어링 코드를 가져와 제공해야 하므로 앱만으로는 연결할 수 없음
-
ADB TCP/IP를 사용하는 개발자
- 사용자가 USB 디버깅을 켜고 USB ADB로 TCP/IP를 활성화한 뒤 케이블을 분리해야 함
- 앱이 연결을 시작하면 화면에 승인 창이 나타나며, 사용자가 No를 선택하면 거부됨
- 정상적인 인증 상태에서는 앱이 사용자 모르게 연결해 공격할 수 없음
취약점 위험과 차단 범위
- 정상적인 상황에서는 악성 앱이 ADBD를 직접 시작할 수 없어, 개발자가 기기에서 ADB를 사용 중일 때만 연결 가능성이 생김
- CVE-2026-0073처럼 인증을 우회하는 취약점이 있다면 Wireless ADB와 TCP/IP 환경에서 악용될 수 있음
- 그래도 사용자가 먼저 USB 디버깅을 수동 활성화해야 함
- TCP/IP 방식은 사용자가 ADB TCP/IP까지 직접 켜야 함
- 루프백 연결을 기본적으로 막는 조치와 사용자가 해제할 수 없도록 영구 차단하는 조치는 구분해야 함
- 기기 관리자 지정이나 접근성 권한도 사용자의 조작으로 악성 앱에 부여될 수 있지만, 그 가능성만으로 기능 자체를 없애지는 않음
사용자 선택권을 남기는 절충안
- 루프백 차단은 사용자가 명시적으로 해제할 수 있는 지속 설정이어야 함
- 재부팅 후에도 유지돼야 Shizuku 같은 도구를 실용적으로 사용할 수 있음
- 가능하면 제3자 앱이 설정 상태를 읽을 수 없어야 은행 앱이나 게임의 탐지를 피하려고 반복해서 설정할 필요가 없음
- 앱에
WRITE_SECURE_SETTINGS를 수동 부여하면 일부 제약을 우회할 수 있음
- 사용자가 보안 기능을 끄고 기기 내 디버깅을 허용하는 동시에, 향후 취약점에 노출될 위험도 감수하는 구조가 적절함
- 기기 내 ADB를 영구 차단하면 다음과 같은 틈새 오픈소스 생태계가 영향을 받음