微軟研發人員在MSDN部落格中解釋IE 7重大的漏洞為何遲遲未能發現,主因是未能有適當的訓練與檢驗工具。
在微軟MSDN的SDL(Security Development Lifecycle)部落格中,微軟研發人員Michael Howard針對上星期微軟IE 7漏洞未能即時發現做了事後分析。Howard表示,這是一個與記憶體相關的TOCTOU(time-of-check-time-of-use)漏洞,而程式設計人員卻從來沒被告知或教育明白這類的問題。
所謂的TOCTOU(或是time-of-check-to-time-of-use; TOCTTOU可發音為TOCK)的漏洞,指的是在資料與權限等狀態的檢查與使用之間,因為某特定狀態在這段時間內已改變所產生的漏洞。他表示,只藉由重新檢視程式碼,很難找出TOCTOU的漏洞。
Michael Howard為「撰寫安全的程式」(Writing Secure Code)一書的共同作者,他在部落中指出了微軟IE 7漏洞產生的原因,以及微軟程式撰寫與檢驗的流程。微軟IE瀏覽器的漏洞在過去至少已存在9年,卻從未被發現,因此緊急在上個星期發佈修補檔案。
Howard在文中指出,TOCTOU的漏洞導致程式錯誤呼叫一個記憶體區塊,這種典型的錯誤因此歸類為一般漏洞列表(CWE; Common Weakness Enumeration),也就是CWE-367。他表示,我們教過TOCTOU的問題,教過記憶體錯誤的問題,也教過閒置記憶體的問題,但卻從未教過與記憶體相關的TOCTOU問題。我們確實需要對此進行教育的提昇。
Howard表示,解決這個漏洞的方法是在每個廻圈循環時檢查最大的重覆數,而非只在廻圈開始時檢查一次。這是正確的修補方式--儘可能地在接近動作執行時傳遞檢驗值,因為在這個案例中,陣列的大小可能會改變。
在文章中,Howard同時也說明了為何微軟的靜態分析工具,以及fuzz自動偵錯工具都無法派上用場。(編譯/吳曉波)
熱門新聞
2026-01-06
2026-01-06
2026-01-06
2026-01-05
2026-01-02
2026-01-02