圖片來源: 

iThome

日前,前宏碁資安工程師何宜霖以國外行動裝置常見10大弱點檢測熱門的政府App,發現多個熱門App,包括高速公路1968、臺北好行App、警政服務App,以及行動水管家App都有資安弱點。高速公路局、交通局和警政署均坦承程式設計不良,並緊急修正,但澄清未蒐集個資故不會造成外洩。

而被何宜霖舉證爆料,內有帳密資料除錯Log易遭竊外洩的自來水公司「行動水管家App」,自來水公司並未正面證實有此問題,僅回覆記者查證,表示已立即完成程式修正作業,不願透露更多細節。

高速公路局的「高速公路1968」App超過60萬人下載,是影響範圍最大的App,高速公路局表示,已經了解App資安弱點一事,並且向該App委外開發商詢問後得知,App未關閉的Debug Log僅供內部記錄程式錯誤訊息,而沒有記錄使用者個資,且此App並未設有使用者帳號密碼,因此不會有外洩個資或帳號密碼等疑慮。

不過,高速公路局仍然要求廠商關閉Debug Log,且App已經重新上架提供使用者更新,另外,高速公路局也表示,將定期進行伺服器端的弱點掃描以提升系統資訊安全。

另一款熱門App高達19萬人下載的「臺北好行」經檢測也發現有資安弱點,臺北市交通局也表示,這支App沒有蒐集民眾個資,所以不會發生洩露使用者帳號與密碼的疑慮。

交通局進一步解釋,「臺北好行」App所使用手持裝置(手機或平板電腦)與交通局主機資料傳輸介面,都是由交通局開發,資料傳輸內容均為即時交通資訊資料,如公車預估到站時間、公車所在位置、YouBike可借車輛數等,並未包含任何帳號與密碼等個人資料,資料傳輸介面僅供內部伺服器使用,所以不會傳輸資訊至他方。

同樣問題也發生在警政服務App上,警政署資安中心坦承,「警政服務」App部分功能的Debug Log的確沒有關閉,不過,因為民眾不需要帳號和密碼登入此App,就可以使用App上的功能與資料,所以Log並沒有儲存個人資料。

警政署資安中心表示,目前已修復警政服務App的安全性問題,也已關閉Debug Log,並於8月23日將新版App上架到Google Play上,而蘋果App Store目前還在審核該App的更新版本,預計近期可以通過審核。

在所有政府App中,何宜霖提出最多出包證據的是自來水公司的行動水管家App,包括了帳號與密碼採明文儲存,傳輸層保護不足,App採Get方式將資料傳輸到後端伺服器,直接採將帳號密碼透過URL網址傳遞參數來傳輸,還將使用者的帳號與密碼寫入未移除的Debug Log訊息中。自來水公司回覆記者查證時僅表示:「關於此次弱點掃描問題,已即刻完成程式修正作業。」而沒有針對這些質疑提供更進一步的說明。

以OWASP公布的10大弱點風險做為檢測準則

何宜霖以Web軟體安全計畫(Open Web Application Security Project,OWASP)中Top 10 Mobile 2014年最新RC1版本,也就是OWASP所公布的關於行動裝置的10大弱點風險做為檢測準則,搭配免費的檢測工具,如Snoop-it、Gidb、Introspy來分析多款政府App,如高速公路1968、臺北好行、警政服務和行動水管家等政府類App的安全性。

何宜霖表示,許多App出現機敏資料洩漏等問題,主要是因為開發商將App上架時,需要進行檢測機制,但是臺灣政府尚未公布完整的檢測機制。他說,目前App產生最嚴重的問題主要分為3類,第一個是App將使用者的帳號與密碼採用明碼儲存;再來是權限控管,也就是前端網頁有檢測使用者帳號密碼的機制,但是在App的伺服器或虛擬機器端,卻沒有檢測機制;第三個是,目前的開發者為了開發方便,不會關閉Debug Log,有些開發者直接在Debug Log中寫入使用者的帳號與密碼,若駭客取得該Log後,就可以輕易取得使用者的帳號與密碼。

另外,何宜霖檢測了高速公路局的「高速公路1968」App、警政署「警政服務」App等政府類App後,發現這兩個App沒有關閉Debug Log,恐怕會有外洩使用者資料的疑慮。

