GrapheneOS가 Google이 패치하지 않겠다고 한 Android VPN 유출을 수정
2 hours ago
1
- GrapheneOS가 Android의 “Always-On VPN”과 “Block connections without VPN”이 켜져 있어도 실제 IP 주소가 유출될 수 있는 VPN 우회 취약점을 새 업데이트에서 수정함
- 취약점은 Android 16 네트워킹 스택의 QUIC 연결 종료 기능에서 비롯됐으며, 일반 앱이 표준 권한만으로 UDP 페이로드를 system_server에 등록할 수 있었음
- 앱의 UDP 소켓이 파괴되면 권한 있는 system_server가 저장된 페이로드를 VPN 터널이 아닌 물리 네트워크 인터페이스로 직접 보내 VPN 잠금 보호를 우회함
- Google은 해당 문제를 “Won’t Fix (Infeasible)” 및 “NSBC”로 분류했고, Android 보안 권고 기준을 충족하지 않는다고 판단해 기존 입장을 유지함
- GrapheneOS는 release 2026050400에서 “registerQuicConnectionClosePayload optimization”을 비활성화했으며, 2026년 5월 Android 보안 패치, hardened_malloc 개선, Linux 커널 업데이트, libpng CVE-2026-33636 백포트 수정도 포함함
취약점의 동작 방식
- Yusuf의 기술 분석에 따르면, 취약한 API는 자동으로 부여되는 INTERNET 및 ACCESS_NETWORK_STATE 권한만 가진 일반 앱이 임의의 UDP 페이로드를 system_server에 등록할 수 있게 했음
- 이후 앱의 UDP 소켓이 파괴되면 Android의 권한 있는 system_server 프로세스가 저장된 페이로드를 VPN 터널이 아니라 기기의 물리 네트워크 인터페이스로 직접 전송함
- system_server는 상승된 네트워킹 권한으로 동작하고 VPN 라우팅 제한에서 제외되기 때문에, 해당 패킷은 Android의 VPN 잠금 보호를 완전히 우회함
- 보안 연구자 lowlevel/Yusuf는 Proton VPN과 Android 잠금 모드를 함께 켠 Android 16 기반 Pixel 8에서 취약점을 시연함
- 해당 앱은 VPN 보호가 완전히 활성화된 상태에서도 기기의 실제 공인 IP 주소를 원격 서버로 유출함
원인과 Google의 처리
- Google은 소켓이 예기치 않게 파괴될 때 애플리케이션이 QUIC 세션을 정상적으로 종료할 수 있도록 하는 기능을 도입함
- 구현은 임의 페이로드를 받아들이면서, 해당 페이로드가 합법적인 QUIC CONNECTION_CLOSE 프레임인지 검증하지 않았음
- 구현은 원래 애플리케이션이 VPN 전용 트래픽으로 제한되어 있는지도 확인하지 않았음
- 연구자는 이 문제를 Android 보안팀에 보고했지만, Google은 이를 “Won’t Fix (Infeasible)” 및 “NSBC”(Not Security Bulletin Class)로 분류함
- Google은 이 문제가 Android 보안 권고에 포함될 기준을 충족하지 않는다고 판단함
- 연구자는 표준 권한만으로도 어떤 앱이든 식별 가능한 네트워크 정보를 유출할 수 있다고 재검토를 요청했지만, Google은 기존 입장을 유지했고 4월 29일 공개를 승인함
GrapheneOS 업데이트와 완화책
- GrapheneOS는 Google Pixel 기기용으로 주로 개발되는 개인정보 보호·보안 중심 Android 기반 운영체제이며, 더 강한 애플리케이션 샌드박싱, 익스플로잇 완화, Google 서비스 의존도 감소를 원하는 사용자층이 사용함
- GrapheneOS는 release 2026050400에서 해당 최적화를 완전히 비활성화해 VPN 유출을 막음
- Yusuf는 GrapheneOS가 1주일도 되지 않아 수정 배포를 완료했다고 밝힘
- 최신 릴리스에는 VPN 유출 수정 외에도 2026년 5월 Android 보안 패치 레벨 전체가 포함됨
- 업데이트에는 여러 hardened_malloc 개선, Android의 6.1·6.6·6.12 브랜치 전반의 Linux 커널 업데이트, libpng의 CVE-2026-33636 백포트 수정이 포함됨
- 새 Vanadium 브라우저 빌드와 확장된 Dynamic Code Loading 제한도 함께 제공됨
- 기본 Android 사용자는 ADB를 통해 close_quic_connection DeviceConfig 플래그를 비활성화하면 임시로 문제를 완화할 수 있음
- 이 우회책은 개발자 접근 권한이 필요함
- Google이 향후 업데이트에서 해당 기능 플래그를 제거하면 이 완화책은 계속 유지되지 않을 수 있음
-
Homepage
-
Tech blog
- GrapheneOS가 Google이 패치하지 않겠다고 한 Android VPN 유출을 수정