UAC 核心目標:讓使用者以標準權限運行
Windows XP 時代習慣以管理員權限運行,導致軟體開發依賴管理權限。UAC 透過四大技術推動生態系遷移:
- 檔案系統與登錄虛擬化:舊程式嘗試寫入系統區域(
HKLM\Software、C:\Program Files)自動重導向至使用者區域(HKCU\Software\Classes\VirtualStore、%LocalAppData%\VirtualStore),兼容不修權限的舊軟體。
- 受保護的管理員 (PA) 帳戶:首位建立帳戶為 PA,預設以標準權限運行,需明確提權(彈窗同意)取得管理權限。
- 提權同意提示:切換至安全桌面(系統擁有),顯示發布者/程式名稱,防止標準權限程式欺騙(繪製偽裝發布者名稱)。
- Windows 完整性機制 / UIPI:提權程式以高完整性等級運行,標準程式無法發送合成輸入、注入程式碼、讀寫高完整性物件,形成保護屏障。
標準使用者現在能做的事(Vista/7 改進)
- 變更時區(XP 需管理員)
- 重新整理 IP 位址、安裝選用更新/驅動程式、變更 DPI、檢視防火牆設定
- 企業出差人員可用標準帳戶自行調整時區,無需 IT 介入。
PA 帳戶 vs 標準帳戶提權差異
- PA:彈出「同意/取消」對話框,點擊同意即提權。
- 標準帳戶:彈出「認證提示」,需輸入管理員帳密(家庭共用電腦場景友善)。
提權提示的安全性本質
- 主要目的非安全,而是便利性:若需切換帳戶執行管理任務,使用者會永久停留在管理員帳戶,生態系永不遷移。
- 安全桌面防止標準程式欺騙提示(偽裝發布者名稱)。
- UIPI 防止標準程式向提權程式注入輸入/程式碼。
為何未建立「安全邊界」?
- 未簽署程式提示僅顯示檔名,惡意軟體可替換同名執行檔欺騙使用者。
- 提示不顯示將載入的 DLL,使用者可控目錄下的 DLL 可被惡意替換(DLL 劫持)。
- 提權程式與標準環境共享狀態(
HKCU、基本命名物件命名空間),惡意軟體可利用 Shell 擴充、共享記憶體劫持提權程式。
- 完整性機制不跨網路:PA 帳戶遠端存取受管理的伺服器資源不受限。
- 為相容性妥協:UIPI 不阻擋桌面繪圖(可能欺騙使用者),完整性機制不阻擋跨網路存取。
現實防護層級
- 深層防禦:DEP、ASLR、IE 保護模式、SmartScreen、Defender 防止惡意軟體進入/執行。
- 若惡意軟體已執行,首次提權即可取得管理權限(甚至可主動誘導提權欺騙謹慎使用者)。
- 惡意軟體以標準權限即可竊取資料、刪除檔案、加入殭屍網路、設定開機自啟(寫
HKCU\Run)。
UAC 成功改變開發習慣,但非萬靈丹。正確姿勢:日常用標準帳戶、保持系統更新、啟用深層防禦、謹慎授權提權提示。