안드로이드, VPN 차단을 켜도 권한 없는 앱이 UDP 4500 패킷으로 실제 IP 노출 가능
- 안드로이드의 새 네트워크 스택 취약점으로 권한이 없는 앱도 "VPN 없이는 모든 연결 차단"을 켠 상태에서 트래픽을 VPN 터널 밖으로 보낼 수 있음
- 악성 앱은 하드웨어 Wi-Fi 또는 셀룰러 칩에 오프로딩되는 NAT-T keep-alive UDP 연결을 만들고, 임의 인터넷 서버의 UDP 4500번 포트로 패킷을 전송해 실제 IP를 노출함
- 이 keep-alive 패킷은 네트워크 하드웨어가 직접 보내므로 안드로이드의 VPN 강제 경로 검사를 우회하며, 근본 수정에는 안드로이드 시스템 변경이 필요함
- 발견 연구자는 Android Vulnerability Reward Program에 신고했지만 조치 없이 이슈가 닫혔다고 밝혔고, GrapheneOS는 수정 작업을 진행 중임
- 하드웨어의 keep-alive 연결 수 제한을 모두 채워 악성 앱 생성을 막는 방법은 이론상 가능하지만, Mullvad는 터널 밖 패킷을 보내야 하고 선점 공격도 가능해 제공할 계획이 없음
Hacker News opinions
구글이 이걸 닫고 아무 조치도 안 했다면, 또 이 모양이라는 말밖에 안 나옴.
연구자 말이 맞다면 구글이 의도적으로 넣었거나 계속 남겨두려 했을 가능성도 배제 못 함.
'배제 못 한다'보다 더 강하게 봄. 어떻게 들어갔든 지금 알려진 뒤에 이슈를 닫았다면, 구글이 유지하기로 선택한 거임.
급한 우회책으로는 이런 연결 기능이 없는 USB-C WLAN 어댑터를 쓰는 방법이 있겠네. 다만 셀룰러 연결에는 소용없음.
원문보다 이 논문이 기술 내용을 훨씬 자세히 설명함: