張偉:大眾網(wǎng)技術(shù)——敢當(dāng)!
2011-05-25 16:24:00 來源: 大眾網(wǎng)
[提要]

技術(shù)中心主任兼技術(shù)開發(fā)部主任 張偉
說實話,2009年2月進(jìn)入大眾網(wǎng)1個月內(nèi),我還不知道大眾網(wǎng)和大眾日報社的關(guān)系,當(dāng)初應(yīng)聘只是當(dāng)作一份普通的網(wǎng)站工作來看待的,原本也只是想做個安逸的論壇管理員。但是我有個固有的毛病——工作狂,直到現(xiàn)在也改不了,所以工作沒幾天就被領(lǐng)導(dǎo)發(fā)現(xiàn)了在技術(shù)方面的能力,此后幾乎每天都通宵達(dá)旦加班寫代碼、研究系統(tǒng),開始了大眾網(wǎng)技術(shù)生涯。
2009年、2010年,這些工作還比較得心應(yīng)手,是以往所學(xué)的充分應(yīng)用,但是2011年,我感覺要挺不住了。
2011年,網(wǎng)站的開發(fā)和運維任務(wù)像雪片般飄來,但是技術(shù)開發(fā)部的人員并沒有增加,人員培訓(xùn)、任務(wù)分解、任務(wù)優(yōu)化、任務(wù)重組這些項目管理的基本方法都已經(jīng)用上了,仍然無法滿足網(wǎng)站工作的需要,需要做的運營網(wǎng)站系統(tǒng)、編輯發(fā)布系統(tǒng)以及網(wǎng)站運維必須的基本支撐系統(tǒng)實在太多了,通過不斷努力和取舍,在2011年的工作計劃中基本能夠排開。真正讓我感到很強的崩潰感的是3月13日出現(xiàn)的重大網(wǎng)站安全事件。
3月13日,論壇發(fā)現(xiàn)主題ID發(fā)生錯亂,從最初的8位數(shù)變?yōu)?0位數(shù),論壇主題本身應(yīng)當(dāng)代表的意義是論壇主題總數(shù)。突然發(fā)生這樣的變化,不可能是主題數(shù)從2千萬增加到20億,一定是由于論壇出現(xiàn)了BUG或者被篡改造成的。通過分析,以我們目前的系統(tǒng)架構(gòu)能力,論壇容納40億主題沒有問題,況且實際主題數(shù)量只有2千萬;再從比較保守的角度去分析,架構(gòu)中的php環(huán)境存在處理數(shù)據(jù)最大值的限制,當(dāng)數(shù)字超過9位數(shù)可能會發(fā)生錯誤,即使這樣,我們的論壇最少可以容納2億主題。
雖然從論壇的容量來講,我們的容納能力很高,但是,已經(jīng)開始出現(xiàn)10位數(shù)的ID,開始逼近論壇的最終容量并且已經(jīng)超過了PHP環(huán)境的良好工作范圍。也就是說,如果不立即找出問題根源并解決問題的話,論壇很快就會停轉(zhuǎn)。因此技術(shù)開發(fā)部立即成立論壇問題處置小組,由技術(shù)總監(jiān)李雪修為組長,由我、孫世強、丁磊、趙容濤為成員,后來崔曉輝加入,對論壇ID錯亂的問題進(jìn)行專題分析。
經(jīng)過分析查找,論壇ID分別于2月21日、2月28日、3月9日、3月15日發(fā)生過變化,并在3月15日出現(xiàn)論壇ID超出論壇最大允許ID數(shù)導(dǎo)致論壇無法發(fā)布新帖。
我們首先懷疑與發(fā)生論壇ID 錯亂的時間點比較吻合的新聞跟帖導(dǎo)入論壇功能,該功能于2 月21 日正式上線,我們首先停用了該功能,并對相關(guān)代碼進(jìn)行深入分析,但分析結(jié)果表明,論壇ID 錯亂與該功能無關(guān),因為如果是該功能導(dǎo)致的故障,會是由該功能發(fā)布的新論壇帖子ID 出現(xiàn)變化,而出現(xiàn)ID 變化的帖子均不是新發(fā)的帖子,ID 變化的帖子中甚至有2009 年的帖子。
論壇更換為Discuz 系統(tǒng)同時使用MySQL 數(shù)據(jù)庫已經(jīng)有2 年時間了,在以往論壇ID 一直正常;論壇ID 在MySQL 數(shù)據(jù)庫中以ID 的形式保存,一一對應(yīng),同時代表著論壇帖子的基本數(shù)量級。對于MySQL 數(shù)據(jù)庫,8 位數(shù)的論壇ID 不存在溢出導(dǎo)致進(jìn)錯位的情況(MySQL 數(shù)據(jù)庫不做任何升級的情況下,最大支持42 億的論壇帖子數(shù)量)。
從數(shù)據(jù)庫的角度分析,論壇故障不會是數(shù)據(jù)庫Bug 導(dǎo)致的。但由于論壇ID 已經(jīng)變成10 位,而論壇主腳本語言PHP 在數(shù)字位數(shù)大于9 位時會出現(xiàn)運算錯誤,所以10 位數(shù)的論壇帖子打開會出現(xiàn)錯亂。
再從論壇Bug、安全漏洞角度入手分析,期間,我們查找了大量的網(wǎng)絡(luò)文章、咨詢Discuz 廠商康盛公司、咨詢綠盟等安全服務(wù)廠商,近期Discuz 論壇未爆出任何安全漏洞。同時從安全服務(wù)廠商處獲取了查找安全漏洞的一些新的思路(例如遠(yuǎn)程包含),準(zhǔn)備多角度分析論壇是否存在漏洞。在對可疑源代碼進(jìn)行了大量細(xì)致的分析后未發(fā)現(xiàn)可疑、危險操作。 但是,為了保障ID 錯亂不是由論壇本身的安全漏洞導(dǎo)致的,我們在論壇底層做了過濾處理,當(dāng)發(fā)現(xiàn)對論壇ID 進(jìn)行處理的操作時,立即記錄操作行為發(fā)起者IP、使用的功能鏈接,同時立即終止該操作。3 月15 日,我們又在論壇數(shù)據(jù)庫中增加了MySQL 解析專用sniffer,用于嗅探記錄所有MySQL 數(shù)據(jù)庫操作,該記錄能夠完整記錄數(shù)據(jù)庫操作內(nèi)容、IP 地址等信息。
在3 月15 日論壇ID 出現(xiàn)溢出,導(dǎo)致論壇無法發(fā)新帖的時候,我們進(jìn)行了第一次論壇帖子ID 修復(fù),該工作于下午14:00 完成。當(dāng)晚隨即發(fā)現(xiàn)論壇帖子ID 再次變化為9 位,經(jīng)過對論壇底層記錄分析發(fā)現(xiàn),出現(xiàn)論壇ID 錯亂并非論壇功能本身所為,我們于15 日后半夜增加了論壇數(shù)據(jù)庫嗅探。因為論壇數(shù)據(jù)庫嗅探屬于比較占用系統(tǒng)資源的操作,需要記錄過濾所有的數(shù)據(jù)庫操作,增加該操作會導(dǎo)致系統(tǒng)性能降低,所以只有到了萬不得已才會啟用該操作。
經(jīng)過3 月15 日的論壇ID 變化,已經(jīng)可以下結(jié)論,論壇ID 是被惡意篡改的,論壇體系中存在重大安全隱患!從篡改論壇ID 的數(shù)據(jù)庫操作動作來看,篡改者擁有的權(quán)限很高,如果不及時清理,將可能出現(xiàn)論壇數(shù)據(jù)被清空、被篡改為反動內(nèi)容等高度危險的情況。
3 月16 日和17 日我們對論壇進(jìn)行了大量的安全掃描(使用我們自己開發(fā)的網(wǎng)站安全掃描工具)和文件對比、查找,并在17 日成功記錄下了篡改操作的發(fā)起服務(wù)器,在博客所在的服務(wù)器查找到了4 個含有惡意代碼的后門文件,其中3 個為文件上傳型后門,1 個為任意代碼執(zhí)行型后門,危害程度極高,我們立即對這些惡意代碼進(jìn)行了清理,并對相關(guān)的用戶權(quán)限進(jìn)行了限制。
3 月18 日上午9:20,在數(shù)據(jù)庫嗅探記錄中再次發(fā)現(xiàn)篡改論壇ID 的動作,但由于17 日的安全加固,該篡改行為沒有成功執(zhí)行。同時嗅探記錄中發(fā)現(xiàn)開心公社的服務(wù)器也進(jìn)行了非法操作。這樣我們就將整個論壇服務(wù)器群加入掃描目標(biāo),分別在博客服務(wù)器、開心公社服務(wù)器、UCenter 服務(wù)器掃描發(fā)現(xiàn)各種含惡意代碼的后門程序,其中包含文件上傳型、任意代碼執(zhí)行型、base64 加密型后門。期間我們根據(jù)惡意代碼衍生情況,再次修改了我們的安全掃描軟件,為日后惡意代碼掃描工作提供了更有效的保障。
經(jīng)過3 月19 日和20 日,對論壇服務(wù)器群所有服務(wù)器的詳細(xì)掃描、文件對比后,論壇安全隱患基本排除。截止到目前,未發(fā)現(xiàn)新的篡改記錄。
但是到3 月22 日,論壇再度出現(xiàn)ID 錯亂情況,說明系統(tǒng)中隱藏的攻擊還在進(jìn)行,通過掃描,又發(fā)現(xiàn)幾處新的更隱蔽后門,篡改手法跟之前一樣。但是此時,我的心里已經(jīng)有了很大的陰影,感覺到論壇群還存在隱藏的東西,只是還沒能發(fā)現(xiàn)出來。所以,在這次清理后門結(jié)束后,我們收縮了數(shù)據(jù)庫的權(quán)限設(shè)置,使得很多權(quán)限設(shè)置更加嚴(yán)密。之后幾天不斷的查找各種后門特征,找到新的特征就對論壇再次掃描,不斷重復(fù)重復(fù)再重復(fù)這個動作。但是一直沒能突破。
3 月25 日,論壇再次出現(xiàn)問題,這次是用戶ID 出現(xiàn)錯亂,說明之前對于主題表的權(quán)限設(shè)置生效了,入侵者沒能篡改成功,于是改為篡改用戶數(shù)據(jù)。我們及時搜查了后門也搜到幾個,同時收縮了用戶表的權(quán)限。但這件事充分驗證了之前的擔(dān)憂,說明論壇中確實還存在隱藏的后門。
3 月26 日,經(jīng)過若干天的苦戰(zhàn)和偌大的心理壓力,我終于挺不住了,睡了整整一下午,起床后第一件事就是看QQ 記錄,結(jié)果,看著看著,我崩潰了。按照QQ 顯示,論壇再度出現(xiàn)ID 錯亂!難道我們最終的權(quán)限也被攻破了?不過還好,經(jīng)過分析,QQ 消息是虛報,只是搜索引擎中存在的以前錯亂時候的殘留信息。
后來經(jīng)過不懈的努力和大量的文件比對工作,終于在3 月27 日將博客服務(wù)器中隱藏的后門揪了出來。
在整個論壇ID 錯亂處置過程中,孫世強、丁磊、趙容濤、崔曉輝均表現(xiàn)出高度的責(zé)任心,每天加班到深夜,對每個文件都詳細(xì)對比,每段代碼都詳細(xì)斟酌,為排除論壇安全隱患做了大量的工作和努力。
大眾網(wǎng)技術(shù),敢當(dāng)不敢當(dāng)?大眾網(wǎng)技術(shù)——敢當(dāng)!

