防止逆向工程
原始碼是否可以反編譯? 駭客透過程式碼的解讀可以利用漏洞展開攻擊,一般開發者會使用程式碼混淆技術,但這並不能保證原始碼的安全,而太過混淆也會造成開發人員無法偵錯。逆向工程若應用在Apk修改上將會可能造成APP被重新打包,造成千萬人的資安危險。
偵錯日誌函數呼叫風險
開發者在除錯時常使用偵錯日誌函數,藉由輸出偵錯訊息來幫助程式設計師排除Bug,但偵錯日誌函數的呼叫應保證輸出的資訊是無資安風險的,涉及敏感資訊的輸出在正式或發佈版本中應該被關閉。
數位資料保密
使用者在使用APP時常常會輸入個資或其他敏感資料,這些資料通常會儲存在手機端,若沒有對儲存資料做加密或線上認證,可能會被惡意程式所竊取,造成機敏資料外洩。除了加密之外也可以進行綁定裝置,使儲存在手機端的資料僅限制在特定裝置上使用,無法被複製到其他裝置上使用。
憑證綁定
APP在對伺服器使用HTTPS加密連線時,應該對伺服器憑證進行檢查,並且使用STRICT_HOSTNAME_VERIFIER嚴格校驗主機名稱,確保連線的伺服器是正確合法的目標伺服器,防止APP連線到駭客假冒的伺服器,進而導致連線時送出的帳號密碼等機敏資料遭到監聽。
防止動態程式碼植入
利用程式碼動態植入,攻擊者可以將一段惡意的程式碼寫入到目標程式的記憶體中,進而攔截(Hook)重要函數,竄改程式執行邏輯、竊取敏感資訊等。
常見的動態植入可以用來竊取使用者的帳號密碼,竄改行動支付的交易對象及金額,監聽網路傳輸資料等等。這時可使用身份認證來避免被他人盜用及竄改,利用雙重認證來加強自己的帳戶的安全防護等級。
防止Apk修改/重新打包
Apk修改/重新打包為Android上常見的攻擊手法,攻擊者將正版APP下載後進行逆向工程,將原始碼還原,然後從中找出可以修改或加入惡意程式碼的地方,修改後重新封裝成新的APP發佈。
(2013年中國大陸駭客集團「延邊幫」即利用偽冒行動網銀的惡意APP,偷走南韓網銀用戶數百萬美元存款。)
面對行動支付的時代,對企業來說,在提供便利交易環境的同時,更應該準備好面對凶猛的資安挑戰,並建立完整的風險管理機制,確保提供使用者足夠的資安防護,避免發生詐騙交易、個資外洩等問題,導致企業形象受損。