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