大眾網(wǎng)版權(quán)與免責(zé)聲明
1、大眾網(wǎng)所有內(nèi)容的版權(quán)均屬于作者或頁面內(nèi)聲明的版權(quán)人。未經(jīng)大眾網(wǎng)的書面許可,任何其他個人或組織均不得以任何形式將大眾網(wǎng)的各項資源轉(zhuǎn)載、復(fù)制、編輯或發(fā)布使用于其他任何場合;不得把其中任何形式的資訊散發(fā)給其他方,不可把這些信息在其他的服務(wù)器或文檔中作鏡像復(fù)制或保存;不得修改或再使用大眾網(wǎng)的任何資源。若有意轉(zhuǎn)載本站信息資料,必需取得大眾網(wǎng)書面授權(quán)。
2、已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:大眾網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
3、凡本網(wǎng)注明“來源:XXX(非大眾網(wǎng))”的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負(fù)責(zé)。本網(wǎng)轉(zhuǎn)載其他媒體之稿件,意在為公眾提供免費服務(wù)。如稿件版權(quán)單位或個人不想在本網(wǎng)發(fā)布,可與本網(wǎng)聯(lián)系,本網(wǎng)視情況可立即將其撤除。
4、如因作品內(nèi)容、版權(quán)和其它問題需要同本網(wǎng)聯(lián)系的,請30日內(nèi)進(jìn)行。




