Android'de VPN tüneli dışına DNS trafiği sızabilir
DNS sızıntısı senaryolarının tespiti
- Son zamanlarda Android'de çoklu DNS sızıntısı olasılığını keşfettik
- Android'e ait bir hatadan kaynaklanıyor ve yalnızca belirli uygulamaları etkiliyor
- 22 Nisan Pazartesi, DNS sızıntısı bir Reddit kullanıcı bildirimiyle fark edildi
- Kullanıcı, "VPN olmadan bağlantıları engelle" ayarı açıkken VPN'i kapatıp açarak DNS sorgularının sızdığını keşfetti
- İç incelemeyi hemen başlattık ve sorunun doğrulanmasını sağladık
- İnceleme, Android'de DNS sızıntısına neden olabilecek daha fazla senaryonun olduğunu gösterdi
Bulgular
Android OS'de DNS trafiğinin sızabileceği senaryoları belirledik:
- DNS sunucusu yapılandırılmamışken VPN etkinse
- VPN uygulaması tüneli yeniden yapılandırdığı veya zorla durdurulup çökertildiği sırasında kısa süreliğine
Sızıntı, C fonksiyonu getaddrinfo için doğrudan çağrı ile sınırlı görünüyor:
- Yukarıda sıralanan senaryolarda, bu yöntemi kullanarak alan adı çözümlemesi yapan uygulamalar sızıntı yapıyor
- Sadece
DnsResolvergibi Android API'lerini kullanan uygulamalarda sızıntı gözlemlenmedi - Chrome tarayıcısı,
getaddrinfoyi doğrudan kullanabilen uygulamalara bir örnektir
Yukarıdaki durumlar, Always-on VPN ve Block connections without VPN etkinleştirilmiş olsun ya da olmasın geçerlidir:
- Bu, beklenen bir OS davranışı değil; işletim sisteminin upstream tarafında düzeltilmesi gerekiyor
Android 14 dâhil olmak üzere farklı Android sürümlerinde bu tür sızıntılar görüldü
İyileştirmeler
Uygulama şu anda blok durumunda DNS sunucusu ayarlamaz:
- Uygulama, geri döndürülemeyecek şekilde tünel kuramazsa blok durumuna geçer
- Bu durumda cihazdan trafik çıkışı durdurulur
- Ancak bu durumda DNS sunucusu ayarlanmadığı için yukarıda anlatılan DNS sızıntısı oluşabilir
- Geçici olarak sahte bir DNS sunucusu ayarlayarak OS hatasını çözmeyi planlıyoruz
- Bu düzeltmeyi içeren bir sürümün yakında yayınlanmasını bekliyoruz
Tünel yeniden bağlanırken sızıntıyı uygulama tarafında hafifletmek daha zordur:
- Hâlâ çözüm arıyoruz
- Tünel yeniden yapılandırmalarını en aza indirebiliriz, ancak şu an için bu sızıntıyı tamamen önleyebileceğimizi düşünmüyoruz
Hiçbir VPN uygulamasının böyle bir düzeltmeye ihtiyaç duymaması gerektiğini netleştirmek gerekir:
- Uygulamaların alan adını çözmek için
getaddrinfokullanması yanlış değildir - Bunun yerine, hangi uygulama kullanılırsa kullanılsın tüm Android kullanıcılarını korumak için bu sorunun OS tarafında çözülmesi gerekir
Google'a sorunu bildirdik ve iyileştirme önerisinde bulunduk; hızlı bir şekilde ele alınmasını umuyoruz
Yeniden Üretim Adımları
Aşağıdaki adımlar, yukarıdaki ikinci senaryoyu yeniden üretir; burada VPN kullanıcısı tünel yapılandırmasını değiştirir (ör. başka bir sunucuya geçmek veya DNS sunucusunu değiştirmek):
- WireGuard uygulamasını kullanıyoruz çünkü bu, Android VPN için referans bir uygulamadır
- Sızıntının büyük olasılıkla diğer Android VPN uygulamalarıyla da yeniden üretilebileceğini unutmayın
getaddrinfokullandığını doğrulanmış uygulamalardan biri olduğundan sızıntıyı tetiklemek için Chrome kullanıyoruz
-
spam_get_requests.html dosyasını indirin
-
WireGuard uygulaması ve Chrome'u yükleyin
-
wg1.conf,wg2.confdosyalarını WireGuard'a alın -
WireGuard uygulamasında
wg1tünelini etkinleştirip VPN iznini onaylayın -
Android VPN ayarlarından WireGuard için "Always-on VPN" ve "Block connections without VPN" seçeneklerini açın
-
Router'da
tcpdumpile veri yakalamaya başlayın$ tcpdump -i <INTERFACE> host <IP of android device> -
WireGuard ve Chrome'u yan yana görebilmek için ekranı bölünmüş moda alın
-
Chrome'da
spam_get_requests.htmldosyasını açın ve "Start"a tıklayın -
WireGuard uygulamasında
wg1vewg2arasında geçiş yaparak, bir sonraki adımda sızıntı gözlenene kadar bunu tekrar edin -
Router'da aşağıdaki DNS trafiğini gözlemleyin:
11:50:27.816359 IP Pixel-Tablet.lan.53353 > OpenWrt.lan.53: 11200+ A? 307lf5rgn6-19282-11-50-27-519z.mullvad.test.lan. (65) 11:50:27.816359 IP Pixel-Tablet.lan.48267 > OpenWrt.lan.53: 44347+ A? 307lf5rgn6-19284-11-50-27-579z.mullvad.test.lan. (65) 11:50:27.816396 IP Pixel-Tablet.lan.16747 > OpenWrt.lan.53: 44584+ A? 307lf5rgn6-19289-11-50-27-729z.mullvad.test. (61) 11:50:27.816458 IP OpenWrt.lan.53 > Pixel-Tablet.lan.53353: 11200 NXDomain 0/0/0 (65) 11:50:27.816476 IP Pixel-Tablet.lan.45727 > OpenWrt.lan.53: 40503+ A? 307lf5rgn6-19290-11-50-27-759z.mullvad.test. (61) 11:50:27.816542 IP OpenWrt.lan.53 > Pixel-Tablet.lan.48267: 44347 NXDomain 0/0/0 (65) 11:50:27.816588 IP Pixel-Tablet.lan.43821 > OpenWrt.lan.53: 36295+ A? 307lf5rgn6-19291-11-50-27-789z.mullvad.test. (61) 11:50:27.816625 IP OpenWrt.lan.53 > Pixel-Tablet.lan.16747: 44584 NXDomain 0/0/0 (61)
"Block connections without VPN" etkin olsa da, şifrelenmiş WireGuard trafiği dışında cihazdan hiçbir şey çıkmaması gerekirken burada düz metin DNS paketlerinin dışarı gittiği görülüyor
Sonuç ve Öneriler
DNS sızıntısı, kullanıcının gizliliğini ciddi şekilde etkileyebilir; kullanıcının yaklaşık konumunu, kullandığı web sitelerini ve hizmetleri ortaya çıkarmak için kullanılabilir
Bu bulgular, "Block connections without VPN" etiketinin (veya belgesinin) yetersiz olduğunu ve birden fazla sorunu bir kez daha gösteriyor:
- Yukarıda belirtilen koşullarda, uygulamalar hâlâ DNS trafiği sızdırabiliyor
- Daha önce bildirilen bağlantı doğrulama trafiği sızıntısı hala devam ediyor
Tehdit modelinize göre hassas görevler için Android'i tamamen kullanmamayı ya da sızıntıyı engellemek amacıyla farklı azaltıcı önlemler almayı düşünebilirsiniz:
- Uygulamanın bu sorunu kısmi olarak hafifletmeyi hedeflediği için, uygulamayı güncel tutmanız gerekir
GN⁺ Görüşleri
- Sorunun temelde Android OS hatasından kaynaklandığı açık; bu nedenle Google'ın yakın zamanda düzeltmesi gerekiyor. VPN uygulaması yapan tüm geliştiricilerin bu sorunu tek tek çözmeye çalışması doğru değildir
- "Block connections without VPN" seçeneğinin belgelendiği gibi çalışmaması ve DNS sızıntısının olması kullanıcılar için büyük bir sorundur. VPN'in ana kullanım amaçlarından biri gizlilik korumasıdır; DNS sızıntısı nedeniyle kullanıcıların web kullanımı gibi verileri açığa çıkabilir
- VPN tünel güvenliği hâlâ yüksek sayılabilir, ancak işletim sisteminin istem dışı sızıntı üretmesini önlemek için VPN dışında ek güvenlik/gizlilik çözümlerini birlikte kullanmak da düşünülmelidir
- Uygulama geliştiricileri açıktır, OS hatasını atlatmak için uygulamada geçici tamamlama girişimleri yapmakta; ancak uzun vadede kök nedeni gidermek üzere OS iyileştirilmesi gerektiği görülmektedir
- VPN teknolojisi gelişip yaygınlaştıkça bu tür güvenlik meseleleri öne çıkıyor. Gelecekte de mobil OS'lerin ağ ve VPN işlevlerine yönelik güvenlik denetimi ve sürekli iyileştirme gerekecektir
1 yorum
Hacker News yorumları