2010-09-29 64 views
10

微軟昨天在ASP.NET發佈了他們的out of band release to fix the security flawASP.NET上的oracle填充攻擊是如何修復的?

微軟用什麼方法來結束這個向量的可行性?

+3

我認爲這是膠帶。 – FrustratedWithFormsDesigner 2010-09-29 17:13:56

+2

早晚有人會使用NDepend或Reflector比較兩個版本的System.Web.Extensions.dll。 – 2010-09-29 17:16:41

+0

@Mauricio,AES實現是非託管代碼,所以我不認爲Reflector或NDepend會幫助很多:-)如果這是一個純粹的託管修復,那麼對於每個可以想象的Windows版本,CPU類型,都不會有修補的版本。 .. – 2010-09-29 17:20:25

回答

14

的變化的大彙總來自http://musingmarc.blogspot.com/2010/09/ms10-070-post-mortem-analysis-of-patch.html

  • 不要泄漏異常信息 - 這可以防止攻擊從看到的是破碎的。
  • 不要在填充檢查上進行短路(對於填充正確的經文填充損壞需要相同的時間) - 這可以防止漏洞利用不正確填充的時間差異。
  • 對IHttpHandler.ProcessRequest中的異常捕獲不要太挑剔 - 這可以防止利用程序發現您捕獲了一種異常(CryptographicException)而不是所有異常。
  • 從基於哈希的初始化向量切換到隨機IV - 這可以防止攻擊者利用數據和哈希之間的關係更快地解密。
  • 允許向後兼容 - 如果這打破了某些內容,則允許將新行爲部分還原。
  • 執行代碼審查通過時,更改以明確您已考慮新的選項。
+0

+1不錯的詳細信息,添加了一個關於我認爲是主要修補程序的答案。 – eglasius 2010-09-29 18:01:46

+1

太糟糕了,我沒有想到在這裏看到併發布我的博客答案第一:) – IDisposable 2010-09-29 18:43:00

+0

@IDisposable你應該...我喜歡上傳作者 – eglasius 2010-09-29 19:02:48

3

主要:簽署任何加密的數據,發送到瀏覽器。這可以防止與攻擊所獲得的值相混淆,從而獲得有效與無效填充信息,即因爲簽名在所有這些情況下都不匹配。

其重要的是要注意,允許文件檢索的webresource and scriptresource中的孔應該不會發生。單純的簡單加密並不意味着篡改證據。換句話說,它不是像其他padding oracle攻擊這樣的高級場景的疏忽(它仍然依靠相同的事實,將修改後的加密數據發送迴應用程序,而在服務器上沒有防篡改保護)。

除了上面的主要修復之外,預期的事情就像試圖隱藏進一步的加密端通道並確保它不會破壞依賴於相同加密調用的其他功能(如asp.net成員資格)。