政府齊頭式資安如走鋼索,別讓資安成為口號

shutterstock
齊頭式資安策略會讓政府預算無法有效運用,會讓資安變成一個看得到摸不到的口號。作者認為真正重要的是系統要先做內容分級。

談到政府資訊系統,一般人總覺得是一個個遙不可及的黑盒子,認為該業務單位對系統擁有很大程度的控制力及開發責任。其中,「資安」一直是公部門資訊專案中揮不去的夢魘,正是因為資訊安全「太重要」,反而導致許多「不安全」的情況。

從政府中央機關(行政院及所屬部會機關)、地方縣市政府再到基層鄉鎮市公所學校等機關,每一層所遇到的狀況和問題都不同。要對這三層機關做概括的資安論述,誰也不會服氣,可是,這正是最核心的問題所在。

筆者作為資訊軟體工程師,曾經接觸過中央資訊單位(國發會資管處、部分部會資訊處),地方資訊單位(資訊局或研考會資訊科、研考會資訊中心等),鄉鎮市公所研考資訊承辦等,前後不同階段田野訪談經驗兩年左右。希望能從不同角色跟不同單位的經驗寫出論述基礎,方便其他人更了解政府內部的資訊運作方式。

以下針對既有政府政策的誤區來分別討論。

資訊系統無絕對安全,然而我們不能不用資訊系統

身為十年經驗的資訊從業人員,我所信奉的核心規則是:「資訊系統無絕對的安全。」

就好像你家中的鎖大多數時候都能找鎖匠開鎖一樣。所謂的安全,是藉由多層「鎖」而讓一般人打不開,就算是專業的「鎖匠」,也要花上好幾天才能開鎖,由於你每天都會回家,就能在鎖被撬開之前先阻止小偷。 換言之,一個無人看管的系統,是沒有安全性可言的。這是資訊系統的基本前提。

政府資安是一個抽象的防衛概念,從基礎網路建設(政府安全網路、GSN),到防火牆層(管理 IP 存取、DDoS 防護、對外公開 IP 與 連接埠管理等),再到伺服器防護(伺服器弱點更新、網站容器container弱點更新,比方說近年的 openSSL 問題等),最後再到應用程式層(網站資訊系統、檔案服務伺服器、資料庫伺服器等等等)。(實際上還可以再細分到數十層,但本篇文章我只討論到這些層次。)

任何一層產生了問題,都有可能導致整體架構的崩解,而且往往牽一髮動全身,這是政府資安的難處。

既然資訊系統並無絕對安全,那我們可不可以不用資訊系統?不幸的是,我們如果不使用資訊系統,既有業務流程至少需要超過一百倍的時間才能完成,整個國家政府會即刻癱瘓,許多申請案件會比現在久上好幾十倍的時間。我們對政府的要求,早已讓我們沒有對資訊系統說「不」的空間。

所以,這時候要處理的問題,就是如何加鎖、如何確保這些鎖有人看守。

不對外連網,就安全了嗎?

很多人信奉「隔離網路」就可以保證安全了。然而事實上, 既有的網路機制根本讓各單位的管理能量難上加難。 比方說越來越多的「行動化」服務,稽查人員必須要出外執行業務,很難將行動網路做到完全隔離,需要相當大的成本。

況且,要完全隔離內外檔案存取,會造成實務作業有很大的困難。 例如,直接禁止存取光碟機跟 USB 等外部裝置,不讓外部檔案進入內部系統。但如果外部申請案件希望民眾用 Word 檔案申請(或上傳到網站上),承辦單位為了要存取這些媒介,其他單位的同仁還要寄光碟甚至 3.5 吋磁片來(對,你沒看錯,2017 年了還是有這種事情)。

所有業務都要做實體隔離的話,風險跟成本實在太高,而且第一線業務同仁並非資訊專家,他們往往只會陷入無窮無盡的沮喪跟鬼打牆當中,造成政策嚴重負面影響。

一旦你的單位需要與外部聯繫,即進入所謂的風險區,如果被感染,又會變成內部完全不設防的尷尬狀況。 所以,「針對對外網路防範」而認為「對內網路一定安全」的網路管理模型,本身已經是一種該被檢討的思維。

資安風險應先做內容分級再做技術分級

絕對的資訊安全不是做不到,不開機、不連網、把儲存裝置鎖在保險庫裡面,安全性也很高,但建立資訊系統也就毫無意義了。

資訊安全得在「成本」與「執行」兩者之間做取捨,資安實際上是「取捨」的藝術,而非「防堵」的藝術。

資安風險應該以內容敏感度為優先判斷,高危險性、對國人重要性高的系統,要用高規格資安管理方式 ;低危險性、對國人重要性低的系統(如各種宣導品),則應該用低規格資安管理方式。

