VPN을 켜도 IP가 새는 안드로이드, 지금 확인할 설정과 업데이트 (Mullvad)

Android의 VPN 차단 설정을 켜도 하드웨어 UDP keep-alive 경로를 악용하면 실제 IP가 노출될 수 있다는 Mullvad의 설명을 정리했습니다. 지금 유지할 설정과 확인할 업데이트를 안내합니다.

일반 앱 트래픽의 VPN 검사 경로와 UDP keep-alive 예외 경로의 처리 범위를 비교한 도식
원문 기반 한글 재구성: VPN 차단 설정의 적용 범위

안드로이드에서 VPN을 켜고 ‘VPN 없이는 연결 차단’까지 활성화했는데도, 악성 앱이 기기의 실제 IP 주소를 외부 서버에 보낼 수 있는 경로가 발견됐다. Mullvad는 9월 10일, 이 방식이 VPN 터널 밖으로 트래픽을 내보내며 특별 권한도 필요로 하지 않는다고 공개했다.

문제는 VPN 서비스 한 곳의 결함이 아니라 안드로이드 네트워크 스택과 네트워크 하드웨어가 UDP 연결을 처리하는 방식에 있다. VPN을 개인 정보 보호의 마지막 설정으로 쓰는 사람이라면, 설정을 꺼야 한다는 뜻이 아니라 그 설정이 막는 경계와 시스템 업데이트가 필요한 경계를 나눠 볼 필요가 있다.

차단 설정은 왜 실제 IP 노출을 막지 못했나

‘VPN 없이는 연결 차단’은 일반 앱 트래픽이 VPN 인터페이스를 거치지 않으면 통신하지 못하게 하는 킬 스위치 성격의 설정이다. 정상 흐름에서는 앱 트래픽이 안드로이드의 VPN 검사를 통과한 뒤 터널로 들어가므로, 외부 서비스가 보는 주소는 VPN 서버 주소가 된다.

Mullvad가 설명한 새 경로는 그 검사 흐름을 타지 않는다. 악성 앱이 특정 UDP keep-alive 연결을 만들도록 요청하면, Wi-Fi 또는 셀룰러 칩이 그 패킷을 하드웨어 수준에서 직접 처리할 수 있다. 이 패킷은 VPN을 거쳐야 한다는 검사보다 아래쪽에서 전송되므로, 차단 설정이 켜져 있어도 기기의 실제 공인 IP가 목적지 서버에 보일 수 있다.

일반 앱 트래픽은 Android VPN 검사를 거쳐 VPN 터널로 들어가지만, 문제의 UDP keep-alive는 네트워크 칩에서 직접 전송될 수 있음을 보여 주는 도식
원문 기반 한글 재구성: VPN 차단 설정의 검사 경계

UDP keep-alive와 포트 4500은 어떤 역할을 하나

keep-alive는 연결이 살아 있음을 주기적으로 알리는 작은 패킷이다. 원래는 NAT 환경에서 연결을 유지하고 NAT 통과를 돕는 용도가 있다. Mullvad는 악성 앱이 이 기능을 악용해 인터넷의 임의 서버를 향하는 UDP 포트 4500 패킷을 보낼 수 있다고 설명했다.

핵심은 패킷의 양이 아니라 경로다. 앱이 요청을 만들고, 안드로이드가 이를 네트워크 하드웨어에 오프로딩하면, 칩이 VPN 검사 경로를 거치지 않고 패킷을 송신한다. 목적지 서버는 이 패킷의 출발지 주소를 볼 수 있으므로, VPN으로 감추려던 실제 IP를 수집할 수 있다. Mullvad는 이 공격에 특별한 권한이 필요 없다고 적었다.

악성 앱의 keep-alive 요청이 Android를 거쳐 Wi-Fi 또는 셀룰러 칩으로 전달되고, VPN 검사를 우회해 인터넷 서버로 UDP 포트 4500 패킷을 보내는 흐름도
원문 기반 한글 재구성: 하드웨어 오프로딩 경로

지금 확인할 설정과 업데이트는 무엇인가

우선 VPN 앱의 ‘VPN 없이는 연결 차단’ 설정은 계속 켜 두는 편이 낫다. 이번 경로를 해결하지는 못해도, 일반적인 VPN 우회 트래픽을 차단하는 기능 자체가 무의미해진 것은 아니다. 이 설정 하나에 모든 네트워크 경로가 묶여 있다고 기대하지 않는 것이 중요하다.

더 직접적인 방어는 설치하는 앱의 범위를 줄이는 데서 시작한다. 이 공격은 악성 앱이 기기에서 먼저 실행돼야 한다. 공식 앱 스토어라고 해서 무조건 신뢰하지 말고, 개발사와 배포처, 요구 권한, 최근 업데이트 이력을 함께 확인해야 한다. 출처가 불분명한 APK와 불필요한 유틸리티 앱은 특히 피하는 편이 낫다.

근본 수정은 안드로이드 시스템에 필요하다. Mullvad에 따르면 발견자는 Android Vulnerability Reward Program에 이 문제를 신고했지만 조치 없이 종료됐다고 밝혔다. GrapheneOS는 수정 작업 중이라고 알렸다. 일반 안드로이드 기기에서는 제조사와 구글의 보안 업데이트에 이 수정이 포함되는지 확인하는 일이 남는다.

신뢰할 수 있는 앱만 설치, VPN 없이 연결 차단 유지, 시스템 업데이트와 GrapheneOS 대응 확인의 세 가지 우선순위를 정리한 도식
원문 기반 한글 재구성: 사용자가 취할 우선순위

VPN 앱이 고칠 수 있는 문제와 시스템이 고쳐야 하는 문제

Mullvad는 네트워크 하드웨어가 만들 수 있는 keep-alive 연결 수가 제한적이라는 점을 이용해, 먼저 연결을 채워 악성 앱의 연결 생성을 막는 이론적 완화책을 언급했다. 그러나 이 방식도 VPN 밖으로 패킷을 보내며, 악성 앱이 VPN 앱보다 먼저 연결을 만들면 막지 못한다. 그래서 Mullvad는 이를 자사 앱에 넣을 계획이 없다고 밝혔다.

이번 사례는 VPN 연결 여부와 기기 전체의 네트워크 격리가 같은 문제가 아니라는 점을 보여 준다. VPN은 여전히 네트워크 감시와 위치 기반 추적을 줄이는 유용한 도구다. 다만 운영체제와 칩이 별도로 처리하는 예외 경로는 VPN 앱이 단독으로 통제할 수 없다. 앱 설치 경로를 보수적으로 관리하고, 보안 업데이트를 미루지 않는 습관이 VPN 설정과 함께 필요하다.

출처: Mullvad, Another way to leak traffic on Android has been discovered