受影響的產品
AWS VPN 用戶端應用程式存在一個任意檔案寫入漏洞,可能導致特權升級和資訊外洩。此漏洞允許用戶的Net-NTLMv2 雜湊透過VPN 設定檔中的UNC 路徑洩漏。確認受影響的版本為2.0.0,並已在版本3.0.0 中修正。為了解決這些漏洞,請升級到版本3.0.0,您可以在此處下載。
供應商: 亞馬遜網路服務(AWS)
產品: AWS VPN 用戶端(Windows)
確認受影響版本: 2.0.0
修復版本: 3.0.0
CVE-2022-25166: 作為SYSTEM 的任意檔案寫入
在驗證OpenVPN 設定檔時存在競爭條件。這使得可以將不在AWS VPN 用戶端允許的OpenVPN 指令清單中的設定指令注入到設定檔中,隨後AWS VPN 用戶端服務(以SYSTEM 身分執行)處理該檔案。低權限使用者可以注入危險參數,例如“log”,這允許為日誌檔案指定任意目標。
影響: 作為SYSTEM 的任意檔案寫入,部分控製檔案內容。這可能導致本地特權升級或拒絕服務攻擊。
CVE-2022-25165: 透過UNC 路徑的資訊洩露
在OpenVPN 設定檔中引用檔案路徑時,可以包含UNC 路徑。當該檔案匯入AWS VPN 用戶端並嘗試驗證檔案路徑時,它會對路徑執行開啟操作,並將使用者的Net-NTLMv2 雜湊洩漏給外部伺服器。
影響: 用戶的Net-NTLMv2 雜湊資訊外洩。惡意使用者可能透過讓使用者嘗試將惡意VPN 設定檔匯入AWS VPN 用戶端來利用此漏洞。
什麼是AWS VPN 用戶端
AWS VPN 用戶端是一個桌面應用程序,可用於連接到AWS 用戶端VPN。
來自產品網站:
AWS 用戶端VPN 的用戶端免費提供。您可以直接將電腦連接到AWS 用戶端VPN,並享受端到端的VPN 體驗。此軟體用戶端與AWS 用戶端VPN 的所有功能相容。
作為SYSTEM 的任意檔案寫入技術細節
AWS VPN 用戶端安裝以SYSTEM 身分執行的Windows 服務,作為自訂OpenVPN 用戶端執行檔的包裝器。低權限使用者可以使用AWS VPN 用戶端嘗試使用匯入的OpenVPN 設定檔連接VPN。
已知的危險OpenVPN 指令可以在VPN 連線期間執行命令或將日誌檔案寫入特定目標。 AWS VPN 用戶端嘗試限制可在設定檔中使用的OpenVPN 指令,但由於檢查在執行OpenVPN 執行檔之前進行,因此失敗。這使得可以在設定檔驗證後與OpenVPN 執行檔的執行競爭,並將不允許的指令注入到檔案中。
以下是AWS VPN 服務產生的日誌文件,顯示設定成功驗證與OpenVPN 用戶端執行之間的時間間隔。
使用Powershell 腳本監控日誌文件,在設定檔成功驗證後立即將惡意指令寫入設定文件,便可輕鬆實現。透過注入不允許的指令,似乎只需將允許執行命令的指令添加到設定檔中即可實現特權升級。然而,在這種情況下並非如此簡單,因為AWS VPN 服務以「–script-security 1」標誌啟動OpenVPN 可執行文件,這會阻止外部二進位檔案或腳本的執行。
儘管不能直接運行命令,但仍然可以使用“log”指令將日誌輸出重定向到我們選擇的任何路徑或檔案。由於執行是以SYSTEM 使用者身分進行的,這使我們能夠進行特權的檔案寫入,並部分控制內容。在最簡單的情況下,這可以用來將批次腳本寫入管理員的啟動目錄。
CVE-2022-25166 的概念證明可以在我們的GitHub 倉庫中找到。
透過UNC 路徑的資訊外洩技術細節
AWS VPN 用戶端會對匯入到客戶端的設定檔(作為VPN 設定檔)進行驗證。驗證步驟之一是檢查在任何檔案路徑作為參數的指令中,檔案路徑是否存在。
一些接受檔案路徑的有效指令範例包括:
- auth-user-pass
- ca
AWS VPN 用戶端的驗證透過對路徑執行檔案開啟操作來確保其存在。 AWSVPNClient.Core.dll 包含OvpnConfigParser.cs,其中有用於檢查檔案路徑有效性的「CheckFilePath」方法。這只是呼叫了提供的檔案名稱的File.Open。
可以透過提供包含UNC 路徑的檔案作為檔案路徑來利用這一點。當該檔案在匯入之前被驗證時,它將開啟UNC 路徑並將使用者的Net-NTLMv2 雜湊傳送到外部伺服器。
CVE-2022-25165 的概念證明可以在我們的GitHub 倉庫中找到。
結論
揭露時間軸
類似於最近發布的Pritunl CVE 和部落格文章,這個漏洞展示了高權限Windows 進程(如VPN 用戶端)中的利用潛力。這也表明,無論是開源提供者還是大型科技公司,敏感應用程式中仍然存在常見的應用程式缺陷。
請繼續關注我們在接下來的幾週內發布的其他VPN 產品!
- 2022年2月15日: 向AWS 報告漏洞
- 2022年2月16日: AWS 確認
- 2022年3月4日: AWS 確認問題已在版本3.0.0 中解決
- 2022年4月12日: 完整揭露(部落格文章)發布