微軟昨天的非常規更新修復了一個特別嚴重的缺陷:任何登錄到域里的用戶都可以將自己的特權提升成其他用戶的特權,甚至包括域管理員的特權。筆者從預先的通知得知,錯誤之一是特權提升錯誤,而且錯誤評級為嚴重。筆者閱讀通知時即知道,這次的漏洞有些東西不太一樣。
微軟在后來的安全研究和防御(SRD)博客里對漏洞做了更多的解釋,盡管提供的細節仍然有限。
先是好消息:“Azure的Active Directory在外部接口沒有用到Kerberos,因此不受該漏洞影響。”否則的話就要壞大事了。
而Windows Server 2008 R2以及更低版因含有該安全漏洞可被攻破。Windows Server 2012也含有一相關的漏洞,但利用漏洞進行攻擊的難度高些。桌面Windows不含該漏洞,但他們還是發布了桌面系統的更新。桌面機里含有相關的代碼,這樣做可能是正著。
這也就解釋了為什么微軟給出的更新優先次序表是下面這樣的:
1、更新運行Windows Server 2008 R2和更低版本的域控制器
2、更新運行Windows Server 2012或更高版本的域控制器
3、更新運行任何版本Windows的所有其他系統
完成第一步前不要中間停下來。
要搞清楚漏洞的機制,有必要了解一下Kerberos是如何工作的。微軟提供了以下說明:
KDC(密鑰分發中心,域控制器上被攻擊的組件)在票證交換過程中的某以點(圖中標2的地方)向客戶端發送一個名為稱為PAC(特權屬性證書)的數據結構,PAC包含一個數字簽名過的部分,該部分本身含有用戶安全權限(用戶的域SID和用戶所屬的安全組)。用戶然后重新將該票證發給KDC,以換取一服務票證,用戶再用服務票證在Windows服務上進行身份驗證。
問題在這里:用戶發回PAC給KDC請求服務票證時,KDC對PAC數字簽名的驗證有時不完善。即是說,用戶可以在偽造的PAC數據里放置用戶的權限,例如將自己設為屬于域管理員安全組的成員。
微軟介紹了一種方法,可以用于在運行更新程序前確定你的系統是否已經被人攻破過,但該方法只是測試某些類型的攻擊方式,包括坊間見過的攻擊方式。利用其它技術的攻擊也是可能的,微軟的這個方法檢測不到這些攻擊。看一下下面的安全事件日志中的一項:
重點檢查安全ID(Security ID)和帳戶名稱(Account Name)是否不同。二者應該是相同的。
運行了更新程序后,可以利用不同的事件,搜尋是否有人企圖在攻擊的證據。
各位應該特別認真地對待此事。據NVD(美國國家漏洞數據庫)給出的描述,該漏洞影響巨大,攻擊漏洞的做法簡單。如果你的系統被攻破的話,無論攻擊者是否進行了破壞,代價都將會十分高昂:補救的唯一方法是從頭開始重新構建域。更新吧,不要讓這種事發生在閣下身上。