前幾天接獲一件案例,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亦然。


Comments

# by Lucas

User friendly operation and system robustness 的平衡並不是永遠作不到的,看Apple有多少死忠者就知道了,就技術水平而言,Mac OS不會比M$ 好多少,說Mac 簡易我也不覺得,至少ipod 我也是花一會兒才會用,但是Apple 就是有辦法設計一套使用流程,讓使用者甘心遵行,一旦上手之後就可以隨心所欲不踰距,這是M$一直沒有去做的,M$只是不斷提供新選擇,把事情弄得更複雜。有工程師思維的人畢竟是少數,UAC就只有M$的工程師們孤芳自賞了。

# by someonepoor

哦,一般使用者對security根本是不重視的..相信我..XD 他們只要Game能打電影能看報告交得出來就好, so... 資料掉了? 有些痛過可能還覺得麻煩咧.. 使用方便和彈性永遠是相抵觸的, 說能夠平衡的, 目前看得到的通常 是整個使用流程被控制在一個小的scope內,通用系統的複雜度 應該是很難這樣做到,不如把介面弄漂亮一點讓user願意學習比較實際..XD

# by laneser

就 IE7 run as administrator 這個例子來講, UAC 根本沒問, 直接攔掉... 我不認為這是好的, 應該看成是 bug 吧 (IE or OS bug)... 我本來也很愛用 UAC, 直到發現 UAC 還是不能擋下所有一切有嫌疑的入侵, 我就放棄 UAC , 直接關掉, 因為我花了那麼多時間陪你玩, 結果還是有中毒的機率 (當然中毒的機率大減), 最後我還是選擇安裝防毒軟體, 關掉 UAC ... 工程師的天職就是幫助使用者簡單使用, 而不是選擇自己開發簡單, 把難搞的事情丟給使用者, Security vs User friendly 我都比較站到 User 這邊, 但是還是可以開放權限讓 user 選擇 security 那邊, 這樣才是對的不是嗎? 我認為網路搞得烏煙瘴氣, 雖然笨 user 有責任, 但是最大的責任是微軟! 為什麼沒學過資安的 user 可以使用微軟系統呢? 應該要通過微軟資安認證才可以買 windows 吧?! (哈哈哈)

# by Jeffrey

to Lucas, Apple在行銷方面真的是沒話說,讓User能服服貼貼地習慣了它的操作設計,甘心相挺到底,確有其獨到之處(也許是真的有敲到User心中的"甜蜜點"吧)。我覺得Visual Studio也達成了類似的成就,但OS上似乎就沒這麼威。另一方面,Apple苦心營造出的"Apple/Mac/iPod==有型、酷、炫、潮、流行",MS+PC望塵莫及 to someonepoor, 很多User從中毒、當機到重灌完成的過程,從頭到尾都在狀況外,"整個使用流程被控制在一個小的scope內"是個好主意,也許電腦真的該分級,要發明像微波爐一樣的電腦給想把電腦當微波爐用的人使用。 to laneser, IE要Run as Admin才能解決ActiveX安裝的問題,我認為該ActiveX元件還沒為UAC限制做調整也是原因。 我猜RD應該也曾天人交戰過吧: "這東西我能力不夠沒法自動處理,要粉飾太平,不要讓User心煩眼不見為淨? 還是讓User自己決定,風險自負?",好像除了提升技術之外,這兩個選擇都很爛。 "最大的責任是微軟"我比較想修改成"最大的責任是市佔最高的OS廠商",不管那一家來扮演這個角色,應該都像當執政黨一樣,責無旁貸的要面對這個挑戰。

# by Ark

老大~你這個既得利益者怎會說出這樣的話呢? 莫非嫌賺太多了會不好意思懂得害羞? ....程式的東西~當然是有問題的才能衍生出利益阿 天底下若無電腦病毒~那那些靠掃毒軟體吃飯的去哪搶錢阿? 天底下都是善良的人~那我那的稅養國家軍隊~養警察~要對付誰? 我們要懷抱感恩的心~多虧微軟的bug一堆~看不懂火星文的一堆~不然幹這行景氣差也是會餓死人的 啥User friendly operation and system robustness 的平衡~根本只是表面上行銷的講法~老梗還是有存在的必要啦

# by R.

我認同UAC的制度設計. 據統計, 去年2008全年, 每4秒鐘就誕生一支新的病毒或木馬, 防毒軟體也只能苦苦的補洞, 更何況不懂系統的user也不會隨時更新防毒軟體資料檔. 有些user註定就是要中毒的, 就像感冒病毒一樣, 期望全世界再也沒有人生病是不可能的事情. 我覺得Jeffrey講的對, 不必針對微軟, 他只是樹大招風, 任誰擁市占率第一都會差不多. UAC有改良的空間, 軟體製造商也有義務改善(甚麼鳥蛋程式非要用administrator的權限才能執行!), user也有自我教育的責任. 人間本是險惡, 何苦再OS上尋求烏托邦?

# by someonepoor

user會自我教育的話我們這種做安全的就沒錢賺了啊..:p 恐嚇取財不是叫假的啊....

# by karopi

我完全贊成UAC的這個動作 但是......他也太簡略了吧 我的意思是,他只問你要或不要 而無法提供更詳盡的資料 比如說:是哪支程式準備要對甚麼做甚麼動作? 這樣也許判斷起來會容易些 而不是只是很單純的問你要或不要 更慘的是,有時根本還不會跳出UAC的控制介面 就直接擋掉,出現程式執行錯誤的訊息 更是讓人丈二摸不著頭腦 除錯除到昏倒 為了讓這些程式能夠順利執行 只能提心吊膽的關掉UAC了 UAC,我看也是微軟想出來的把資安責任推回user的另一個作法吧了 "哈ㄏ,中毒了吧!是你自己關掉UAC的唷~" 關於UAC,我個人覺得可以設置一個清單 第一次擋時,可以讓user選擇下次如果同隻程式再出現,要不要擋 這樣也許可以減輕很多困擾

# by 杜月影

我認為UAC的設計本意是不錯,但是UAC真的有問題! 我使用Opera的時候,他每次均彈出警告! 我本來很欣賞UAC,認為他有助防止木馬入侵,但他太敏感了!

# by

我覺得好人卡是必要的,就像現在的Win7有推出一個軟體相容性網站,把所有和Win7相容的軟體都列出來,讓使用者不用再去煩惱哪個軟體會有相容性的問題,只要到那邊查詢就好了! http://www.microsoft.com/taiwan/windows/compatibility/windows-7/default.mspx

Post a comment