狗都嫌的Vista UAC,問題在哪裡?
前幾天接獲一件案例,Vista x64連上健保局網站,由於需使用自然人憑證,要安裝ActiveX控制項,結果苦主將IE7的保護模式關閉、也設成信任的網站,反覆嘗試,耗了超過一個小時,仍不得其門而入,接獲報案後,以過來人的經驗建議改用Run As Administrator執行IE,問題迎刃而解。
後續的說明中"不小心"提到Run As Administrator是解決大部分UAC障礙的大絕招(前題你要自行承擔該程式夾帶病毒、木馬等惡意程式的風險)。果不其然,在這個案例中又聽到再熟悉不過的評價: Vista的UAC真爛,難怪大家都把它關掉。
想一想,我跟一般User的思維不同,我愛死UAC了。有過跟木馬、駭客交手的經驗,我在資安議題上呈現"十年怕井繩"的輕微被害妄想。在使用Vista之前,我甚至裝過Comando Firewall,過濾所有聯外通訊,動不動就會跳出來問你: "某某程式現在要連到某某網站囉! 你要不要大發慈悲放行一下?",一天要按個數十下確定我都不為所苦。因為我知道稍不留神,木馬、病毒程式可能透過各式管道騙過防毒軟體鑽到系統中,每日開機關機長相左右,還可能正偷偷把我瀏覽的無名正妹在網頁上輸入的信用卡號傳送到惡魔黨總部。
木馬、病毒要能攻下系統,很重要的一個步驟是將自己注入成為系統的一部分,將自己設定為開機就執行或在系統核心加掛攔截程式(例如: 鍵盤側錄、封包監看),而這些動作有一個共同特色--都需要具備系統管理者權限才能執行。而大部分的使用者,以身為電腦的擁有者自居,自然不希望管理自己的電腦還處處受限,因此平時登入身份多具有管理者權限。這樣情境下就提供了許多可趁之處,使用者只要未及時更新系統漏洞,或用平時登入的身份跑了不該跑的程式,登登登,木馬病毒馬上就跟作業系統天人合一。
UAC等同於將以上的情境再做了切割,承認使用者具備管理者身份的事實,但在要進行任何更動系統核心的不尋常舉動前,額外跳一個視窗徵求使用者允許後才真的執行。
UAC的出發點是對的,但為什麼一天到晚被User打搶,嫌棄到爆? 為什麼對我來說,卻如獲至寶,愛不釋手?
在這次的案例裡我蒐集到一針見血的註解: UAC就是工程師思維下的產物,這麼技術性的東西該包在系統內部,根本就不應該丟出來叫User做決定。
一點也沒錯,基於技術上的瓶頸,OS沒有能力自行判斷哪些動作是有害的可疑行為、哪些是正常的操作(自己也寫程式,可以理解程式要冰雪聰明若此,何其困難!),因此才戒慎恐懼地將決定權丟回給User。
這聽起來有點不負責任,但就程式設計的思維並沒有錯,在Exception Handling的摡念裡,該段程式無法處理的狀況就該丟出去給上一層(呼叫端)的程式處理,遠比假裝沒事、粉飾太平來得正確。但RD忘了大部分的User比程式還無知,對於什麼情況需要更動系統亳無所悉,於是產生了三大類使用者: 依直覺按不同意然後功能跑不出來的User(很憤怒)、每次按同意然後被問到很煩User(也很憤怒)、聽人家說關掉UAC結果中毒,然後抱怨Vista比較安全是屁話的User(還是很憤怒)。
UAC真正能嘉惠的是像我這類對OS有基本認識,可以意識到程式目前在做什麼,有能力判斷該動作是否真的需要管理者權限去更動系統的Power User。
RD認為UAC像是手槍上的保險,保障的是生命安全。生命是無價的,所以再麻煩也是必要之惡。君不見發射核彈得同時插兩把鑰匙、掏出小抄唸密碼後才能成行,相較之下,開開保險栓只是舉手之勞,不解User在窮嚷嚷什麼。更激進一點,User不該只是傻傻地把電腦當微波爐用,為何不去進修多學些資安知識? 才不會一天到晚做些蠢事招來病毒木馬,把網路世界搞得烏煙瘴氣。
從User的角度出發,絕對無法苟同上述意見。除非身受其害,一般User很難想像Admin權限可以捅出多可怕的簍子,也無法體會RD想守護最後一道防線的苦心。在User的眼中,資安是軟體廠商要做好的本份,在Windows裡做任何事都應該要像拿杯子倒開水一樣自然,動不動就問一堆無厘頭的火星問題,強迫User做決定然後風險自負,荒謬透頂。
我悲觀地覺得,除非技術及規格上有革命性的突破(例如: 所有的程式元件能有一張好人卡讓OS明辨忠奸),這個僵局是無解的,充其量只是多犠性一些安全或多減損一些方便。過去我們將安全交給防毒軟體跟User自己把關,對於管理者身份執行的任何動作來者不拒,不會對使用者操作造成任何不便,卻給了病毒木馬許多可趁之機。Vista推出UAC,算是在"方便 vs 安全"的天平上向"安全"一端傾斜。但在這個當下,User心理上還無法接受"流汗總比流血好"的苦口婆心、知識上對於惡意軟體常用的入侵伎倆亳無所悉,結果是嫌UAC太吵卻又不能在關鍵時刻做出正確判斷,落得做到流汗、嫌到流涏的悲情下場。
技術上的限制及使用者意見的分歧讓UAC形同一份不便宜的意外險,值不值得加保端賴各人的風險意識。風險 = 損失 * 機率,如果你認為機器中毒被駭重灌就好,損失有限,則每天10元繳保費都嫌浪費;如果你覺得雖然防毒軟體失效的機率不高,但被駭的最糟結果可能惹禍上身甚至身敗名裂,則每天花100元買份保險都不算貴。該不該投保險看個人,沒有標準答案,UAC亦然。