狠狠撸
Submit Search
Mobile 開發常見資安議題
?
17 likes
?
3,524 views
JunAn Lai
Follow
主要介绍惭辞产颈濒别开发时常见资讯安全议题
Read less
Read more
1 of 40
Download now
More Related Content
Mobile 開發常見資安議題
1.
Mobile 開發 常?見見資訊安全介紹 賴俊安(Joey Lai)
2.
. . . .
. . () 2 2
3.
第三?方Pokemon暗藏?木?馬 發現有惡惡意軟體開發者將遠端存取?木?馬 (Android.Sandorat)偽裝成Pokémon Go應?用 程式,散佈在多個下載網站和遊戲論壇供玩家下載。?一旦玩家安裝了了有?木?馬病毒的 Pokémon
骋辞之后,攻击者就获得使?用者?手机的完全存取权限甚?至是信?用卡资料。
4.
官?方APP 資安風險 reference http://news.ltn.com.tw/news/politics/paper/1100473
5.
Gogoro APP 遭破解 reference http://www.setn.com/News.aspx?NewsID=166617 http://www.techbang.com/posts/44967-gogoro-three-funding-risk-inside-be-careful-all-internet- products
6.
OWASP ? 開放網路路軟體安全計畫,簡稱OWASP(Open Web Application
Security Project) ? 開放社群、非營利利性組織,全球?目前有82分會,主要?目標 是研議協助解決網路路軟體安全之標準、?工具與技術?文件, 長期致?力力於協助政府或企業瞭解並改善應?用程式的安全性 ? 美國聯聯邦貿易易委員會(FTC)強烈建議所有企業務必遵循 OWASP所發佈的?十?大網路路弱點防護守則,美國國防部亦 將此守則列列為最佳實務,連國際信?用卡資料安技術(PCI) 標準更更將其列列為必要元件
7.
OWASP Mobile Top
10 ? M1不當使?用?行行動作業平台(M1 - Improper Platform Usage) ? M2不安全資料儲存(M2 - Insecure Data Storage) ? M3不安全通訊(M3 - Insecure Communication) ? M4不安全?身分認證(M4 - Insecure Authentication) ? M5不?足夠的加密(M5 - Insuf?cient Cryptography)
8.
OWASP Mobile Top
10 ? M6不安全授權(M6 - Insecure Authorization) ? M7?用?戶端程式碼品質(M7 - Client Code Quality ) ? M8程式碼竄改(M8 -Code Tampering) ? M9逆向?工程(M9 - Reverse Engineering) ? M10多餘的功能(M10 - Extraneous Functionality)
9.
M1不當使?用?行行動作業平台(M1 - Improper
Platform Usage) ? 誤?用平台功能或平台安全控制使?用失敗(如 Android intents, permissions, Touch ID或 Keychain 誤?用)
10.
M1不當使?用?行行動作業平台(M1 - Improper
Platform Usage) ? iOS ? iOS7以上螢幕在背景時快取縮圖 ? 被存在(App Folder) /Library/Caches/ Snapshots/com.bundle.id.of.your.app/ ? 使?用applicationWillResignActive來來蓋?一張圖或是清除機敏資訊 ? applicationDidBecomeActive時還原 ? Android ? 在登入畫?面避免被截圖 ? getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
11.
M1不當使?用?行行動作業平台(M1 - Improper
Platform Usage) ? iOS ? Networking Cache Policies ? HTTP或HTTPS的 request的URLCache ? (App Folder)/Library/Caches/com.bundle.id.of.your.app/Cache.db ? 清除Cache ? [[NSURLCache sharedURLCache] removeAllCachedResponses]; ? [[NSURLCache sharedURLCache] setDiskCapacity:0]; ? [[NSURLCache sharedURLCache] setMemoryCapacity:0];
12.
M1不當使?用?行行動作業平台(M1 - Improper
Platform Usage) ? Android ? 在正式環境的App應將android:debuggable=“false” ? allowBackup 設為false ? Intents 限制使?用 ? 如service使?用android:exported=“false” ? 應只取?用需要之permission
13.
M2不安全資料儲存(M2 - Insecure
Data Storage) ? ?用?戶端裝置未適當保護機敏資料,例例如:機敏資 料(帳號、密碼等)未加密或誤認資料”編碼”即已 加密,因?而可能導致機敏資料外洩
14.
M2不安全資料儲存(M2 - Insecure
Data Storage) ? iOS ? NSUserDefaults儲存機敏資料在JB?手機可輕易易存取 ? 鑰匙串串(Keychain)功能使?用iOS 7以上的版本時,若若惡惡意第三?方有機會存取到有 加密的iTunes備份,Keychain就有可能被破解 ? 因為當iTunes備份被啟?用時,iOS會重新對Keychain進?行行加密,所以這時如果 惡惡意第三?方可以知道備份的加密密碼,那麼Keychain就有可能部分被解密。? ? 此外,Keychain在有進?行行越獄( jailbreak)的設備上,其存取控管也可能會失 效。在有越獄的?手機上,任何的應?用程式都可能存取到別隻程式的Keychain內 容。?而對於那些本?身就含有Bootrom漏洞洞(Bootrom exploit)的舊設備(例例如 iPhone4),攻擊者可以藉由實體存取?而破解Keychain。 (Reference ?行行動應?用資安聯聯盟)
15.
M2不安全資料儲存(M2 - Insecure
Data Storage) ? ? ? 當有使?用Keychain儲存資料時,開發?人員應使?用最嚴格的防護類別(可參參考 kSecAttrAccessible屬性),?而且使?用該種類別(class)完全不會影響到App本?身的 運作流暢度。例例如,若若你的應?用程式並不是設計於背景 (background)執?行行的,可 使?用kSecAttrAccessibleWhenUnlocked或 kSecAttrAccessibleWhenUnlockedThisDeviceOnly? ? 若若要避免因iTunes備份讓Keychain曝光,可以使?用「ThisDeviceOnly」保護類別? ? ?對於?高度敏感的資料,可考慮使?用Keychain所提供的另?一種更更安全的保護機 制,即應?用程式層的加密機制。 例例如在進入應?用程式時,使?用者會輸入通?行行密碼 (passphrase)以進?行行認證,並在資料儲存到Keychain前,?用此通?行行密碼對資料進 ?行行加密 (Reference ?行行動應?用資安聯聯盟)
16.
M2不安全資料儲存(M2 - Insecure
Data Storage) ? Android ? SharedPreference 儲存機敏資料在root?手機可 輕易易存取修改 ? 使?用NDK儲存機密資訊
17.
M3不安全通訊(M3 - Insecure
Communication) ? 未以加密?方式傳輸機敏資料如HTTPS,或是SSL版 本不正確,SSL handshake不正確,可能導致的 攻擊有中間?人攻擊(Man-in-the-middle attack)導致 機敏資料外洩或遭竄改
18.
pay.taipei 未使?用 HTTPS Reference http://www.techbang.com/posts/52151-pay-taipei-just-online-of?ine- because-of-alert-data-is-not-encrypted
19.
未使?用HTTPS ? 使?用者機敏資料暴暴露在?高度風險下(帳號、密碼) ? 中間?人攻擊(Man-in-the-middle
attack)竄改傳輸資 料,造成個資外流、盜刷
20.
未使?用HTTPS ? Apple 要求所有提交app
store 的app必須使?用HTTPS連線
21.
中間?人攻擊(MITM) ? reference ? https://www.incapsula.com/web-application-security/man-in-the-middle- mitm.html
22.
Certi?cate Pinning ? 把需要進?行行比對的憑證存在應?用程式,並且在進 ?行行SSL
Handshake時與伺服器憑證做比對 ? 實作可參參考 http://devco.re/blog/2014/08/15/ssl- mishandling-on-mobile-app-development/
23.
M4不安全?身分認證 (M4 -
Insecure Authentication) ? 使?用者驗證失敗、session處理理不正確等問題
24.
M4不安全?身分認證 (M4 -
Insecure Authentication) ? App應先進?行行驗證如Regular Expression ? 不只前端驗證,後端?一定要再進?行行驗證 ? 若若使?用OAuth的token需要具有時效性,並且token 需要加密保存 ? Session id長度在128bit以上確保不會遭暴暴?力力破解
25.
M5不?足夠的加密(M5 - Insuf?cient
Cryptography) ? 加密的?方式不正確或加密程度不?足導致破解之可 能 ? 使?用不安全的演算法如RC2.MD4.MD5.SHA1 ? 避免hardcode key在app裡
26.
M6不安全授權(M6 - Insecure
Authorization) ? 建議使?用TLS1.1以上的SSL協議 ? 應由後端進?行行授權
27.
M7?用?戶端程式碼品質(M7 - Client
Code Quality ) ? App程式碼品質不佳造成的問題,如buffer over?ow. format string等 ? 緩衝區溢位(buffer over?ow),是針對程式設計缺陷,向程 式輸入緩衝區寫入使之溢位的內容(通常是超過緩衝區能儲存 的最?大數據量量的資料),從?而破壞程式執?行行、趁著中斷之際並 取得程式乃?至系統的控制權。 ? 使?用靜態分析?工具如Xcode static analyze. Android Lint進?行行 分析並且改善 ? 市?面上?工具如fortify. checkmarx
28.
M8程式碼竄改(M8 -Code Tampering) ?
透過以下?手法對程式進?行行竄改 ? binary patching, local resource modi?cation, method hooking, method swizzling, and dynamic memory modi?cation ? 進?行行JB. root偵測並且混淆,若若偵測JB. root進?行行 相應動作
29.
JB偵測 Reference ?行行動應?用資安聯聯盟
30.
拒絕Debug模式執?行行 Reference ?行行動應?用資安聯聯盟
31.
M9逆向?工程(M9 - Reverse
Engineering) ? 透過逆向?工程將可了了解程式式如何運作以及進?行行 分析造成風險 ? iOS ? 透過?工具如?IDA Pro, Hopper, otool, 對binary檔案 進?行行 decompile等進?行行反組譯,class-dump查看 class. category. protocol等
32.
M9逆向?工程(M9 - Reverse
Engineering) ? Android ? 透過?工具如apktool是拿來來把 apk 拆開,反編譯 apk 之後,看到smali檔案跟resource ? dex2jar 可以把 apk 轉成 jar再?用jd-gui檢視 java code ? 可進?行行竄改程式並且重新產?生apk檔
33.
M9逆向?工程(M9 - Reverse
Engineering) ? 可使?用obfuscate進?行行程式碼混淆 ? Android 本?身內建基本proguard?工具 ? iOS 可?用open source https://github.com/ obfuscator-llvm/obfuscator/wiki ? 可?用 obfuscate進階?工具,如DexGuard. Arxan. AppGuard等?工具除了了混淆之外也有些是加殼或是 靜態、動態防護
34.
M10多餘的功能(M10 - Extraneous
Functionality) ? 額外功能,如開發時常常會使?用後?門或是在側 是環境為了了?方便便直接輸入密碼等功能容易易造成 不?小?心上線到正式環境的風險
35.
M10多餘的功能(M10 - Extraneous
Functionality) ? 在程式開發階段,應進?行行?人?工code review避免此狀狀況發?生,可配 合如pull request機制來來進?行行merge前的關卡 ? 檢查Log資訊是否不包含機敏資訊 ? 使?用proxy?工具如charles. MITM proxy來來檢查app連線 ? iOS ? 可以使?用不同target或debug ?ag來來分開環境 ? Android ? ?用debug ?ag分開環境
36.
其他常?見見問題 ? ?行行動應?用App使?用第三?方函式庫前,需先確認其是來來?自 可靠來來源、有持續更更新並經測試沒有漏 洞洞、後端?木?馬及 不明傳送?目的地。 ?
對使?用者輸入驗證,避免SQL injection等問題 ? iOS 使?用 ARC開發 ? iOS使?用ATS(HTTPS)設定 ? JB. Root已弊?大於利利
37.
安全軟體開發 ? 設計階段:清楚定義資訊安全政策 ? 開發階段:針對原始碼進?行行安全漏洞洞掃描,並且針 對漏洞洞等級分類追蹤與修復,及早發現問題並調整 ?
測試階段:模擬駭客進?行行滲透測試(Penetration Test) ? 上線階段:監控並追蹤攻擊,避免造成風險
38.
?黑?白箱測試 ? iOS ? Santoku.
Snoop-it. MobSF ? Android ? Santoku. MobSF
39.
Zero Day 平台 ?
ZeroDay ? 烏雲
40.
Q&A
Download