而他在檢測「臺北好行」App後,也發現了多個資安弱點,不僅在封裝檔案(Binary)中寫入大量API資訊,且使用者個資會自動上傳到政府的備援雲端服務中,而非透過HTTPS傳輸,因此,他推測,使用者個資很容易被駭客擷取。

甚至,行動水管家還將使用者的帳號與密碼寫入Debug Log訊息中。何宜霖表示,開發者為了開發方便而沒有關閉Debug Log,一旦駭客取得此App的Log,可以很輕易地取得使用者的帳號與密碼。

App的檢測方法分為動態與靜態

何宜霖也表示,App檢測的方法論分為靜態和動態,靜態檢測首先要檢查Binary,存取Binary現有的資訊,取得IPA壓縮檔案,以及有可能儲存檔案的地方。或者是用程式碼審查(Code Review)的方式,與黑箱檢測不太一樣,特點是可以找出黑箱檢測找不到的地方,但是誤判率非常高,這種方法還是需要具有開發經驗的顧問來判定是否真的會在使用端產生風險。

而靜態檢測也檢測儲存在App內的資料,如iOS在沙盒(SandBox)裡執行儲存在App的資料,且這些資料與外界隔離,蘋果只會提供一些API讓使用者存取相機、GPS等資料,所以使用者的使用、讀取、儲存等都是在App內的資料夾Document執行,而Document中保存App的動態資料,通常是遊戲的檔案、參數等。

還有一個Library資料夾,Library是保存一些App設定檔,其中最常見的就是帳號密碼使用NSUserDefaults的寫法,會儲存在Preference資料夾中,很多App的帳號密碼幾乎都明文儲存於此,所以Preference會檢查帳號密碼是否有問題。

另外,Cache則會保留一些網路傳輸的暫存資料,所以如果保護層沒有做任何加密的機制,在Cache中可以看得到。而Cache底下有背景影像擷取功能(Background Screenshot),在iOS 7有多工作業(Multi-tasking)的功能,iOS系統會自動截取程式影像,比如用戶使用金融單位的App瀏覽自己的帳號資訊,關閉程式後,iOS 7會自動截圖,如果駭客看到這些資訊就會得知用戶的瀏覽資訊,如帳戶、金額等資料。

而靜態檢測工具如iFile、iTools、iFunbox等,這些工具類似Windows的檔案總管,還有iOS儲存的格式幾乎都得依靠Hex Viewer、Plist Viewer、SQLite Vierwer等管理工具才能讀取,另外還有Clutch和IDA等逆向的檢查方式。

此外,動態測試則是以不取得原始碼的狀況下,透過使用者各種行為,例如點擊按鈕(Button)、照相等,直接執行App找出安全上的問題。文⊙戴廷芳、胡瑋佳、黃彥棻

前宏碁資安工程師何宜霖在臺灣駭客年會展示他檢測多項政府服務App時發現的資安弱點,例如行動水管家的除錯訊息沒有關閉,內有使用者帳號密碼,容易遭竊而外洩。不過,自來水公司表示,已立即完成程式修正作業。

 

 2014年OWASP行動裝置常見10大弱點 

開放Web軟體安全計畫(Open Web Application Security Project,簡稱OWASP)每年都會公布行動裝置常見的10大弱點(Mobile Top 10 Risks),提供開發者和資安人員開發和維護行動應用程式資源。此10大弱點依照風險程度排名M1~M10,數字越小表示風險越高。

M1:伺服器端安全控制脆弱(Weak Server Side Controls)

M2:不安全的資料儲存於用戶端(Insecure Data Storage)

M3:傳輸層保護不足(Insufficient Transport Layer Protection)

M4:非故意或意外造成的資料外洩(Unintended Data Leakage)

M5:身分鑑別與授權機制不嚴謹(Poor Authorization and Authentication)

M6:加密方法不嚴謹或失效(Broken Cryptography)

M7:客戶端注入(Client Side Injection)

M8:對於不受信任輸入來源的檢測處置(Security Decisions Via Untrusted Inputs)

M9:網路傳輸的連線和身分的識別不嚴謹(Improper Session Handling)

M10:封裝檔案保護不足(Lack of Binary Protections)

資料來源:OWASP,iThome整理,2014年09月

熱門新聞

Advertisement