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