WPF 安全性策略 – 安全性工程
高可信度電腦運算是一項 Microsoft 開發案,用於確保生產安全的程式碼。 值得信賴的運算計劃中的一個關鍵元素是 Microsoft 安全性開發生命週期 (SDL)。 SDL 是可用來搭配標準工程程序協助安全的程式碼傳遞之工程實務。 SDL 包含 10 個階段,結合正規化、可衡量性與其他結構到最佳做法,包括:
安全性設計分析
以工具為基礎的品質檢查
滲透測試
最終安全性檢閱
產品發行後安全性管理
WPF 特性
WPF 工程團隊同時套用和擴充 SDL,該組合包含下列重要功能:
威脅模型
威脅模型是 SDL 的核心元件,用來分析系統以判斷潛在的安全性漏洞。 一旦識別出漏洞,威脅模型也可確保適當的安全防護已就位。
高階的威脅模型牽涉到下列重要步驟,藉由使用雜貨店做為範例:
識別資產。 雜貨店的資產可能包含員工、保險箱、收銀機和庫存。
列舉進入點。 雜貨店的進入點可能包含前門和後門、窗戶、卸貨平台和空調設備。
使用進入點調查針對資產的攻擊。 一次可能的攻擊或許會經由「空調」進入點,以雜貨店的「保險箱」資產為攻擊目標;空調設備可能被拆下,讓保險箱能從中被拖出來,搬到商店外。
威脅模型套用到整個 WP 並包含下列各項:
XAML 剖析器會如何讀取檔案,將文字對應到對應的物件模型類別,並建立實際的程式碼。
如何建立視窗控制代碼 (hWnd)、傳送訊息,以及用來呈現視窗的內容。
資料繫結如何取得資源,並與系統互動。
在開發過程中,這些威脅模型對於識別安全性設計需求和威脅的安全防護相當重要。
來源分析和編輯工具
除了手動的 SDL 安全性程式碼檢閱項目,WPF 小組使用多項來源分析工具和相關聯的編輯來減少安全性漏洞。 使用廣泛的來源工具,包含下列項目:
FXCop:尋找在 Managed 程式碼中的常見安全性問題,從程式碼存取安全性之使用狀況的繼承規則,到如何安全地相互操作 Unmanaged 程式碼。 請參閱 FXCop。
Prefix/Prefast:找出 Unmanaged 程式碼中的安全性漏洞及常見安全性問題,例如緩衝區滿溢、格式字串問題和錯誤檢查。
禁止的應用程式開發介面:搜尋原始程式碼,來識別已知會造成安全性問題之函式的意外使用,例如
strcpy
。 一旦識別到之後,會以較安全的替代項目取代這些函式。
測試技術
WPF 使用不同的安全性測試技術,包含:
白箱測試:測試人員檢視原始程式碼,然後建置入侵測試。
黑箱測試:測試人員藉由檢查應用程式開發介面和功能,試著找出安全性漏洞,然後嘗試攻擊產品。
從其他產品減輕安全性問題:如果相關,則測試來自相關產品的安全性問題。 例如,已識別 Internet Explorer 的大約 60 項安全性問題的合適變異型式,並嘗試套用至 WPF。
透過檔案模糊測試進行以工具為基礎的滲透測試:檔案模糊測試是透過各種輸入來惡意探索檔案讀取器的輸入範圍。 WPF 中使用這項技術的其中一個範例是用來檢查影像解碼程式碼中的錯誤。
重要程式碼管理
對於 XAML 瀏覽器應用程式 (XBAP),WPF 會透過使用 .NET Framework 支援來建置安全性沙箱,以標記和追蹤可提升權限的安全性關鍵程式碼 (請參閱 WPF 安全性策略 - 平台安全性中的安全性關鍵方法)。 假設在安全性關鍵程式碼上的安全性需求很高,這類程式碼會接收額外層級的來源管理控制和安全性稽核。 大約 5% 到 10%的 WPF 由經過專門的檢閱小組檢閱的安全性關鍵程式碼所組成。 原始程式碼和簽入程序是由追蹤安全性關鍵程式碼來管理,以及對應每個重要的實體 (也就是一個包含關鍵程式碼的方法) 至其登出狀態。 登出狀態包含一或多個檢閱者的名稱。 每個 WPF 的每日建置會比較該關鍵程式碼和前一個建置的關鍵程式碼,以檢查未經核准的變更。 如果工程師修改未經檢閱小組核准的關鍵程式碼,它會被識別並被立即修正。 此程序能在 WPF 沙箱程式碼上套用和維護特別高層級的監督。
警告
XBAP 需要舊版瀏覽器才能運作,例如 Internet Explorer 和舊版的 Firefox。 Windows 10 和 Windows 11 通常不支援這些較舊的瀏覽器。 由於安全性風險,現代瀏覽器不再支援 XBAP 應用程式所需的技術。 不再支援啟用 XBAP 的外掛程式。 如需詳細資訊,請參閱 WPF 瀏覽器裝載應用程式 (XBAP) 常見問題集。