像健保、稅務等各種敏感資料,政府就算聘用資安專人看守,都可能是必要的,但對於各種跟風而做的政令宣導 App 或網站,就算網站出現安全問題,只要不涉及個資洩漏,則可以晚一點處理。

我認為,要控制資安風險,得用內容安全分級制度。相較一般網站的安全性,敏感的金流支付,就一定要由通過安全檢驗的金流代收代付廠商或銀行來經手,才會覺得安心。

如果一般 App或網站無法處理這類敏感資料的話,則應該切到其他重要服務去「加強處理」,才能大幅減少資安的成本,讓低成本服務可以用低成本維持品質。

資安跟防洪概念一樣,在水災氾濫的時候把河流給封起來,並不會解決水災的問題,只會讓洪水因為正規路線走不過去,而蔓延到其他地方。資安亦然。一旦你封住正式傳遞訊息的管道,它就會開始用非正式管道傳遞,讓網站或系統曝露在更多危險之中。

以「應用程式層」來討論,既有的政府資訊系統資安事件,往往會從三個角度出發:

  1. 民眾回報資安問題。
  2. 廠商自己發現資安疑慮。
  3. 資安(或資訊)單位集中檢測。

由民眾主動回報資安問題的話,除了民眾不夠理解現行的通報機制、政府也沒有宣傳或鼓勵民眾通報之外,大多數意見根本進不了主責單位,很容易被內部「河蟹」跟忽略,不然就是發現資安問題並修正之後,但也同時對民眾提告、懲處。

值得一提的是,之前有學生發現縣市政府教育局學生系統有個資外洩問題,教育局接獲通報之後迅速修正,並且對通報人非常友善,甚至覺得值得表揚,或許可說是國家資安概念開始在轉變,能從「殺雞儆猴」變成「協同作業」的好開始。

前兩者,不管是加強通報管理或是廠商自己發現資安疑慮,都相對容易處理。資安(或資訊)單位集中檢測比較複雜,也是這篇最主要討論的重點。

集中檢測的美麗與哀愁

什麼是集中檢測呢?由於稽核單位面對大量網站無法一一取得原始碼來稽核,所以乾脆使用自動化工具,自動從外部替每個網站檢測幾分鐘到三十分鐘。

同時檢測成千上百個網站,產生出大量報表,再根據結果找出有「疑慮」之處,列出技術上的高、中、低風險。(註:現行技術沒有不會誤判的檢測機制,所以通通都是「疑慮」,而是否安全,還是要個案審視了解。)

我要特別強調,這裡的需求主要是從「稽核單位」出發,如此一來,這樣的事件往往會被「列管」,而且目標是「解決」,如果不解決的話,可能會變成單位 KPI 被大幅扣分,進而影響媒體評價或未來政府計畫的申請。業務單位哪敢不從,深怕一個不小心就變成「不重視資安」的機關。

美麗之處是可以相對在短時間內處理大量系統,篩檢出一些可能很嚴重的問題, 但哀愁之處是拿隨便一個自動化檢測的結果來定義系統安全或不安全。這是完完全全錯誤的概念!

為什麼不能完全依賴自動化檢測來判定系統的安全性呢?
其一,網站資訊系統充斥複雜的「帳號權限」設定,沒有對應的權限帳號就無法進入測試處理,自動化系統多半不會進入「有權限」的頁面檢測,所以有一大部分系統完全沒被測試到。

其二,許多危險行為是發生在輸入資料欄位時,伺服器端沒有檢查,自動化檢測少有能夠針對不同測試給予變形的測量方法。(另一方面是這樣也容易不小心把網站打壞,測試反而變成攻擊。)

其三,機器認定「特徵」,有時候其實不是真的出了問題,只是剛好有「類似」的特徵,系統用「寧可誤殺也不可放過」的心情把它認定為風險。

有些自動化檢測軟體或可解決部分前述問題(但無法完全解決)。原開發廠商也可能可以搭配單元測試來做白箱測試,但不幸的是,在國內這種資安機制是「有報告就算數」的市場,這個做法稀有得近乎絕種。

真正負責任的自動化檢測,應該要依照個案來認定,說明自動化檢測工具的「極限」與檢測的「方式」,以此來作為安全的說明。

此外,所有的稽核,都應該說明使用的測試方法、設定測試的情境,針對不同系統建立不同的測試條件,絕非這種亂槍打鳥式的資安測試就能搞定所有問題,稽核單位應該要有「自知之明」。

風險需要被評估,未必需要被解決

各政府單位包括資訊審查委員,往往把自動化檢測過度「神話」了!事實上是大家對自動化檢測不夠了解。 我曾擔任資訊委員審查資訊系統成果,親耳聽到某大學資管系教授說出以下意見:「你們這個系統掃描報告裡面有兩個低風險,低風險也要修啊,不然有一天他就會惡化成中風險,久了會變成高風險喔!」

