1. 摘要

本報告提供了對影響 Windows 版 NVIDIA GPU 顯示驅動程式的漏洞 CVE-2024-0079 的技術分析。此漏洞源於對先前漏洞( CVE-2023-25516 CVE-2023-25517 )的不完全更新,這些漏洞與 nvsvc.log 檔案的符號連結處理有關。儘管已進行更新,但由於存在 Race condition ,低權限用戶仍可能實現任意檔案寫入,從而導致權限提升或拒絕服務。本報告詳細說明了漏洞機理,分析了概念驗證(PoC)方法,並討論了潛在影響和緩解措施。

NVIDIA 驅動程式漏洞 CVE-2024-0079:攻擊者的機會與你的防線 | 資訊安全新聞

2. 簡介

NVIDIA GPU 顯示驅動程式包含 NVIDIA 顯示容器服務( NVDisplay.Container.exe ),該服務會將活動記錄到 C:\ProgramData\NVIDIA Corporation\nvsvc.log 。先前的漏洞( CVE-2023-25516 / CVE-2023-25517 )顯示,本地低權限用戶可以將此記錄檔替換為指向敏感系統檔案的 符號連結(Symbolic link) 。當服務寫入記錄時,會無意中覆蓋連結的目標檔案。NVIDIA 發布了更新程式,通過增加檢查來防止服務在 nvsvc.log 為符號連結時寫入該檔案。然而, CVE-2024-0079 揭示了這個更新並不充分,因為存在 Race condition

3. 漏洞細節:Race condition

CVE-2024-0079 的核心問題在於 NVDisplay.Container.exe 服務內的安全檢查與檔案操作之間的時機:

  • 初始檢查: 更新後的服務在獲取檔案 Handle 以進行寫入 之前 ,會檢查 nvsvc.log 是否存在以及是否為符號連結。
  • 競爭窗口(Race Window): 在進行此檢查 之後 但服務實際打開檔案 Handle 並寫入 之前 ,存在一個短暫的機會窗口。
  • 攻擊: 以低權限運行的 Threat actor 可以利用這個窗口。他們可以在這個短暫的時間內刪除或重新命名合法的 nvsvc.log 檔案,並快速在其位置創建一個指向目標檔案(例如 C:\Windows\System32\drivers\etc\hosts )的符號連結。
  • 結果: 當服務繼續打開並寫入它 認為 是合法記錄檔的檔案(已經通過了檢查)時,它會跟隨新創建的符號連結並寫入攻擊者選擇的目標檔案。

此漏洞允許繞過先前更新程式中實施的預期安全措施。

4. 概念驗證(PoC)腳本分析

根據文章中所述的 Race condition 分析 CVE-2024-0079 的 PoC 攻擊方法如下:

  • 目標: 贏得 Race condition ,在檢查和寫入操作之間將 nvsvc.log 替換為符號連結。
  • 典型步驟:
    1. 監控(可選但有幫助): 監控 nvsvc.log 檔案或 NVDisplay.Container.exe 程序活動,以預測何時即將進行記錄寫入操作。這有助於定時攻擊。
    2. 準備: 腳本需要適當的權限來操作 C:\ProgramData\NVIDIA Corporation\ 中的檔案(通常對標準用戶開放),並創建符號連結(需要 SeCreateSymbolicLinkPrivilege ,通常授予標準用戶,或可通過特定技術實現)。
    3. 執行循環(Race Attempt): 腳本的核心可能涉及一個循環,該循環非常快速地重複執行以下操作:
      • 嘗試刪除或重新命名 C:\ProgramData\NVIDIA Corporation\nvsvc.log
      • 立即嘗試創建一個名為 nvsvc.log 的符號連結,指向所需的目標檔案(例如使用
        
        mklink "C:\ProgramData\NVIDIA Corporation\nvsvc.log" "C:\Windows\System32\drivers\etc\hosts"
        
        
        )。
    4. 觸發(可選): 腳本可能嘗試觸發導致 NVIDIA 服務寫入其記錄檔的動作,增加命中競爭窗口的機會。
    5. 驗證: 檢查目標檔案是否已被記錄資料覆蓋。
  • 成功因素: 此類 PoC 腳本的成功在很大程度上取決於時機、系統性能以及 NVIDIA 服務寫入記錄的頻率。這是一種概率性攻擊,並非每次嘗試都能成功。腳本旨在最大化在漏洞時間窗口內精確執行刪除/重新命名和連結創建操作的概率。初始覆蓋不需要複雜的 Payload ;服務自身的記錄資料即作為寫入目標檔案的內容。 Threat actor 的後續行動將取決於被覆蓋的檔案。

5. 影響

成功利用此漏洞可能導致:

  • 權限提升: 通過覆蓋由更高權限程序執行的關鍵系統檔案或設定檔。
  • 拒絕服務(DoS): 覆蓋必要的系統檔案可能導致系統不穩定或無法啟動。
  • 資料操縱: 覆蓋資料檔案或設定檔可能擾亂應用程式行為或安全設定(例如,修改 hosts 檔案以重新導向網絡流量)。

具體影響取決於 Threat actor 選擇的目標檔案。

6. 緩解和建議

  • 更新 NVIDIA 驅動程式: 主要的緩解措施是安裝更新後的 NVIDIA GPU 顯示驅動程式版本,這些版本通過實施更強健的檢查或檔案處理機制來正確解決 CVE-2024-0079 ,使其不受此Race condition的影響。請參閱 NVIDIA 的安全公告以了解受影響的版本和更新的發布。
  • 監控: 監控系統中 C:\ProgramData\NVIDIA Corporation\ 目錄中的異常檔案操作,特別是針對 nvsvc.log 創建符號連結的情況。使用能夠檢測Race condition利用嘗試或可疑檔案系統活動的安全工具。

7. 結論

CVE-2024-0079 凸顯了安全更新漏洞的挑戰,特別是涉及Race condition的漏洞。儘管最初已解決,但更新不充分導致時機攻擊向量(Timing attack vector)持續存在。理解涉及 Race condition symbolic link 操縱的技術機理對於防禦至關重要。管理員應優先安裝最新的 NVIDIA 驅動程式更新,以緩解與此漏洞相關的風險。