Open Web Application Security Project
(OWASP)(開放Web軟體安全計畫)
是一個開放社群、非營利性組織,其主要目標是研議協助解決Web軟體安全之標準、工具與技術文件,長期致力於協助政府或企業瞭解並改善網頁應用程式與網頁服務的安全性。
行動應用程式
威脅分三區
1.User端:
2.Server端:M1
3.手機APP端:M2、M6
4.APP與Server端連線:M3、M5、M9
4.全方位:M4、M8、M10
Top 10 Mobile Risks - Final List 2014
M1:Weak Server Side Controls
伺服器端安全控制脆弱,例如app前後端分包給不同單位,造成伺服器端疏於對前端進行安全性的維護。
說明Mobile的弱點並不只單存在於Mobile端,所開發的APP應用程式或雲端系統的程式亦有可能存在弱點
發生原因:
1.急於上市
2.缺乏對於新的語言的安全知識
3.較低安全運算用於App
避免方法:
對於App的server端,應避免OWASP Web Top 10或
OWASP Cloud Top 10相關弱點
M2:Insecure Data Storage
不安全的資料儲存於用戶端,將敏感資料存放於用戶端,而沒有進行適當的保護。
指涉機密性的資料未受到適當的保護。
原因未對隱私資料做加密
常見Security data 儲存點
SQLite databases
Log Files
Plist Files
XML Data Stores or Manifest Files
Binary data stores
Cookie stores
SD Card
Cloud synced
避免方法:
只儲存必要資訊
將檔案加密、設定檔案權限
攻擊方式:
ROOT手機
M3:Insufficient Transport Layer Protection
傳輸層保護不足,傳輸機敏性資料時,很常發生未加密情況。例如:http
發生原因:
瀏覽器本身不支援HTTPS
APP未以加密方式進行資料傳輸
攻擊方式:
封包攔截,修改參數
M4:Unintended Data Leakage
意外或非故意地造成資料外洩。當mobile端程式在處理機敏資料時,可能造成該資料被放置在一個不安全的區域。
當應用程式存取DATA的位置是脆弱的,漏洞即產生
Ex:用戶登入銀行時將密碼複製到剪貼簿,此時惡意程式通過訪問剪貼簿獲取密碼
發生位置:
剪貼簿
URL暫存
Cookies
Logging
Keyboard press Caching
M5:Poor Authorization and Authentication
身分鑑別和授權機制不嚴謹,含前後端。
一個Android app,如果他們試圖在沒有適當安全措施情況下通過客戶端檢測進行用戶驗證或授權,那就是存在風險的
Ex:部份應用程式採用不變的數值進行身份驗證,例如IMEI
攻擊方式:
Root手機後可以繞過大多數的客戶端保護
避免方法:
對伺服器端進行身份驗證及在手機上使用驗證碼
M6:Broken Cryptography
加密方法不嚴謹或失效
使用不安全的加密函數來加密,像是已被破解的加密法
不安全的加密法:
RC2
MD4
MD5
SHA1
M7:Client Side Injection
針對客戶端的程式碼注入攻擊(SQL、JS)
M8:Security Decisions Via Untrusted Inputs
對於不受信任之輸入來源的檢測處置
在APP中,開發者應該檢驗應用程式,因為應用程式可能是由駭客精心設計,不可信任的輸入可能導致應用中的其他安全風險
Ex:
Skype應用程式具有HTML或Script Injection弱點,攻擊者只要事先把具有惡意連結的iframe寫入某個特定網頁:
<iframe src="skype:17031234567?call"></iframe>
一但可攜式行動裝置的瀏覽器讀取到此iframe程式碼時,Skype應用程式將無需使用者授權,自動開始播號給指定的電話號碼。
M9:Improper Session Handling
連線階段處理不適當,例如不同連線使用相同的session識別,造成系統暴露於重送(reply)攻擊。
可攜式行動裝置的應用程式session過期時間,一般而言會設定的比較長,原因是對使用者方便存取或使用,建議避免使用裝置的硬體識別碼來當作session值,很容易讓攻擊者猜到session內的機密性內容(例如:帳號或密碼),進而造成提升攻擊者於可攜式行動裝置的權限,進行非授權的存取。
攻擊方式:Session Hijacking
駭客是利用SessionID會當成Cookie存到用戶端電腦的特性,竊取存在用戶端電腦的SessionID,再冒用網頁使用者的身份進入該使用者所使用的的網站竊取重要的個人資料(例如:金融資訊) ,再進行危害網頁使用者的動作。
建議防護措施:
1)session值的過期時間應設定在一個可接受範圍內,就無需擔心讓使用者太頻繁的重新驗證。
2)建議避免使用容易猜測的值來當作session值
M10:Lack of Binary Protections
封裝檔案保護不足
程式的主要安裝檔不夠安全,缺乏保護,程式易被反組譯,造成程式碼被公開,且漏洞被找出,進而暴露出許多安全風險。
Top 10 Mobile Risks - Final List 2016
M1: Improper Platform Usage
作業系統平臺使用不當,是否向系統要求過大的權限。
M2: Insecure Data Storage
不安全的資料儲存
M3: Insecure Communication
傳輸的方式多元化,要注意protocol是否安全。
M4: Insecure Authentication
不安全的身份驗證
M5: Insufficient Cryprography
加密失效
M6: Insecure Authorization
不安全的授權
M7: Client Code Quality
用戶端程式碼品質問題,包括用戶端程式碼所開發問題,如行動應用APP存有緩衝區溢位弱點或XSS問題
M8: Code Tampering
竄改APP程式內容,比如驗證身分時不論對錯都回傳true
M9: Reverse Engineering
逆向工程,應用程式會不會被反組譯?因為JAVA是相對好反組譯的語言。
M10: Extraneous Functionality
程式是否包含額外功能,比方log、後門(以為只有開發者知道的後門
此份文件僅為個人筆記
參考資料: