Chat Wars

Chat Wars 是由 David Auerbach 所撰寫的一篇文章,內容主要敘述在 1999 年時,微軟與 AOL(American Online,美國線上)之間的「即時通訊軟體大戰」。當時作者在微軟擔任軟體工程師,負責 MSN Messenger Service 客戶端的開發(也就是大家熟知的 MSN Messenger / Windows Live Messenger),而所謂的大戰是肇因於微軟試圖在不與 AOL 合作的情況下,讓 MSN Messenger 支援登入 AIM(AOL Instant Messenger)伺服器,以蠶食 AIM 廣大的使用者群。

 

回想起來,DR 對 1999 年的即時通訊軟體景況可說是一無所悉,因為 DR 差不多是在 2001 年才開始使用即時通訊,最初用的是 ICQ,而且 ICQ 早期版本的中文支援不太好,要透過一些手法才能用中文彼此互動,後來則開始改用 MSN Messenger。至於現在則算是沒有使用任何的即時通訊軟體,僅保留 Skype 帳號做為備用的聯繫方式。

 

讓 MSN Messenger 支援 AIM 的帳號登入其實是作者在完成客戶端開發後、出於樂趣所額外添加的功能。由於 AIM 採用的是專屬的 OSCAR 通訊協定(Open System for CommunicAtion in Realtime),所以作者是藉由自己使用 AIM 客戶端登入、然後擷取客戶端與伺服器之間的訊息來解析出通訊協定。MSN Messenger 在首次發佈的第一個版本便支援 AIM 帳號登入,讓使用者可以同時與 MSN Messenger 和 AIM 上的好友互動。

 

AOL 想當然耳不會樂見這樣的情形,於是雙方的工程師展開一場日復一日、見招拆招的攻防戰。AOL 想方設法的要阻擋偽裝成 AIM 的客戶端,而作者則持續精進他的模仿來破解。這類攻防的情節包含了 AOL 識別出 MSN Messenger 不會下載 AIM 伺服器的廣告,並以此做為阻擋依據,而作者則接著跟進讓 MSN Messenger 有下載廣告的動作(但隨即丟棄)。甚至 AOL 在某次更新後還刻意篩選了來自微軟總部的 IP 位址,讓微軟總部的使用者仍然可以成功登入,但在其它地方則否,此舉讓作者花了一、二個小時才意會到對手的手法。

 

在一陣兵來將檔、水來土掩的激戰後,AOL 的攻勢似乎停息了。然而就在作者對勝利滿懷期盼之際,對手使出一記絕殺終結了這場戰爭。

 

AIM 伺服器發送了一段詭異的內容,裡頭有大量的零值和無法理解的位元,而 AIM 客戶端卻可以對此做出同樣無法理解的回應並順利登入。在思索了大半天後,作者向團隊中的伺服端工程師求助,他看了幾分鐘後表示這些是 x86 組合語言的程式碼。原來 AIM 客戶端有個緩衝區溢出的漏洞,伺服器可以藉此先用零值填滿造成溢出,再覆寫客戶端的可執行程式碼進行控制。換言之,他們入侵了自己的客戶端。

 

MSN Messenger 沒有這樣的漏洞(也不應該有),這使得作者有點不知道該怎麼辦。有人提出了一個聰明的解決辦法,那就是訴諸媒體,讓公眾知道 AIM 的安全漏洞,迫使 AOL 修正它。後來真的有人這麼做了,效果卻適得其反。

 

作者的部門並沒有對外放出任何訊息,而事實上微軟的內部規定也禁止任何非透過公關部門的訊息發佈。但安全專家 Richard M. Smith 收到了一封郵件,寄件者稱自己正在開發一款尚未發佈的即時通訊軟體,對於 AOL 與微軟之間的戰火有所關注,然後在最近發現 AOL 很不恰當的利用了一項安全漏洞來阻擋微軟。儘管信件內容有著不少狀似寄件者與微軟無關的跡象,但令人尷尬的是,信件的檔頭顯示的卻是微軟的 IP 位址。

 

Smith 立即指控微軟是真正的告發者,微軟則予以否認。儘管在消息公開後,有越來越多人士證實了這項漏洞的存在,然而媒體卻聚焦在微軟與 AOL 之間的攻訐,而不是 AIM 的安全漏洞。AOL 顯然沒有打算修正,作者也只好投降了,不再讓 MSN Messenger 支援 AIM。

 

後來作者離開微軟,加入 Google。幾年後他遇到了一名當年的對手,這名工程師後來也離開了 AOL。兩人談及當年的故事都覺得很有趣,也都同意這是一場偉大的較量。

 

分類: