自由可用的IPv4地址即將“枯竭”,多年以來,這促使大多數通用操作系統開始添加IPv6支持。然而,很多應用(例如VPN客戶端和服務器軟件)一直都沒有準備好迎接IPv6。而這將導致這樣的情況:雙協議棧主機部署不支持IPv6的VPN軟件,從而為安全漏洞廣開大門,并導致VPN流量泄露。
在本文中,我們將討論這些VPN安全問題是如何出現的。
介紹:VPN泄露的風險
從遠程地點工作的員工通常會建立虛擬專用網絡(VPN)連接來訪問企業網絡內部的服務,以及保護必須經過不安全網絡的相應的流量。在某些情況下,由于VPN提供安全服務,例如對所有通過VPN的通信進行保密,我們認為使用VPN連接讓不安全的協議可以接受(例如以純文本傳輸敏感信息)。
很多VPN連接只支持IPv4協議。然而,部署這些技術的主機通常是雙協議棧的,這意味著它們同時支持IPv4和IPv6(默認啟用)。目前,很多主機只使用IPv4,因為大多數網絡不提供IPv6連接。IPv6支持仍然存在于主機,但需要被啟用。當發生這種情況時,主機可能會不知不覺中在雙協議棧網絡中使用不支持IPv6的VPN。
IPv4和IPv6協議在雙協議棧網絡中這種交互和共存的微妙關系可能無意或有意(蓄意攻擊)導致VPN泄露安全問題——通過VPN連接傳輸的流量可能會泄露出VPN連接外,并在本地網絡上以純文本形式發送,而根本不使用VPN服務。
IPv4和IPv6的相互作用
IPv4和IPv6協議的共存有一些有趣且微妙的方面可能會導致意想不到的后果。雖然IPv6無法向后兼容IPv4,但這兩種協議被域名系統(DNS)“粘”在一起。對于依賴于名稱解析服務(例如DNS提供的服務)的雙協議棧系統,不保護這兩種協議,就不可能保護這兩個系統之間的通信。
很多VPN部署不支持IPv6協議,或者更糟糕的是,它們完全忽略了IPv6。當建立VPN連接時,VPN軟件通常插入IPv4默認路由,讓所有的IPv4流量通過該VPN連接發送(而不是用本地路由器以純文本形式發送流量)。然而,如果不支持IPv6,發往IPv6地址的所有數據包都會使用本地IPv6路由器以純文本形式發送,VPN軟件將無法保護IPv6流量安全。
例如,假設有一個網站同時支持IPv4和IPv6,相應的域名中包含A和AAAA DNS資源記錄(RR),每個A包含一個IPv4地址,而每個的AAAA包含一個IPv6地址,每個這些記錄類型可以有多個實例。當雙協議棧客戶端應用嘗試與服務器通信時,它可以請求A和AAAA RR,并使用任何可用的地址。優選的地址族(IPv4或IPv6)和將被使用的具體地址(假設每個族有多個地址可用)部署各有不同,而很多主機部署更喜歡Pv6地址,而不是IPv4地址。
意外和故意的VPN流量泄漏
假設有一個雙協議棧主機,它采用僅支持IPv4的VPN軟件來建立與服務器的VPN連接。如果該主機連接到雙協議棧網絡會發生什么?如果主機的應用嘗試與雙協議棧系統通信,這通常要求查詢A和AAAA DNS資源記錄。如果主機同時支持IPv4和IPv6連接,但更青睞于IPv6目的地址,即使另一個系統有A和的AAAA DNS資源記錄,主機都將使用IPv6來與上述系統進行通信。如果VPN軟件不支持IPv6,IPv6流量將不會采用VPN連接,它將會通過本地IPv6路由器以純文本形式傳輸。
這無意中暴露了潛在的敏感流量,這些流量本該受到VPN軟件的保護。在這個情況下,VPN泄露是在雙協議棧網絡中采用不支持IPv6軟件(VPN)的消極作用。