最近有不少朋友都中了隨身碟的開機惡意程式,求救電話是源源不絕,這種時候只能耐著性子提供協助,同時給予一點在資訊安全防禦方面的建議。這種事情每隔一段時間都會出現,然後在各大論壇和資訊媒體上,安全防禦問題就會變成置頂的討論話題,其中必定有人會說自由軟體比較安全啦!勸大家不要使用微軟 Windows 之類的言論,甚至宣稱採用自由軟體就不會被感染惡意程式。但是我向來都不認同這種說法。
我相信只要是人寫的軟體,或多或少都有不完美的成份存在,甚至同一種功能而只是操作流程不同,就可能會發現事先無法預知的問題,所以我從不認為自由軟體(包括作業系統的 Linux)在安全問題上就可以完全放心,甚至置諸腦後。
日前有某大資訊媒體報導 OpenOffice 的漏洞殃及多種作業系統,大意是 2.0.4 版的 OpenOffice,及其更早的版本有個安全上的漏洞,這個漏洞將會讓惡意侵入的人能夠以最高權限者的身份來控制使用者的電腦,目前確定會影響的作業系統只在 Linux 上,但這種問題通常也都會影響現行的作業系統,包括 Mac OS、Windows 和 Linux 在內。早在今年六月間,有一種稱為 "Badbunny" 的蠕蟲,就是透過 OpenOffice 在網路上蔓延,傳染多種作業系統,包括 Mac OS、Windows 和 Linux 在內。
也許很多人還不清楚 OpenOffice 是什麼東西,它的正式名稱是 OpenOffice.org,簡單講它是一套像微軟 Office 的應用軟體,可以說是自由軟體中最重要的辦公室軟體,本是由商業公司所發展出來的,但卻是開放原始碼的自由軟體(詳情請見維基百科:OpenOffice.org)。許多人轉換跑道到 Linux 陣營之後,在文書、簡報、試算表方面的應用,幾乎都使用這套軟體。
好了,現在這個真實的事件,以無情的事實告訴論壇內那些宣稱自由軟體比微軟產品還安全的人:這是不可能的啦!俗話說的好:「吃燒餅沒有不掉芝麻的。」在幾千幾萬行的程式碼裡頭,難免會出現個小差錯,這個差錯很可能在多數的情況下不會發生,必須在特定的條件才會出現。發生的情形可能是事前的規劃不夠嚴謹;事後的除錯又不夠仔細,或是軟體設計師對於撰寫方法的認知比較特殊,也許根本不是軟體設計師的問題,而是撰寫程式的語言本身就存在著某種矛盾,導致開發出來的軟體就會帶有某些「先天疾病」。
所以,不管採用什麼軟體和作業系統,如果自己在乎的電腦系統能不能穩定工作的話,就要有一定的安全防禦的意識,別以為有牢不可破的東西可用,那很有可能是還沒遇到或沒什麼人有興趣去做而已。Windows 在個人電腦上的佔有率近九成,只要製作出一個可入侵 Windows 的工具,就能侵入多數的電腦,幾乎可說「以此橫行天下」。要是製作其他作業系統的入侵工具,只能侵入一小部份的電腦,這樣的投資報酬率還真不划算。尤其現在的入侵電腦的目的,不再像過去純粹是為了炫耀自己的技術,而是為了獲取不當利益。就成本效益來講,拿 Windows 當目標顯然划算多了。不過當 Mac OS 和 Linux 越來越多人使用的時候,相關惡意程式的增加也是很自然的事。(以前常聽使用 Mac 的人說,Mac OS 是不會中毒的,但是今天的蘋果電腦公司卻跟微軟一樣,也經常發佈修正程式......到底 Mac OS 安不安全,請大家自行判斷吧!)
雖然說沒有絕對安全的作業系統和應用軟體,不過不同陣營之間的軟體還是有程度之別。架構嚴謹的軟體,通常也代表著不容易製作出惡意程式。在目前三大個人電腦系統中,Unix-Like 是被認為比較嚴謹的,而且在開放原始碼的環境中,任何人都可以實際去檢視原始碼有沒有問題,進而自行動手修改(若有本事的話)或到社群內尋求協助。若是商業軟體,就得看原設計公司的臉色了,如果所使用軟體的公司繼續提供服務,那麼還有希望付費得到協助,若是像 Windows 98 這種已經被微軟公告不再提供任何支援的軟體(Windows XP 即將走到這個地步,我相信 Windows Vista 在你我有生之年也會如此),即使願意花錢,微軟也不見得願意幫忙。
因此在無法自行修改和安全的考量之下,除了放棄所使用的軟體之外,實在是找不出更好的解決方法(註一)。起碼,在自由軟體的陣營不會慘到這種地步。在全世界這麼多的開放社群中,總有機會找到能解決的方法或人(前提當然是要有良好的國際溝通能力)。
其實資訊安全問題和其他領域的安全問題沒啥不同,解決的基本之道都是自己要有相關的安全意識;採取必要的防禦措施和良好的使用習慣,要是能面面俱到,受害的機會自然相對比較小。而一開始選用軟體時就選擇「安全體質」比較好的軟體,受害的機會和所需要採取的防禦措施當然也最小。不過千萬別存有「某軟體是絕對安全,永不淪陷」的觀念,因為那種東西只存在於神的領域內,而不是人間。
既然只有相對安全的軟體,那麼在選擇的過程中我們也該考慮:有沒有可能自己動手修改好增進安全性?是否有比較大的機會得到協助而不受限於單一的人或團體,以便讓自己的軟體能在最短的時間內解決安全方面的問題?顯然封閉程式碼的商業軟體無法滿足這樣的需求。
註一:放棄目前所用的軟體,其實是一件很痛苦的選擇。因為新的作業系統和應用軟體不見得能完全滿足自己的應用需求。所以為了安全而更換作業系統或軟體,也必須先找好相關的解決方案,並且要能繼續利用過去所累積的數位資產才行。
關於作者:
筆者目前任職於創意家資訊,擔任 IT 研發組召集人,曾開發多本中小學資訊教材,個人部落格:人間研究所