什麼是 Windows 完整性機制?

Windows 完整性機制是 Windows 安全性架構的核心元件,可限制在相同使用者帳戶下執行且較不值得信任的應用程式存取權限。

Windows Vista® 完整性機制藉由將完整性層級指派給應用程式進程和安全性實體物件,來擴充作業系統的安全性架構。

完整性層級是執行應用程式進程和物件之信任性的標記法,例如應用程式所建立的檔案。 完整性機制可讓您的資源管理員,例如檔案系統,使用預先定義的原則來封鎖較低完整性的進程,或降低信任度,而無法讀取或修改較高完整性的物件。 完整性機制可讓 Windows 安全性模型強制執行新的存取控制限制,這些限制無法藉由在存取控制清單中授與使用者或群組許可權, (ACL) 。

Windows 安全性架構主要以授與許可權 (讀取、寫入和執行許可權) ,以及由安全性識別碼 (SID) 內部代表的使用者或群組的許可權。 當使用者登入 Windows 時,安全性子系統會在安全性存取權杖中設定使用者的 SID 和群組成員資格 SID。 安全性存取權杖會指派給該使用者執行的每個應用程式進程。 每次應用程式進程開啟物件時,例如檔案或登錄機碼,管理安全性子系統上物件呼叫的資源管理員,以做出存取決策。 存取檢查會決定此使用者的允許存取權限。 安全性子系統 (也稱為安全性參考監視器) 比較存取權杖中的使用者和群組 SID 與與物件相關聯的安全性描述元中的存取權限。 如果使用者 SID 被授與物件 ACL 中的完整存取權限,則使用者執行的應用程式進程具有物件的完整存取權。 如需 Windows 安全性架構的詳細資訊,請參閱 Windows 完整性機制資源

擴充 Windows 安全性架構

Windows 完整性機制藉由定義新的存取控制專案 (ACE) 類型來擴充安全性架構,以代表物件的安全性描述元中的完整性層級。 新的 ACE 代表物件完整性層級。 初始化存取權杖時,也會將完整性層級指派給安全性存取權杖。 存取權杖中的完整性層級代表主體完整性層級。 當安全性參考監視器執行存取檢查時,存取權杖中的完整性層級會與安全性描述元中的完整性層級進行比較。 Windows Vista 使用 AccessCheck 函式來判斷安全性實體物件允許的存取權。 Windows 會根據主體的完整性層級高於或低於物件,以及根據新存取控制 ACE 中的完整性原則旗標而定,限制允許的存取權限。 安全性子系統會將完整性層級實作為強制標籤,以區別 ACL 所提供的使用者控制下任意存取權。

Windows 完整性機制設計目標

Windows 完整性機制可在 Windows Vista 中啟用許多重要案例。 為了因應需求,Windows 完整性機制的設計必須符合下列目標。

  • 在建立存取權杖期間,必須自動將完整性層級指派給每個安全性存取權杖,讓每個進程和執行緒都有有效的存取控制完整性層級。
  • 安全性子系統會自動將強制標籤指派給特定物件類型。
  • 系統必須盡可能使用最少的完整性層級,讓基本架構更容易瞭解及使用。
  • 完整性原則必須有彈性,才能符合不同物件資源管理員的存取需求,並允許未來的擴充性。
  • 完整性機制必須與現有的安全性架構整合,以將相依于 Windows 安全性的大型舊版系統和應用程式程式碼的影響降到最低。
  • 系統管理員或使用者不需要設定完整性層級,強制機制才能正常運作。

Windows 完整性機制可藉由定義新的強制標籤 ACE 類型,將完整性層級指派給物件,以符合這些目標。 本文稍後章節會說明此結構的詳細資料。 不過,強制標籤 ACE 會定義物件完整性層級,而不會變更現有的安全性描述元資料結構定義或常用的任意存取控制清單。

