總結(jié)Twitter蠕蟲事件 學(xué)習(xí)五條安全經(jīng)驗
2010年8月14日,一名來自日本的軟件開發(fā)人員正人鬼怒川報告在推特的自動網(wǎng)址鏈接功能中存在腳本漏洞。根據(jù)當時的報告,推特修復(fù)了這一問題,但在九月份服務(wù)升級后,該問題似乎又出現(xiàn)了。
綜合測試覆蓋率是開發(fā)人員用來確保代碼質(zhì)量的一種措施。這就意味著在測試驅(qū)動開發(fā)過程中,程序員必須在開始編寫代碼之前就建立好測試模式,然后才能編寫代碼來滿足測試的要求。在實際工作中,不那么極端的測試覆蓋率可能更常見,對于具體的開發(fā)項目來說,它們的效果或許更好。而對于推特代碼庫維護工作之類的重大項目來說,至少應(yīng)用某些類型的測試覆蓋措施是很重要的,尤其是在進行回歸測試和對新代碼進行檢查以防止重新出現(xiàn)以前修復(fù)過的錯誤時。
通常情況下,以前的錯誤再次出現(xiàn)說明在版本控制方面的管理非常不到位。對于版本控制系統(tǒng)來說,防止以前的錯誤重新出現(xiàn)是最基本的功能。對于那些不了解其作用的人來說,版本控制軟件就象一種經(jīng)過高度優(yōu)化的備份措施,可以在軟件開發(fā)過程中進行消除可能導(dǎo)致問題出現(xiàn)的更新返回到原來版本,保證項目中的所有開發(fā)人員都了解最新的情況,合并不同獨立分支開發(fā)導(dǎo)致的變化以及對補丁進行管理之類的工作。如果新代碼與舊代碼的合并方式不正確,就可能出現(xiàn)不同步的問題,從而導(dǎo)致以前的補丁出現(xiàn)問題,或者在版本控制過程中出現(xiàn)管理不善的情況,或者由于采用的是人工而不是自動化方式對版本進行控制,以前修復(fù)過的錯誤都可能很容易被重新引入新代碼中。
鬼怒川發(fā)現(xiàn)同樣的錯誤再次出現(xiàn),于是就開發(fā)了一個概念工具,它可以將“tweets”或者推特信息以彩虹色顯示出來。當時,他沒有意識到這會成為嚴重的缺陷,但在其它人也了解到這一漏洞后,他們也開始利用相應(yīng)模式了。不久以后,就出現(xiàn)了tweets開始自動回復(fù)任何將鼠標移動到鏈接上的用戶的情況。它從一個簡單的搞怪行為變成了病毒。很快,該漏洞已經(jīng)進化到可以感應(yīng)鼠標在瀏覽器網(wǎng)頁內(nèi)的全部活動了,現(xiàn)在,只要在瀏覽器窗口內(nèi)出現(xiàn)鼠標就可能被病毒利用。
由于該病毒是直接針對推特網(wǎng)站處理網(wǎng)絡(luò)地址的方式,所以并沒有影響到RSS速遞、第三方客戶端以及利用其它方式而不是推特標準網(wǎng)絡(luò)界面閱讀和發(fā)送tweets信息的應(yīng)用。
從這起事件中,我們應(yīng)當?shù)玫綆c很重要的教訓(xùn):
1、對所有輸入信息都要進行審核,在其它條件相同的情況下,堅持提供審核模式已經(jīng)被證明總是有效的。
2、對輸出信息進行詳細檢查,以確保它不會以在網(wǎng)絡(luò)瀏覽器客戶端里鼠標懸停效果之類令人驚訝的方式影響到最終用戶。
3、在軟件開發(fā)過程中應(yīng)用版本控制措施,防止由于源代碼管理不善出現(xiàn)的潛在錯誤。
4、采用自動化測試套件,防止出現(xiàn)回歸和其它可能被開發(fā)人員忽略的錯誤。
5、不要低估已知漏洞可能帶來的影響,尤其是在它落入可能比你更危險的人手里時間。
從自己犯下的錯誤中學(xué)習(xí)經(jīng)驗,永遠是一個好主意。而從其它人的錯誤中學(xué)習(xí),則是更好的主意,這樣你自己就不會犯下同樣的錯誤。
原文出處:http://security.zdnet.com.cn/security_zone/2011/0111/1985913.shtml