關於 Windows 與 *nix 安全性孰優孰劣的討論從未停歇。*nix 有 SUID 等死穴,Windows 哪些特性始終糾纏於安全問題?
- 代碼龐大與重用: 「小程式定理」:Bug 與代碼量成正比。重用意味著某版本缺陷將傳遞至後續版本及所有重用該代碼的產品 (如 LDAP 溢位漏洞)。
- 盲目追求易用性與相容性: 商業邏輯驅動:預設全開、全包、全關聯、全相容,犧牲安全換取市場接受度。
- Unicode 解碼缺陷: 核心層處理 Unicode 解碼,錯誤解碼 (如雙重編碼、過長編碼) 可繞過 NIDS 檢測、實現目錄遍歷。微軟補丁僅過濾危險字元 (./\\) 而非修正核心解碼邏輯,XP 可能仍存此患。
- 副檔名欺騙: Windows 依檔頭而非副檔名判斷檔案類型。
.exe 改 .doc 命令列仍可執行;.com/.cmd/.bat/.pif/.scr 雙擊亦可執行,郵件病毒常用此技倆。
- 8.3 短檔名、16 位/OS2/POSIX 子系統: 短檔名可繞過基於長檔名的存取控制 (導致 CGI 原始碼洩漏);舊子系統需特權支援,歷史曾爆提權漏洞 (NT 4 POSIX),加固手冊建議關閉。
- 路徑分隔符雙重標準: 同時支援
\ 與 /,Web 應用若未同時處理易導致目錄遍歷 (早期 Win32 Apache 即有此漏洞)。
- UNC 路徑支援: 幾乎隨處可用,易誘騙使用者存取駭客機器;NTLM 認證預設自動發送密碼雜湊 (未加固系統雜湊約等同密碼)。可利用 UNC 遠程執行程式、安裝無檔案後門 (註冊表/排程任務指向 UNC),繞過審計。可禁用 DeviceMup 移除支援。
- 裝置檔名殘留: DOS 裝置名 (PRN, CON, AUX, NUL...) 仍受支援。程式若未考慮此點,
con.plx 可繞過副檔名檢查傳遞溢位代碼;9x 直接訪問藍屏,NT/2000 部分程式 (Lotus Domino、OE、IIS 特定情況) 仍受影響導致 DoS。
- 登錄表龐大複雜且多未公開: 後門藏匿極難審計,定期備份登錄檔至關重要。
- WSH / Script 引擎預設安裝且過度強大: 廣泛整合於 IE、Office,歷史漏洞多與此相關。
- 系統權限分配過度繁瑣: 幾乎每個物件/註冊表項/裝置皆可設權限,龐大 ACL 難以審計,易成為後門藏身處。
- 預設相容 LanMan 驗證: 僅比對 MD4 雜湊,知帳號+雜湊即可通過驗證無需破解密碼。近期新手法公開跨平台實現,風險大增,加固時必須停用。
- 設計失誤: 帳號鎖定策略與 IIS 內建帳號 (IUSR_*, IWAM_*) 衝突:啟用鎖定後可窮舉鎖定這兩帳號導致 IIS 拒絕服務,極低成本 DoS。類似設計衝突不勝枚舉。
Windows 安全問題非單一漏洞,乃架構層面權衡易用性、相容性、功能豐富度所遺留的系統性風險,需以纵深防禦、最小權限、持續加固管理。