Saldırganlar, yönlendirme tabanlı VPN açığa çıkarması yapabiliyor
(leviathansecurity.com)- TunnelVision (CVE-2024-3661), DHCP’nin mevcut bir özelliğini kötüye kullanarak kullanıcının trafiğini VPN tünelinin dışına saptırıyor; bu sırada paketler VPN ile şifrelenmiyor
- Saldırgan, DHCP option 121 ile daha spesifik rotalar enjekte ederek VPN sanal arayüzünden daha yüksek önceliğe sahip yollar oluşturabiliyor ve trafiği fiziksel arayüze gönderebiliyor
- Hedef saldırganın kontrol ettiği DHCP kiralamasını kabul eder ve istemci option 121’i uygularsa saldırı mümkün; testlerde Windows, Linux, iOS ve macOS etkilenirken Android hariç tutuldu
- VPN kontrol kanalı çalışmaya devam ettiği için kullanıcı bağlantıyı aktif görmeye devam ediyor; gözlemlenen örneklerde kill switch bile trafik sızıntısını engelleyemedi
- Linux’taki network namespace güçlü bir çözüm olabilir, ancak güvenlik duvarı tabanlı azaltmalar seçici hizmet reddi ve trafik hedefi çıkarımı için yan kanal oluşturabilir
TunnelVision’ın oluşturduğu VPN decloaking
- TunnelVision, VPN kapsüllemeyi atlayarak kullanıcının trafiğini tünel dışına zorla gönderen bir ağ tekniğidir
- Saldırgan, DHCP (Dynamic Host Configuration Protocol) kullanarak hedef paketlerin VPN ile şifrelenmeden iletilmesini sağlayabilir
- VPN kontrol kanalı korunduğu için kullanıcı VPN’e bağlı görünmeye devam eder; bu etkiye decloaking denir
- Bu teknik 2002’ye kadar uzanıyor olabilir ve açıklanmasının ardından DHCP option 121 ile VPN etkisine dair önceki araştırmaların en az 2015’ten beri var olduğu doğrulandı
- 2015: Hardening OpenVPN for Def Con
- 2016: Samy Kamkar's
- 2017: Jomo's Mastodon
- 2023: Lowend talk thread
VPN yönlendirmesi neden bir saldırı yüzeyi oluyor
- VPN, ana cihaz ile başka bir ağdaki sunucu arasında trafik için bir tünel oluşturur ve VPN istemcisi sanal ağ arayüzünde trafiği şifreleyip çözer
- Tüm trafiği VPN’e gönderen yapılandırmaya full-tunnel VPN, yerel ağ gibi istisnalar içeren yapılandırmaya ise split-tunnel VPN denir
- VPN, sunucuyla bağlantıyı sürdürmek zorunda olduğundan, VPN sunucusunun IP’sine giden trafiği fiziksel arayüze gönderen istisna rotalara ihtiyaç duyar
- Yönlendirme tablosu trafiğin yolunu hedefe göre belirler ve çoğu ağ yığınında daha spesifik CIDR prefix length daha yüksek önceliğe sahiptir
/32rotası,/24veya/0rotasından önce gelir- Birçok full-tunnel VPN, trafiği VPN arayüzüne göndermek için
0.0.0.0/0veya iki adet/1rota kullanır
DHCP option 121 ile rota enjeksiyonu
- DHCP, yerel ağ cihazlarına IP adresi kiralamasını dinamik olarak sağlar ve options üzerinden varsayılan ağ geçidi ile DNS sunucusu gibi ayarları da iletir
- Tipik akışta istemci
DHCPDISCOVERyayını yapar, sunucu ise süre sınırlı bir kiralama önermek içinDHCPOFFERile yanıt verir - RFC 3442 ile gelen DHCP option 121, classless static routes işleviyle DHCP sunucusunun istemcinin yönlendirme tablosuna statik rotalar eklemesine olanak tanır
- option 121, DHCP sunucusunun kurulacak rotanın ağ arayüzü aygıtını doğrudan belirtmesine izin vermez
- DHCP sunucusu CIDR aralığını ve yönlendiriciyi belirtir
- İstemci, DHCP sunucusuyla iletişim kurduğu arayüzü bu rotanın arayüzü olarak örtük biçimde seçer
- Bu davranış nedeniyle enjekte edilen rotalardaki trafik, VPN sanal arayüzü yerine DHCP sunucusuyla iletişim kuran fiziksel ağ arayüzünden çıkabilir
Saldırı koşulları ve uygulanış şekli
- TunnelVision saldırısı için iki koşul gerekir
- Hedef ana bilgisayar saldırganın kontrol ettiği DHCP sunucusundan kiralamayı kabul etmelidir
- Hedef ana bilgisayardaki DHCP istemcisi DHCP option 121 desteğine sahip olmalıdır
- Aynı ağdaki bir saldırgan çeşitli yollarla hedefin DHCP sunucusu olabilir
- Gerçek DHCP sunucusuna DHCP starvation saldırısı yapıp ardından yeni istemcilere yanıt vererek
DHCPDISCOVERyayınına daha hızlı yanıt verip DHCP istemcisinin first-offer seçim davranışını kötüye kullanarak- ARP spoofing ile gerçek DHCP sunucusu ve istemci arasındaki trafiği ele geçirip kiralama yenilemesini bekleyerek
- Saldırgan, hedef VPN kullanıcısıyla aynı ağda DHCP sunucusu çalıştırır ve kendisini ağ geçidi olarak ayarlar
- Ardından DHCP option 121 ile VPN kullanıcısının yönlendirme tablosuna keyfi rotalar ekler ve VPN’in
/0rotasından daha spesifik rotaları yerleştirerek bunların VPN sanal arayüzünden daha yüksek öncelikli olmasını sağlar- Birden fazla
/1rota ayarlayarak çoğu VPN’in kullandığı0.0.0.0/0tüm trafik kuralı yeniden üretilebilir - Saldırgan, hangi IP adreslerinin VPN tüneline gideceğini ve hangilerinin saldırganın DHCP sunucusuyla iletişim kuran arayüze gideceğini seçebilir
- Birden fazla
- Bu yöntem halihazırda kurulmuş VPN bağlantılarına da uygulanabilir; DHCP kiralama süresi kısa ayarlanırsa yönlendirme tablosunun daha sık güncellenmesi tetiklenebilir
PoC ve deney senaryoları
- Kamuya açık materyaller şunlardır
- Video proof of concept: https://www.youtube.com/watch?v=ajsLmZia6UU
- Lab Setup Code: https://github.com/leviathansecurity/TunnelVision
- DHCP Server image: https://drive.google.com/file/d/1WLJGs3ZUypf6hLh5WL4AJmsKdUOZo5yZ
- Deney ortamı çeşitli saldırı senaryolarını gösterecek şekilde kuruldu
- Saldırganın DHCP sunucusunu veya erişim noktasını ele geçirdiği durum
- Kötü niyetli bir yöneticinin altyapıyı doğrudan sahiplenip yapılandırdığı durum
- Saldırganın kafe veya ofis gibi fiziksel bir alana evil twin kablosuz AP yerleştirdiği durum
- İleride ArcaneTrickster yayımlandığında, aynı LAN’daki komşu ana bilgisayar olup ayrıcalıklı bir ağ konumunda olmayan saldırgan da modellenebilecek
Etkilenen işletim sistemleri ve VPN’ler
- Testlerde, RFC spesifikasyonuna uygun DHCP istemcisi uygulayan ve DHCP option 121 rotalarını destekleyen işletim sistemlerinin etkilendiği görüldü
- Etki gözlendi: Windows, Linux, iOS, macOS
- İstisna: Android, DHCP option 121 desteği olmadığı için etkilenmiyor
- Ana cihaz trafiğini korumak için yalnızca yönlendirme kurallarına dayanan VPN’ler savunmasızdır
- Kendi VPN sunucusunu işleten sistem yöneticileri de VPN istemci yapılandırmasını sıkılaştırmadılarsa savunmasız olabilir
- Şifreleme algoritmalarının gücü bu durumdan etkilenmez
- TunnelVision, WireGuard, OpenVPN, IPsec gibi VPN protokollerini doğrudan kırmaz
- Bunun yerine işletim sisteminin ağ yığınındaki yönlendirme yapılandırmasını değiştirerek kullanıcının VPN tünelini kullanmamasını sağlar
Düzeltmeler ve azaltma yöntemleri
- Linux’taki network namespace bu davranışı tamamen düzeltebilir
- WireGuard belgeleri, VPN kullanması gereken uygulama trafiğinin ayrı bir namespace içinde işlenip ardından fiziksel arayüzün bulunduğu başka bir namespace’e gönderilmesini gösteriyor
- Windows, macOS ve diğer işletim sistemlerinde aynı derecede sağlam bir çözüm olup olmadığı net değil
- Bazı VPN sağlayıcıları, fiziksel arayüz üzerindeki tüm gelen ve giden trafiği güvenlik duvarı kurallarıyla engelleyen azaltmalar kullanıyor
- LAN ve VPN sunucusu bağlantısını korumak için DHCP ve VPN sunucusu IP’si istisnaları gerekir
- Derin paket inceleme ile yalnızca DHCP ve VPN protokollerine izin vermek de mümkün olabilir, ancak bunun performans cezası yaratma ihtimali vardır
- Güvenlik duvarı tabanlı azaltmalar, DHCP rotalarını kullanan trafikte seçici hizmet reddi oluşturur ve ek yan kanallar yaratır
- Saldırgan, VPN ile şifrelenmiş trafik hacmindeki değişiklikleri analiz ederek hedef kullanıcının belirli bir hedefe trafik gönderip göndermediğini istatistiksel olarak kanıtlayabilir
- Önceden tanımlı listelerle karşılaştırma yapabilir, sansür mekanizması olarak seçici engelleme uygulayabilir veya IP alanı engellemeyi ikili arama benzeri bir yöntemle kullanarak mevcut bağlantıyı logaritmik sürede bulabilir
- VPN kullanımı sırasında option 121’i yok saymak da mümkündür, ancak bu özellik meşru ağ bağlantıları için gerekli olabileceğinden bağlantı sorunları yaratabilir
- Bu azaltma isteğe bağlıysa saldırgan ağ erişimini engelleyerek VPN’i veya kullanıcıyı option 121’i yeniden açmaya zorlayabilir
- Hotspot’lar veya VM’ler de yardımcı olabilir
- Hücresel cihazın kontrol ettiği parola korumalı LAN, saldırganın yerel ağa erişmesini engellemeye yardımcı olabilir
- VM, ağ adaptörü bridged mode’da değilse benzer şekilde davranabilir
Kullanıcılar ve operatörler için gerekli adımlar
- Hassas trafik için güvenilmeyen ağlardan kaçınılmalı; bu mümkün değilse TunnelVision’a karşı etkili azaltmalara sahip bir VPN sağlayıcısı kullanılmalı
- VPN decloak gerçekleşse bile HTTPS web sitelerine erişiliyorsa çoğu kullanıcı verisi yerel ağdaki saldırgan tarafından görülemez, ancak hedef ve protokol açığa çıkabilir
- Kurumsal VPN’ler kafe, otel, havaalanı gibi yerlerde kullanılıyorsa ağ yöneticileri risk konusunda uyarıda bulunmalı ve mümkün olduğunca bundan kaçınılmasını önermelidir
- Bu pratik değilse, azaltma veya düzeltme uygulanmış VPN’lerin kullanımı yönlendirilmelidir
- Güvenilir bir hotspot kullanıp ardından VPN’e bağlanmak ya da VPN’i sanal DHCP sunucusundan kiralama alan bir VM içinde çalıştırmak da mümkündür
- Kendi ağını veya site-to-site VPN işleten şirketler anahtarları denetlemeli ve DHCP snooping ile ARP koruması gibi Layer 2 korumalarını etkinleştirmelidir
- Bu korumalar rogue DHCP sunucularını azaltmaya yardımcı olur, ancak kötü niyetli yönetici senaryosunu ortadan kaldırmaz
- İç kaynaklarda HTTPS veya başka şifreli protokollerin uygulanması, güvenilmeyen ağlardan bağlanan VPN kullanıcılarının veri sızıntısını önlemeye yardımcı olur
- VPN sağlayıcıları, ağ arayüzüne giden giden paketleri engelleyen güvenlik duvarı özelliklerini istemcilerine ekleyebilir; ancak bu durumda kullanıcılar yerel ağ kaynaklarıyla etkileşim kuramaz
- Linux için full-tunnel VPN istemcileri, network namespace kullanan izolasyonu değerlendirmelidir
- İşletim sistemi bakımcıları, Linux dışındaki sistemlerde network namespace ile ilgili özelliklerin eklenmesini veya güçlendirilmesini değerlendirmelidir
- LAN güvenliği araştırmaları ve gerçek saldırı gösterimleri için ArcaneTrickster adlı bir adversarial infrastructure kütüphanesi geliştiriliyor ve daha sonra yayımlanması planlanıyor
1 yorum
Hacker News görüşleri
Bu, 2016’da Samy Kamkar’ın PoisonTap saldırısının hafifçe değiştirilmiş bir versiyonu. USB/Thunderbolt ağ adaptörüyle aynı işi yapıyor; kurban cihaza takıp 0.0.0.0/1 ve 128.0.0.0/1 gibi daha spesifik iki rota ilan ederseniz, arayüz sırasından bağımsız olarak diğer sistem arayüzlerinin önüne geçip tüm trafiği üzerine alabilir: https://github.com/samyk/poisontap
Muhtemelen başka önceki örnekler de vardır ama bu oldukça iyi bilinen bir örnek. Yazının başlığı tüm VPN istemcilerinin etkilendiğini söylüyor ama metnin de kabul ettiği gibi, birçok VPN istemcisi fiziksel arayüze gidip gelen trafiği engelleyen güvenlik duvarı kuralları koyuyor
Kimlik gizliliği vaat eden ya da bu gizliliğin önemli olduğu VPN’ler genelde bunu uygular. Varsayılan olarak açık olmayan çok ayar vardır ama büyük bireysel/ticari/kurumsal VPN çözümlerinin yüzde kaçının bunu varsayılan olarak açtığını belgelemiş olsalardı daha faydalı olurdu
Genel okur için açıklama iyi ama bu tür güvenlik duvarı kurallarıyla çoğu veri sızıntısını engelleyen çok sayıda istemci varken ve bu alandaki önceki örnekler de anılmıyorken, başlık biraz abartılı görünüyor
“Yan kanal saldırısı” ifadesini görünce az kalsın içtiğimi püskürtüyordum
Düzeltme: Görünüşe göre NordVPN, en azından macOS’ta, böyle varsayılan güvenlik duvarı kurallarına sahip değil; bu yüzden bu saldırıya açık gibi duruyor
Bu yazının neden bu kadar uzun olduğunu anlamadım
DHCP Option 121, DHCP sunucusunun belirli CIDR aralıkları için yönlendirme kuralları ayarlamasını sağlar ve daha uzun önek olduğu için varsayılan 0.0.0.0/0 kuralından daha yüksek öncelik alır
İnternetteki VPN bilgilerinin yarısı VPN sağlayıcıları tarafından yazılıyor ve bunlar gerçekte nasıl çalıştıklarını açıklamak için ya hatalı ya da yeterince teknik değil
Girişe “bunları zaten biliyorsanız POC bölümüne atlayın” diye bağlantılı bir cümle koymayı planlıyordum, daha görünür olacak şekilde güncelleyeceğim
Yazıyı okumadan, sadece yukarıdaki yoruma bakarak yaptığım bir tahmin bu
Bu saldırıyı daha önce başka bir yazardan okuduğumu sandım, o yüzden aradım; arama sonuçlarına doluşan VPN şirketi spamlerini aştıktan sonra önceki çalışmayı [1] buldum
Bu yazı, kusurun nasıl istismar edileceğini daha derin ele alıyor ve kavram kanıtına yardımcı olacak kod da içeriyor
1: https://www.usenix.org/conference/usenixsecurity23/presentat...
Ancak 2023 Ağustos tarihli makaledeki iki tekniğin hiçbiri DHCP option 121 ile rota itmekten yararlanmıyordu. DHCP üzerinden rota itmek, saldırganın aynı konumdan çok daha büyük etki yaratmasını sağlıyor. Örneğin RFC1918 dışı aralıklardan IP kiralamaları dağıtabildiği ya da DNS yanıtlarını sahteleyebildiği bir konumda
Tehdit modeli, rastgele bir saldırganın bir şekilde benim LAN’ımda DHCP sunucusu olabilmesi üzerine kurulu; düşük olasılık ama imkansız değil
Öte yandan ISP’nin verdiği ağ geçidi cihazını kullanıyorsanız durum farklı
Çoğu VPN ürününün bir numaralı satış argümanı da bu
Bu durumda doğru tepki 4G/5G bağlantısı kullanmak ve güvenmediğiniz şüpheli ağlara bağlanmamak olur
Sıradan evlerde DHCP’nin yönlendirici tarafından verilmesi ve bu yüzden genelde ilk onun yanıt vermesi ikincil bir ayrıntı. Ağdaki kötü niyetli herhangi bir cihaz bu zafiyeti kullanabilir
Linux’ta VPN arayüzünü VRF içine koyarak da hafifletme sağlanabilir. Örneğin systemd-networkd bunu varsayılan olarak destekliyor
Dikkat edilmesi gereken nokta şu: VRF açıldığında l3mdev için ip rule girdisi 1000 olurken yerel trafik kuralı 0 oluyor. Yerel kuralı 1000 veya üzerine taşımanız gerekiyor
Bu “saldırı”, DHCP option 121’in akıllıca kullanılmış halinden ibaret. Ciddi biçimde bozuk istemci yapılandırmalarına karşı geçerli bir saldırı
Varsayılan rotayı değiştirmek ya da bunu iki /1 rotayla ezip VPN uç noktasına giden host rotasını eklemek güvenli değil. Kapsüllenmiş trafiği alt ağdan düzgün biçimde yalıtmak için politika tabanlı yönlendirme kullanmanız gerekir. Örneğin Linux ağ ad alanları, FreeBSD vnet, OpenBSD rdomains gibi
Paket filtresiyle kullanıcı alanı “kill switch” çözümlerini zorla bir araya getirmeye çalışmak, tasarım gereği kırık bir yaklaşım ve yaygın VPN barındırma şirketlerinin kendi temel uzmanlık alanlarını bile ne kadar az anladığını ya da umursadığını gösteriyor. Yine eski bir “kötü şeyleri sıralama” problemiyle karşı karşıyayız
Bu da yeni bir şey değil
Sistemde IPv6 açıkken yalnızca IPv4 destekleyen VPN hizmeti kullanan insanlar için daha çok endişeleniyorum
Bu gerçekten çok ters gidebilir
İstemci cihazda VPN’i atlatmanın çok fazla yolu var. Bu yüzden VPN gerektiğinde, istemci ile internet arasına VPN tünelini sonlandıran ve başka rota bulunmayan bir yönlendirici koymayı tercih ederim
Bu tür seyahat yönlendiricileri çok kolay yapılandırılabiliyor, her yere taşınabiliyor ve ben de gerçekten bunu yapıyorum
Örneğin iş intranetine VPN bağlantısını sürekli açık tutan bir “work” Wi‑Fi yönlendiricisi, Avustralya TV’si izlemek istediğimde Avustralya sunucusuna VPN bağlanan bir “Australia” Wi‑Fi’si ve son olarak normal ev interneti Wi‑Fi’si olabilir
Birkaç eski Wi‑Fi yönlendiriciyle bunu yapmak çok kolay; bugünlerde ucuz ev tipi yönlendiriciler bile bir dereceye kadar VPN desteği sunuyor gibi görünüyor. VPN yapılandırmasını merkezileştirip hata payını azaltmanın yanı sıra, hangi cihaz olursa olsun ilgili Wi‑Fi’ye bağlanır bağlanmaz VPN kullanabilmesi de büyük bir avantaj
Bunu birkaç eski yönlendiriciyle yapıyorum ama aslında tek bir ev yönlendiricisinin dünyanın farklı konumlarına VPN kurup konuma göre farklı Wi‑Fi ağları sunduğu bir ürün pazarı da olmalı gibi geliyor. Amaç, TV/Roku/iPad’in kolayca farklı bir bölgeden bağlanıyormuş gibi görünmesini sağlamak
Yine de LAN’da güvenilmeyen bir cihaz varsa ve DHCP kullanılıyorsa, o cihaz bu teknikle şifrelenmemiş* trafiği gözetleyebilir. Ancak ağ geçidi gizlediği için gerçek IP’yi yine de bulamaz
Bu saldırının en gerçekçi olduğu yer kafe Wi‑Fi’si gibi ortamlar. Böyle yerlere kendi yönlendiricini götürme ihtimali düşüktür
Buradaki “şifrelenmemiş trafik”, VPN sağlayıcısına gönderilmek üzere kapsüllenmemiş trafik anlamına gelir. Günümüzde çoğu şey HTTPS olduğundan, bu trafiğin içeriği muhtemelen hâlâ şifreli olacaktır
Teknik kişiler için oldukça bariz olması gereken bir şeydi, ama ağ ve VPN’e giriş açıklaması olarak iyi. Birkaç kez Linux VPN ağ geçidi VM’i kurdum; yalnızca yönlendirme tablosuna güvenen bir yapı bana hep kırılgan gelmiştir, özellikle de o bağlantıyı kullanan aynı makinede çalıştığında
Ağ namespace’leri ve fiziksel VPN ağ geçidi yönlendiricilerine ek olarak, VM tabanlı mimari de bu sorunu çözebilir. Kendi homelab ortamımda güvenlik duvarı, VPN ağ geçidi VM’inden çıkan beklenmedik trafiği engelliyor. VPN VLAN’indeki cihazlar dışarıya doğrudan bağlanamıyor, ağ geçidi VM’i ise dış bağlantı için ayrı bir VLAN’a sahip
Kişisel çözüm olarak QubesOS da benzer bir yapıyı oldukça az sürtüşmeyle kurmayı sağlıyor, ama yine de genel amaçlı işletim sistemlerinden daha fazla teknik bilgi gerektiriyor
“Android, DHCP option 121 desteğini uygulamadığı için etkilenmeyen tek sistemdi” kısmı ilginç
Bunun, Google’ın bu sorunun farkında olarak bilerek aldığı bir karar mı yoksa tamamen tesadüf mü olduğunu merak ediyorum
Tahminimce Android ağ ekibi IPv6’ya oldukça sıcak bakıyor. IPv4’ün eksik köşe özelliklerine pek ilgi duymuyor gibiler. IPv6 için de nasıl kullanılması gerektiğine dair belirli bir vizyonları var; bunun sonucu olarak stateful DHCPv6 gibi özellikleri bilerek desteklemiyorlar
Bu DHCP seçeneği yaygın kullanılmadığından, böyle bir strateji izleniyorsa güvenlik kaygılarından bağımsız olarak desteklenmemiş olma ihtimali yüksek
O yüzden çok da şaşırtıcı değil