凌志軍
(一)
“我們發現了一個黑客,在中國?!?/p>
2003年1月的一個早上,微軟亞洲研究院現任院長張亞勤來到辦公室,打開電子郵箱,這一行字立即彈了出來。
郵件來自微軟公司總部的安全小組。這小組的職責之一是監視因特網瀏覽器在全球的運行情況,專門尋找“臭蟲”,然后彌補,同時還要監視網絡上面神出鬼沒的“黑客”行蹤。
對于微軟公司來說,網上“黑客”的性質是不同的。有些“黑客”的確對微軟抱著敵意,專門尋找微軟軟件產品中的“臭蟲”,利用軟件本身存在的漏洞,去攻擊那些軟件使用者。這種攻擊帶有極大的破壞性,還讓微軟公司難堪。另外一些“黑客”則純粹屬于“技術狂”,對技術的熱愛導致他們去尋找大公司產品的毛病。他們決不出手攻擊網站,他們知道那是違法的,還會給別人帶來損失。但是他們通常把自己的發現在網絡上公布,還詳細說明,怎樣通過他們的“發現”抓住軟件上的“臭蟲”。
根據微軟總部安全小組的判斷,新出現的“中國黑客”屬于后一種情況。他不是惡意的攻擊者,但他技術高超、眼光獨到。他的矛頭直指“微軟因特網瀏覽器”,還把他發現的4個“臭蟲”公布在網上。
“他的發現真是讓人難以置信。他比我們迄今為止見過的最棒的黑客還要棒。”安全小組在電子郵件中這樣說,“他知道這些‘臭蟲是什么原因造成的,能猜出程序員在寫程序的時候大概犯了什么錯誤,他還告訴別人怎么攻擊。每當他公布一個‘臭蟲,就會有一大堆惡意攻擊者尾隨而來,攻擊那些使用微軟產品的人。”
微軟的安全人員防不勝防,因為這個“中國黑客”差不多每個月都能在“瀏覽器”上抓到一個“臭蟲”,而且他也不像別的黑客那樣隱名埋姓。他把自己的來路全部公布在網絡上。
嚴格說來,他的行為并不違法,因為他并沒有利用微軟的“臭蟲”去攻擊他人,也沒有給他人造成損害。但這樣的“黑客”讓微軟感到頭疼,微軟安全小組的工程師們非常希望找到他,于是向張亞勤尋求幫助。
“可以肯定他是一個中國的學生?!彼麄兏嬖V張亞勤,“在湖南的湘潭大學讀書,名叫劉蝶雨?!?/p>
(二)
湘潭大學的大二學生劉蝶雨坐在他的擁擠不堪的房間里,盯著電腦屏幕,目不轉睛,那上面是微軟公司最得意的產品之一“因特網瀏覽器”。他知道他想找的東西就在那里面,他已經清晰地感覺到它的存在,可它為什么還不出來呢?……過了一會兒,他就在這瀏覽器上找到了第五個“臭蟲”。像往常一樣,他把它公布在因特網上,留下了自己的姓名和地址。
“真奇怪!”有個同學對他說,“微軟還沒有對你采取行動啊?”
“采取行動?”他將信將疑,不禁緊張起來。
有一天,電話鈴響,他拿起來,聽到那邊有個聲音:“我是微軟的?!?/p>
劉蝶雨當即目瞪口呆。
打來電話的人叫林斌,是微軟亞洲研究院新技術開發部的經理。他接到張亞勤轉發的郵件,按圖索驥,很容易地找到了劉蝶雨。
“我們找你,沒有什么特別的?!绷直蟾杏X到對方緊張的喘息聲,希望緩和氣氛,接著自我介紹,說自己在北京,在微軟亞洲研究院負責一個工程師小組。
劉蝶雨只是含糊地“啊,啊”?!拔覀儗δ愕墓ぷ鞣浅8信d趣?!绷直笳f,“我們很想請你到北京來看看。也許你愿意和我們合作。你寒假如果沒有事的話就來吧,坐飛機坐火車都行,我們負責你的旅行費。”
“我很愿意?!眲⒌暾f,“也許吧?!?/p>
蝶雨放下電話,心里還在咚咚跳。他的第一個念頭是:“這年頭騙子太多啦。他們是微軟的嗎?”接著又一個念頭:“就算他們是真的,到底為什么找我呢?該不是要把我關起來吧?”
蝶雨這樣想著,第一次感覺到“黑客帝國”的驚險離奇。
春節過后,蝶雨終于來到北京的希格瑪大廈。
林斌致電微軟總部,說他們要找到的“黑客”現在就在他身邊。
“太棒了!”對方興奮地說,“我們在一起開個會吧?!?/p>
蝶雨聞聲大驚:“我要見敵人了!”“你怎么會想到這個?”林斌很奇怪?!拔沂窃谡夷銈兊穆闊┌ D銈儾皇菙橙藛?”
林斌說:“我們不是敵人,我們只是想把軟件做得更好?!?/p>
“你們想要我做什么?”
林斌對他說:“你想做什么。就做什么。你如果想繼續在‘瀏覽器上找‘臭蟲。我們總部的產品組可以和你合作。”
蝶雨開始工作了。連續7天,他在“因特網瀏覽器”上找到7個“臭蟲”,一天一個,而且都是很難找到的。他自己興奮,微軟總部的人更興奮,驚嘆:“這個人怎么這么厲害!”。
第八天,林斌給了蝶雨一本書。此書是專門講怎樣編寫安全代碼的,作者是微軟公司產品部門的一位經理。書中列舉了程序員常犯的錯誤,極為精致周到,所以這本書成為微軟程序員的必讀書。
林斌說:“讀讀這本書,你能更好地發現程序員的弱點在哪里。”
蝶雨大喜,拿回去看了第一章,腦子里面馬上有了新主意。他試圖以其人之道還治其人之身,直接深入到書作者領導的那個小組中去。
林斌聽了他的想法,覺得不會有結果:“書是他自己寫的,他不會在他領導的小組里犯錯誤。”
但是蝶雨更相信自己的直覺。
(三)
按下來的事情,讓所有人都感到意外。蝶雨在“瀏覽器”的地址欄里發起了他的“戰役”。當他使用一種方式來表達一個字母的時候,“瀏覽器”沒有任何問題。他繼續擴展到第二種方式,仍然沒有問題。這都是意料中的,他并不在意,一口氣做下去,不斷擴展出新的表達方式,字符串也迅速延伸,一直延伸到第81次,系統的毛病顯示出來,他笑了,再接再厲,擴展出至少200種變化,字符串形成前所未有的長度。最后他莫名其妙地進入一家銀行的網頁。
“真是太絕了。”林斌說,“別人的測試,只變化十幾次、二十幾次,已經不得了。實際上他的變化是從0到200多次。就是在中間一個短暫的階段,他發現了問題。問題報告到總部,那邊的人佩服得一塌糊涂?!?/p>