企業 Windows 保護列印模式的詳細資訊
若要瞭解企業和開發人員的 Windows 保護列印模式基本概念,請參閱 適用於企業和開發人員的 Windows 保護列印模式。
在過去三年中,Windows 列印系統一直是攻擊的頻繁目標,列印錯誤占向Microsoft安全回應中心(MSRC)報告的所有案例的9%。 處理印表機管理、資料轉換和其他許多工作的多任務緩衝處理服務是Windows列印系統的核心。 此程式會以 SYSTEM 身分執行,這是 Windows 中最高許可權等級之一,這就是為什麼它是如此有吸引力的目標。 多任務緩衝處理程式也可廣泛存取標準使用者,並視需要載入第三方程序代碼。 在業界缺乏文件處理和印表機通訊的統一標準時,這些驅動程式在歷史上需要支援廣泛的印表機。 來自各種製造商的這個龐大的驅動程式生態系統可讓 Windows 支援各種較舊的印表機及其超過 40 種頁面描述語言 (PDL)。 不過,這種複雜性使得很難有一組常見的準則。 這種複雜性帶來了許多安全性挑戰,這些挑戰會限制Microsoft為使用者提供更安全的選項的能力。 本文討論保護列印堆疊的相關挑戰,並分享一些可協助使用者目前的資訊。 它也提供Microsoft攻擊性研究與安全性工程(MORSE)小組與 Windows Print 小組之間合作的預覽,了解我們認為 Windows 列印的未來,這是以 IPP 為基礎的列印堆棧修訂,不再載入第三方驅動程式,而且會隨著受攻擊面降低而執行。
驅動程序問題
列印驅動程式的安全性模型依賴共同責任模型,其中 Windows 列印堆棧和第三方驅動程序必須各自在提供功能和強制執行安全性承諾方面扮演角色,同時避免引入弱點。 這就像 Windows 中的其他子系統,但列印是一個具有挑戰性的案例,因為客戶希望程式在將遠端程式代碼載入至高度特殊許可權的系統程式時無摩擦。
從第三方載入程式代碼時,會從安全性觀點提出數個挑戰。 您不僅必須確定要載入的程式碼,該程式代碼可能會以非預期的方式變更應用程式的行為。 例如,驅動程式支援複雜的剖析邏輯,導致 Bug 允許完全控制多任務緩衝處理程式或相關的列印程式。 在驅動程式中發現弱點時,Microsoft相依於第三方來更新驅動程式。 當發行者不再存在或考慮舊版產品不支援時,就無法清楚解決弱點。
在共同責任模型中依賴第三方驅動程式,會限制Microsoft確保客戶的靈活度和選項。 我們通常位於新安全性保護的前沿,但在載入第三方程式代碼時無法統一部署它們。
相容性
列印司機的一個挑戰是他們的年齡。 許多列印驅動程式已有數十年的歷史,與控制流程防護(CFG)、控制流程強制執行技術(CET)、任意程式碼防護(ACG)和多年來實作的許多其他保護Microsoft等安全防護功能不相容。 這些保護通常是「全部或全無」,這表示所有參與的二進制檔都必須採取步驟才能讓保護生效。 由於並非所有列印製造商都已採取必要步驟來更新這些驅動程式,因此列印服務目前不會受益於這些新式惡意探索風險降低功能。 如果發現弱點,攻擊者更有可能成功利用它。
許可權過多
Windows Print 堆疊會保留其原始設計的許多層面,且已超過 20 年。 列印後台處理程式會以 SYSTEM 身分執行,具有特殊許可權,使其比 Windows 上的標準系統管理員帳戶更強大。 載入至多任務緩衝處理程式的驅動程式(包括第三方驅動程式)會在此許可權層級執行,以取得使用者要求的基本檔列印和處理。 對於每個使用者的要求,Spooler 會收到它必須判斷該工作的正確存取層級,而該工作可能會證明很困難。
多任務緩衝處理程式維護這些許可權的其中一個原因是回溯相容性考慮。 在 30 年內製造的數千名司機在 Windows 中使用,並識別使用者的所有可能風險是困難的。
理想的解決方案是完全移除驅動程式,並將多任務緩衝處理器移至最低許可權安全性模型。 某些作業可能需要系統層級許可權,但最肯定不會。 我們經常Microsoft面臨的挑戰是,任何解決方案都必須考慮客戶的相容性需求。 將這項需求與改善安全性的願望平衡是一項困難的工作。 幸運的是,我們認為我們有一個解決方案。
IPP 基本概念
IPP 是以 HTTP 為基礎的通訊協定,並支援 HTTP 預期的許多驗證方法。 每個 IPP 要求都是 HTTP POST 訊息,並使用如 ipps://printer.example.com/ipp/print 之類的 URI 來識別印表機。 IPP 支援印表機預期的所有 一般作業 ,例如:
Create-Job:建立新的列印作業
傳送檔:將檔新增至列印作業
列印作業:使用單一檔建立新的列印作業
Get-Printer-Attributes:取得印表機狀態和功能
Get-Jobs:取得已排入佇列的作業清單
Get-Job-Attributes:取得作業狀態和選項
Cancel-Job:取消已排入佇列的作業
無驅動程式列印根據 PWG 點陣和 PDF 等公用標準支援有限的 PDL 數目。 這會限制作業系統必須處理以進行轉換的唯一格式數目,並大幅簡化程序代碼。 用戶端轉譯可用來產生傳送至印表機的最終檔。
列印支援應用程式 (PSA)
PSA 允許印表機 OEM 和 IHV 擴充我們現有的 IPP 支援,以滿足其特定需求。 並非所有印表機都支援相同的功能和組態選項。 PSA 允許量身打造的用戶體驗,而不會影響使用者預期的體驗。
點和列印
Point 和 Print 是一項功能,可讓使用者在沒有提供驅動程式的情況下連線到遠端印表機,並在用戶端上安裝所有必要的驅動程式。 點和列印仍與 IPP 一起運作,但運作方式不同。 我們不再需要安裝驅動程式,但需要一些基本設定才能設定印表機。 此程式的運作方式如下:IPP:
Windows 用戶端和伺服器透過 RPC 建立連線
伺服器和客戶端都會使用其收件匣Microsoft IPP 驅動程式
伺服器會使用 IPP 與印表機通訊
如果可用,則會安裝 PSA
安全性
Windows 中的 IPP 型列印現在不需要第三方驅動程式。 IPP 支援傳輸 encyrption,且支援 PDL 數目有限,剖析複雜度會大幅減少。 這是對需要驅動程式使用的模型有意義的改進。
現今 Windows 中的 IPP 列印已是安全性觀點的一大步,我們鼓勵用戶盡可能切換。 我們也鼓勵系統管理員在您的車隊中排定此動作的優先順序。
Windows 保護列印模式中的多任務緩衝處理器安全性
Windows 保護的列印模式建置在僅 支援Mopria認證的印表機 的現有IPP列印堆棧上,並停用載入第三方驅動程式的能力。 如此一來,我們可以對 Windows 中列印安全性進行有意義的改善,否則不會發生。 我們的目標是最終提供最安全的預設設定,並在用戶發現印表機不相容時,隨時提供回復為舊版(驅動程式型)列印的彈性。 若要使用 Windows 保護的印表模式,請確定印表機已啟用 IPP。
當使用者啟用 Windows 保護的列印模式時,一般後台處理程式作業會延後到實作 Windows 受保護列印模式改善的新多任務緩衝處理程式。 讓我們看看其中一些變更。
有限且安全的列印組態
在 Windows 保護的列印模式中,許多舊版設定已不再有效。 對 Windows 的常見攻擊會濫用印表機埠監視器可以是動態連結庫 (DLL),攻擊者會濫用這一點來載入惡意代碼。 攻擊者也會使用符號連結來欺騙多任務緩衝處理程式載入惡意代碼,這已無法再發生。 有許多舊版 API 已更新,以將組態限制為只有在使用 IPP 時才有意義的值。 這可限制攻擊者使用多任務緩衝處理程式修改系統上的檔案的機會。
模組封鎖
將修改允許載入模組的 API,以防止載入新的模組。 例如,AddPrintProviderW 和其他呼叫會導致載入可能是惡意的模組。 我們也會強制執行限制,以確保只會載入 IPP 所需的Microsoft已簽署二進位檔。
每個使用者 XPS 轉譯
XPS 轉譯會以使用者身分執行,而不是 Windows 保護列印模式中的 SYSTEM。 現今 Windows 中的大多數列印作業都牽涉到一些 XPS 轉換,而處理這項工作的程式(PrintFilterPipelineSVC)是許多記憶體損毀弱點的來源。 如同其他問題,藉由以使用者身分執行此程式,這些 Bug 的影響會降至最低。
常見多任務緩衝處理程式工作的較低許可權
拿掉驅動程式也允許我們採取多任務緩衝處理程式所執行的一般工作,並將這些工作移至以使用者身分執行的進程。 如果這些進程有記憶體損毀弱點,該影響僅限於用戶可執行的動作。
新的多任務緩衝處理程式具有新的受限制令牌,可移除許多許可權,例如 SeTcbPrivilege、SeAssignPrimaryTokenPrivilege,而且不再在 SYSTEM IL 執行。
二進位風險降低
藉由移除第三方二進位檔,我們現在能夠啟用多年來投資的許多二進位風險降低Microsoft。 Windows 保護列印模式中的程式會執行許多新的二進位防護功能。 以下是一些重點:
控制流程強制執行技術 (CFG, CET) – 硬體型風險降低,可協助降低以傳回為導向的程序設計 (ROP) 型攻擊。
子進程建立已停用 – 子進程建立遭到封鎖。 如果攻擊者設法在多任務緩衝處理程式中執行程序代碼,這可防止攻擊者繁衍新的進程。
重新導向防護 – 防止許多通常以列印多任務緩衝處理程式為目標的常見路徑重新導向攻擊。
任意程式代碼防護 – 防止進程內的動態程式代碼產生。
如果發現弱點,這些保護會更難濫用弱點。
使用 Windows 保護的列印模式進行點和列印
如上所述,Point 和 Print 通常會允許驅動程式載入以及 IPP 印表機設定。 有些使用者可能只有 IPP 印表機的環境,但惡意攻擊者可能會假裝是印表機,並欺騙使用者安裝驅動程式。 Windows 保護的列印模式可防止 Point 和 Print 安裝第三方驅動程式,降低此風險。