這種「弱點疾病化」,甚至風險還會惡化的論述,看起來很合理,但實際上根本狗屁不通。 它有可能只是兩個 js 檔的語法在語法上被視為可能需要檢討而已,我在該系統網頁上看過程式碼核心(js ),實際上是一個知名商用套件原始碼(ExtJS)的部分內容,該段程式碼是為了跟過去的瀏覽器向下相容而寫的,我認為檢測出的「低風險」根本是誤判。

在這種情形下,政府是否需要要求廠商修正至完全無風險?其實應該依據系統的個案認定。真正的核心是,政府資訊稽核人員要了解檢測工具的極限,然後再請專業者進來協助,而不是依據一紙自動化檢測報告,就拿雞毛當令箭。

不過就是低風險,有這麼難解決嗎?

事實上,政府資訊預算真的不如大家所想的無窮無盡,而且因為時代膨脹的安全需求,叫廠商不斷修正風險會需要業務維護成本,單一個案子可能就是幾十萬起跳。然而,我們是不是願意為了一個根本不用修正的低風險,花這樣的預算,浪費一堆時間簽約、招標、採購呢?這是一大問題。

另外的問題是,單位的「開會」能量有限,我們是不是能把這些時間拿去做「更重要」的資訊核心建設?

我認為,多數人在評估政府資訊安全問題時,似乎都假設政府資源無窮無限,實際上政府資訊預算在平均到每一個網站時,就如同沙漠一樣荒蕪,所以資訊預算的系統分級制非常重要!核心的系統,我們要集中資源保護,邊緣的系統,我們等待他長大或消失,再另做不同打算。

在既有的政府資訊系統以「委外」(或稱外包)為主體的架構下,修改任何一行程式碼成本都很高昂,是否繼續維持政府資訊系統委外的機制?我認為也是一個非常值得人民與眾立委們一起來省思的問題。在既有的政府結構下,若不改善結構性問題,就仍然必須在既有架構下去面對跟處理問題。

莫讓政府資安束諸高閣

在齊頭式的「安全」要求底下,還有另一個問題是,即使真的找到了風險問題,承辦單位有沒有能力請廠商協助修好(廠商能力未必足夠)?如果要協助讓系統徹底的根絕問題,就需要更多說明、協調、甚至資源協助。

可是,在既有的架構底下,一紙安全命令來,機關就需要在為數不多的資訊預算中編列預算支應。多數機關會選擇更簡單的作法:乾脆關閉或結束這個系統。這是不是我們樂見的結果?我深感懷疑,認為這絕對是政府大開數位化(或稱電子化政府)的倒車。

而且,機關被這些條件訓練出過度倚賴自動化檢測的反射動作,許多政府網站仍然有權限控管不周的問題(當然都有回報),就算已經經過自動化檢測也都如此。實務上,反而因為有自動化檢測「掛保證」,讓政府的資安離「真正的安全」越來越遠。

要怎麼徹底解決這個問題呢? 唯有針對內容敏感度進行系統分級,系統分析設計時優先處理敏感的資料安全機制,定期進行重要系統的「滲透測試」(聘用專責資訊安全人員,針對最新發現的弱點進行人工攻擊測試)與「原碼分析」(聘用廠商以外的第三方安全人員,針對原始碼可能的安全問題進行分析)。

滲透測試與原碼分析都需要資訊安全專家,成本極度高昂,所以需要把資源集中在敏感系統上,才有辦法定期進行。既有的稽核制度,不敢說完全沒有改善資安,但是它並無助於系統體制的正循環,反而造成許多負面消耗,甚至國家空轉。

這種齊頭式極度昂貴的資安,只會讓所有資訊單位都走鋼索賭運氣,反而讓資安變成一個看得到摸不到的口號,唯有正面面對問題,設定國家資源所做的到的資訊安全,才是正途。

資訊安全,實際上都是資源取捨分配、涵蓋與否的藝術,但願我們國家的資安政策可以早日走回正軌,莫再將其束諸高閣。

《數位時代》長期徵稿,針對時事科技議題,需要您的獨特觀點,歡迎各類專業人士來稿一起交流。投稿請寄edit@bnext.com.tw,文長至少800字,請附上個人100字內簡介,文章若採用將經編輯潤飾,如需改標會與您討論。

(觀點文章呈現多元意見,不代表《數位時代》的立場。)

白箱測試
white-box testing
在白箱測試時,以程式語言的角度來設計測試案例。測試者輸入資料驗證資料流在程式中的流動路徑,並確定適當的輸出,類似測試電路中的節點。 (來源: 維基百科 )
王景弘

長期致力開放原始碼技術推廣以及工程師社團聚會運作,並以普及技術、增加應用為主要核心方針。在 COSCUP、WebConf、JSDC 等各大技術論壇演講,分享經驗。也試圖透過技術社群打破傳統「人才」難尋、導師難求的困境,透過社群讓產業與工程師互相認識彼此與提昇。

追蹤我們