Windows 完整性機制是以作業系統指派的強制標籤為基礎,以區分它與使用者控制下的任意存取權。 任意存取控制可讓物件擁有者或授與許可權的群組變更物件的存取權限。 Windows 提供圖形化使用者介面 (UI) ,供進階使用者檢視和修改物件上任意 ACL) 所代表的安全性 (許可權,例如檔案和登錄機碼。 強制標籤一律會指派給特定物件,而且有控制項可控制物件建立者如何在物件建立時設定或初始化標籤。 Windows Vista 未實作用於管理完整性標籤的圖形化 UI,因為標籤管理適用于相對較少的區域。

為什麼有 Windows 完整性機制?

Windows 完整性機制的目的是限制在相同使用者帳戶下執行且較不值得信任的應用程式存取權限。 未知、可能從網際網路下載的惡意程式碼,必須防止修改系統狀態、變更使用者資料檔案,或操作其他應用程式程式的行為。 Windows 安全性子系統會將簡單的完整性層級階層指派給為相同使用者在不同的許可權層級執行的程式碼。 舊版 Windows 可以調整應用程式程式的安全性存取權杖許可權,雖然這種調整並不常見。 在 Windows Vista 之前,大部分的應用程式都會使用具有完整系統管理員許可權的系統管理帳戶來執行。 Windows Vista 藉由啟用更廣泛的標準使用者帳戶使用,併入最低許可權的概念。 系統管理員帳戶管理員核准模式中的使用者帳戶控制 (UAC) ,表示相同桌面上的多個應用程式都以不同的許可權等級執行。 例如,受保護的模式 Internet Explorer 會使用完整性機制,在具有有限存取權限的進程中執行網頁瀏覽器。

Windows 完整性機制解決的主要安全性問題是未經授權竄改使用者資料,以及間接使用系統狀態。 完整性機制可協助的次要問題是資訊洩漏。 不過,資訊洩漏只會防止存取進程位址空間。 Windows 應用程式之間的資訊共用非常常見,而應用程式之間的便利資訊共用是使用者體驗的基礎。 其中一個範例是複製並貼上。 在相同使用者帳戶下執行的應用程式之間,對資訊共用的嚴格安全性界限,可能會嚴重影響應用程式相容性和使用者體驗。

不受信任的程式碼可以嘗試以許多方式修改使用者資料。 某些攻擊可能會嘗試直接透過建立、修改或刪除檔案來運算元據。 其他攻擊的目標是以較高許可權執行的另一個進程為目標,目標是讓任意程式碼在具有所需存取層級的另一個應用程式中執行。 跨進程攻擊有許多類型。 由於應用程式設計和實作的範圍廣泛,完整性機制無法提供完整的隔離屏障。 Windows 完整性機制並非作為應用程式沙箱。 不過,它可以是應用程式開發人員用來限制較不信任應用程式行為的其中一個安全性工具。

Windows Vista 完整性機制和舊版完整性模型

Windows 完整性機制的某些特性類似于舊版電腦安全性性的完整性模型。 不過,Windows 完整性機制主要是為了解決高度共同作業 Windows 應用程式環境中的竄改或提高許可權。 先前的完整性模型更擔心藉由強制執行防止讀取不受信任資料的原則來維護可信任程式的完整性。

Biba 安全性模型是以完整性標籤階層為基礎,以及當主體完整性層級影響物件完整性層級時所允許的存取原則。 Windows 完整性機制與 Biba 模型類似下列方式:

  • 它會使用完整性標籤階層, (完整性標籤與Bell-LePadula模型中的安全性標籤不同) 。
  • 系統會使用一組已排序的主體、物件和完整性層級。
  • 主體的完整性層級 (大於或等於) 物件的完整性層級。
  • 完整性原則會禁止存取物件,但主要不會用來限制資訊流程。
  • 防止資訊洩漏不是 Windows Vista 中完整性機制的目標。

Windows 完整性層級會排序,讓較低的值表示不值得信任,而較高的值表示更高的信任度。 較低層級的主旨無法修改較高層級的物件。 主體的完整性層級不是動態的。 例如,如果進程從低完整性物件讀取資料,則主體的完整性層級不會變更為較低的值。 Biba 中的嚴格完整性模型不允許較高完整性的程式讀取較低完整性的資料。 這有時稱為「無讀取」完整性原則。 以下更詳細描述的 Windows 完整性原則不會禁止或防止較高完整性主體讀取或執行較低完整性物件。 有許多攻擊範例,其中讀取格式不正確、不受信任的輸入資料會導致在應用程式和任意程式碼執行中惡意探索弱點。 Windows 完整性機制不會禁止或防止在任何層級讀取資料。 Windows 不會強制執行 Biba 模型中所述的嚴格完整性原則。 完整性設計假設設計為處理未知或未受信任來源不受信任的資料的進程是在較低完整性層級執行,或在使用之前先驗證不受信任的資料。 不過,Windows 完整性機制不會強制執行該條件約束。

Windows 完整性機制不會實作動態或「低水標記」原則。 動態原則會隨著主旨開啟較低完整性物件而變更主體的完整性層級。 動態完整性的問題在於,高完整性程式會根據高完整性取得許多物件的開啟控制碼,然後在開啟特定低完整性檔案之後突然變成較低完整性主體。 強制所有開啟控制碼在完整性層級變更大幅影響應用程式的行為時關閉較高完整性物件。 動態較低完整性進程本身會成為較低完整性層級之其他進程的目標物件。 這類程式現在可能能夠修改相同較低層級的應用程式 (行為) ,而此程式已開啟較高完整性物件的控制碼。

Windows 完整性機制並非針對資料的完整性保護所設計,以支援Clark-Wilson模型中所述的軍事或商業需求。 完整性控制項的 Windows 實作不會以限制或未限制的資料項目和認證的轉換程式的概念為基礎。 不過,當這些概念考慮從不受信任的來源流向較高完整性進程時,這些概念對於應用程式設計工具很有用。

雖然 Windows 完整性機制類似于電腦安全性性中的舊版完整性模型,但 Windows Vista 不會嘗試實作任何模型。 相反地,Windows 完整性機制會限制可使用不同許可權或信任層級執行之進程的存取權限。 如需 Biba 和Clark-Wilson和動態完整性原則對完整性模型先前工作的詳細資訊,請參閱 Windows 完整性機制資源