隨著手機應用的普及,行動App的重要性早已不言而喻,因此App的安全性也同樣受到高度重視,然而,經歷多年的發展,臺灣還是有很多企業組織與軟體開發人員,一開始就沒有把安全納入考量。
這樣的情形,最近兩三年仍時常發生嗎?今年4月,安華聯網公布自家「行動應用App基本資安檢測基準」(MAS)的檢測經驗,或許可以得到一些答案,該公司技術長劉作仁表示,他們的資安檢測實驗室觀察到國內有3大常見的App安全問題。
從App資安檢測經驗,看國內App開發3大常見問題
對於臺灣行動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需有阻斷連線的能力。
關於資料傳輸不安全的情況,劉作仁表示,除了使用安全的加密傳輸協定(HTTPS)傳輸敏感性資料,也要注意App連線時應檢查是否連線至正確的伺服器,否則也很容易發生中間人攻擊,使得攻擊者可取得用戶登入帳號與密碼。
資料輸入的內容未經完整驗證
這是用戶端程式碼安全性方面的問題,例如,在使用者操作介面上,沒有過濾使用者輸入的內容,一廂情願地認為使用者都會輸入正確的資料,是App開發者必須注意的心態。
這樣的問題不僅出現在網站開發,也包含手機應用程式。若未針對輸入的資料進行完整性驗證,就會有SQL Injection、緩衝區溢位、格式化字串、XSS攻擊,以及Local File Inclusion等風險。
為了避免這樣的情形發生,劉作仁建議,App在前端與後端都要採取相關防範機制。例如,針對應用程式內所有欄位,在前端就要做到限制輸入型別或輸入格式,像是電話欄位僅能輸入數字,以及限制字串長度,像是電話欄位僅能輸入10碼;後端也需要針對使用者輸入特殊字元過濾,或對不安全的字元進行編碼。
對於資料輸入的內容未經完整驗證,安華聯網提醒需實作驗證使用者輸入字串資料類型與長度的正確性,並免惡意輸入導致App損毀、緩衝區溢位,以及各式注入攻擊的發生,並提供前端與後端改進的建議。
及早訂定資安需求、予以因應,勝於事後補救
基於上述App安全檢測經驗而言,我們注意到,這其實透露出一個危險的狀況,那就是:很多企業在App開發完成後,即便到了送驗的階段,卻還有很多基本安全問題沒有妥善處理,等於到了應用程式開發後期階段,又要花額外時間去修正,而這當中,又有很多是OWASP Mobile Top 10已列出的常見問題。為了解決這些弱點,可能會導致App推出時程受到影響。
看起來,國內App開發人員的安全認知,以及後續在安全方面軟體測試,或是委外開發的資安驗收,都還有很大進步空間。
企業該如何改進這些問題?對此問題,劉作仁認為,雖然現今的軟體開發過程,已有軟體測試(QA)工程師負責功能測試,但資安方面的測試,一般QA較難以切入,再加上App自動化檢測工具並不普及,很難在內部測試階段就發現這些問題。因此,他認為,還是需要仰賴開發人員的教育訓練,以及在開發前,專案經理就要明確訂立資安需求,才可以有效減少App安全風險。
MSTG相關檢測規範將成新重點
除了揭露近年國內App開發在MAS標章驗證現況,劉作仁在說明上述3類App常見風險時,在分享實際案例,以及說明修補建議之餘,同時他還提供了相關參考規範。
舉例來說,以「不安全的用戶端資料儲存」而言,在經濟部工業局行動資安檢測標準(MAS)中,有一個敏感性資料保護類別,包含行動應用程式敏感性資料傳輸檢測,針對資料儲存限制、保護與控管的三個安全要求;而在TAICS智慧機系統內建軟體資安檢測標準中,主要針對手機出廠預載的App做檢測,也有4個相關安全要求,例如,內建軟體應將帳號、通行碼或金鑰儲存於作業系統保護區內,或以加密方式儲存等,就是其一。
而在國內的App資安檢測標準之外,劉作仁也舉出兩項國際標準,像是近年新興的ioXt聯盟,今年發布了Mobile App Profile,針對手機應用程式也有這方面的要求,另一個則是越來越多人討論的OWASP Mobile Security Testing Guide(MSTG),更受矚目。
此指引提供檢核表Mobile App Security Checklist,主要是基於MSTG與OWASP行動應用安全驗證標準(MASVS)而成,劉作仁並指出,目前MASVS包含了最豐富的測試項目。值得關注的是,現在臺灣已有金融單位開始重視,將MSTG相關列為App檢測的必要條件之一。
針對這次3大常見風險,劉作仁同時也提供了相關規範作為參考,舉例來說,以「不安全的傳輸行為」(Insecure Communication)的問題類型來看,包括國內的經濟部工業局行動資安檢測標準(MAS)、TAICS智慧機系統內建軟體資安檢測標準,以及國際上的OWASP Mobile Security Testing Guide與ioXt Mobile,都有對應的檢測項目。(圖片來源:安華聯網)
關於經濟部工業局公告的「行動應用App基本資安檢測基準」,這是在2015年推出。希望國內App的開發,至少做到基本的資安防護水準。如今,在國內的行動應用資安(MAS)聯盟中,App檢測認可實驗室已有13間。
目前,這項標準非強制性要求,主要還是透過相關產業主管機關的力量,自行決定是否要求,不過,近年國內金融機關已受到主管機關要求,而政府也在推動所有單位都需要取得MAS標章,因此,這兩類產業對於App檢測較為積極。
熱門新聞
2024-09-29
2024-10-01
2024-10-02
2024-10-03
2024-10-01
2024-10-01
2024-10-01