跳到主要內容區塊
安華聯網揭露臺灣App常見3大風險
發布單位: 資訊科  
隨著手機應用的普及,行動App的重要性早已不言而喻,因此App的安全性也同樣受到高度重視,然而,經歷多年的發展,臺灣還是有很多企業組織與軟體開發人員,一開始就沒有把安全納入考量。

這樣的情形,最近兩三年仍時常發生嗎?今年4月,安華聯網公布自家「行動應用App基本資安檢測基準」(MAS)的檢測經驗,或許可以得到一些答案,該公司技術長劉作仁表示,他們的資安檢測實驗室觀察到國內有3大常見的App安全問題。

對於臺灣行動App的開發,有哪些常見安全問題?安華聯網在他們檢測過的國內400支左右App中,當中包含4成是金融領域App,2成是政府單位,其他還包括行動支付、教育、醫療與運動產業,發現3類常見風險最容易發生。若對應OWASP Mobile Top 10的風險類別,分別是不安全的資料儲存(Insecure Data Storage)、不安全的傳輸行為(Insecure Communication)、用戶端程式碼品質問題(Client Code Quality)。

其中又以前兩種最嚴重,都有近50%比例有此狀況存在。不論企業自行開發或是委外,都應該要及早注意。

一、資料儲存不安全

簡單來說,就是儲存在手機的資料,沒有妥善保護,這是他們最常發現到的問題。

以社交App為例,當用戶下載安裝後,可以拍照並分享,但若這張照片放在所有App都可存取的目錄,此時,一旦有駭客打造惡意的App,將可取得這些照片。

另外,像是用戶使用醫院App掛號,該程式貼心地將姓名、身分證字號與年齡等資料,儲存在手機之內,之後每次民眾掛號時,可以不用再重新輸入資料,看似方便,之後經檢查卻發現,民眾資料被直接存放手機的目錄底下,沒有套用任何加密。

關於這樣的情形,也就是用戶端裝置未適當保護敏感性資料,劉作仁表示,其實這在OWASP或MAS標章都有規範,禁止將使用者個人資料用明文方式存放於手機。不論是存放在共享目錄,或是應用程式的目錄,都不能用未加密的方法將敏感資訊儲存在手機,包括個人資料或手機SIM卡相關資訊等。

還有那些狀況要特別留意?例如,將敏感資料(User ID)記錄於記憶體參數中,或是儲存於日誌檔案。

他解釋,有些開發人員可能需要知道程式是否寫錯,留下很多Log記錄,但完成Debug後並未刪除或關閉,因此,他們檢測時就常在日誌檔案發現這些敏感資料,當中不只有電話號碼、暱稱,甚至還有密碼與身分證字號。此外,還有客戶誤以為Base 64是加密的狀況,但實際上這只是編碼方式,只要有一點技術能力,都能夠還原。

劉作仁強調,App開發者應該要知道:敏感性資料並非不能儲存,但要知道儲存了那些資料,以及要用安全的方法儲存。

對此,他列出三個原則,包括:敏感資料勿使用不安全的加密方式儲存,包括勿以明文方式儲存,要用合格的加密演算法去儲存;敏感資料勿儲存於不安全路徑或檔案,像是日誌檔與SD卡的目錄;建立ROOT偵測機制以提升App安全性,降低敏感資料洩漏的風險。

二、資料傳輸不安全

大多數App都有網路通訊能力,需要與雲端伺服器應用程式去取得對應的資料,但在連線過程當中,很多開發人員往往會忽略相關安全。此時可能會有3個狀況,包括:未以加密方式(HTTPS)傳輸敏感性資料,未檢查憑證來源,以及使用過舊的TLS版本。

他解釋,部分開發人員不知道要採用HTTPS加密連線傳輸,僅用明文HTTP傳送資料,如此一來,經由這種方式傳輸的帳號密碼資料,都很容易被看光。

而他更要提醒的是,雖然現在大家開始知道要採用HTTPS,但還是有些地方要注意。例如,一旦App未檢查連線安全性,此時,駭客可以運用中間人攻擊,讓App以為跟伺服器連線,實際卻是跟駭客電腦連線,這將導致訊息被竄改、資料遭竊,以及被植入惡意程式等風險。

探究其原因,在於開發者疏於檢查憑證,導致App無法識別伺服器的真假,因此在實驗室檢測的過程中,還是可以看到傳輸的資料內容。

不僅如此,他觀察到有客戶對於HTTPS認知甚少,因為開發者使用了老舊且不安全的TLS 1.0,並在TLS採用了RC4演算法。

該如何改善?劉作仁表示,使用安全的加密傳輸協定(HTTPS)傳輸敏感性資料是必要的,但也要注意TLS 版本需1.1版以上,才符合MAS標章基本要求,而有的國外標準更是要求1.2版以上,甚至是1.3版,才能通過安全測試。同時,TLS採用的演算法也應採指定的AES、3DES演算法,以及2,048位元以上的RSA,或是224位元以上的ECC加密演算法。

同時,App需加入憑證綁定的安全機制。安華在這方面執行的檢查項目,包括:憑證須為開發人員所指定,以及憑證是否仍在有效期限,並且未被註銷,還有憑證包含連線的伺服器網域名稱。還有哪些要注意的地方?例如,駭客利用假的憑證,像是憑證名稱一樣,但簽發單位不同,以及檢查是否為合格ROOT CA簽發,還有發現憑證被指向其他目的時,App需有阻斷連線的能力。

三、資料輸入的內容未經完整驗證

這是用戶端程式碼安全性方面的問題,例如,在使用者操作介面上,沒有過濾使用者輸入的內容,一廂情願地認為使用者都會輸入正確的資料,是App開發者必須注意的心態。

這樣的問題不僅出現在網站開發,也包含手機應用程式。若未針對輸入的資料進行完整性驗證,就會有SQL Injection、緩衝區溢位、格式化字串、XSS攻擊,以及Local File Inclusion等風險。

為了避免這樣的情形發生,劉作仁建議,App在前端與後端都要採取相關防範機制。例如,針對應用程式內所有欄位,在前端就要做到限制輸入型別或輸入格式,像是電話欄位僅能輸入數字,以及限制字串長度,像是電話欄位僅能輸入10碼;後端也需要針對使用者輸入特殊字元過濾,或對不安全的字元進行編碼。

四、及早訂定資安需求、予以因應,勝於事後補救

基於上述App安全檢測經驗而言,我們注意到,這其實透露出一個危險的狀況,那就是:很多企業在App開發完成後,即便到了送驗的階段,卻還有很多基本安全問題沒有妥善處理,等於到了應用程式開發後期階段,又要花額外時間去修正,而這當中,又有很多是OWASP Mobile Top 10已列出的常見問題。為了解決這些弱點,可能會導致App推出時程受到影響。

看起來,國內App開發人員的安全認知,以及後續在安全方面軟體測試,或是委外開發的資安驗收,都還有很大進步空間。

企業該如何改進這些問題?對此問題,劉作仁認為,雖然現今的軟體開發過程,已有軟體測試(QA)工程師負責功能測試,但資安方面的測試,一般QA較難以切入,再加上App自動化檢測工具並不普及,很難在內部測試階段就發現這些問題。因此,他認為,還是需要仰賴開發人員的教育訓練,以及在開發前,專案經理就要明確訂立資安需求,才可以有效減少App安全風險。

文章出處:https://www.ithome.com.tw/news/145196
最後異動時間:2021-07-06 上午 10:45:13
TOP