當前位置:
首頁 > 最新 > 乾貨分享-你不知道的Android SDK安全測試

乾貨分享-你不知道的Android SDK安全測試

作為Android手機用戶中的一枚殘粉,假如突然手機掉了,腦電波蹦出的第一個念想是見鬼,還是您的支付寶或者微信上的錢不安全呢?

假如最新下載的app,進去時不僅彈出各種無聊廣告,而且通知欄還會冒出意想不到的推送,您會想到這可能是釣魚推送,馬上卸載app?

假如百度全家桶事件,您卸載了所有的百度app,但烏雲暴漏的百度WormHole事件,無論是 wifi或3G/4G 蜂窩網路,只要手機在聯網狀態都有可能受到攻擊,你是否會考慮換掉Android手機呢?

GIF/329K

Mi粉狂熱已經冷卻,華為手機開始跟著android生態發展攻陷全球,物美價廉的Android手機走入尋常百姓家。

面對Android安全漏洞認知不足的用戶,何保證我們的app給用戶安心的體驗?Android生態安全漏洞有哪些?Android安全測試技術探新在哪兒?如何將安全常規測試流程化?

Android常見安全漏洞匯總

首先,Android操作系統擁有開源的開發紅利,也暗藏著後天發展的安全畸形,如:Android系統設計了沙箱系統(即虛擬機),但是底層卻出現一個又一個漏洞讓惡意程序(或工具)獲取root許可權以打破沙箱的限制。如同pc時代,沒有絕對安全的pc操作系統,移動互聯網時代,也沒有有絕對安全的移動操作系統。Android開源生態的安全隱患,就像染血的警鐘,敲擊在每位Android開發者的心裡。

其次,Android APP/SDK開發過程中的安全隱患就像未知黑洞,永遠都不知道安全對抗的終點在哪,攻擊者是誰,終結者又是誰,如何防禦。

最後,用戶層面,常見的、可識別的安全行為漏洞有哪些表現。

以上三個維度的已知安全漏洞總結如下:

無論是Android App,還是SDK,或多或少都有安全漏洞的死角。說不定某天你的應用就遭到以上的某種安全漏洞呢。恰巧,前段時間測試一款Android版SDK時,發現一種跟Android應用組件相關的安全漏洞。藉此實例化地總結了Android SDK安全測試方法、技術和流程。

應用Android版安全測試實例

HAVE A TRY

漏洞原因概述

某款應用(後面簡稱應用)Android版SDK的一個可選組件,在本地開啟了一個隨機埠,用於監控Java層service是否存活,但java層跟組件通訊時,未對輸入參數做嚴格檢驗,導致在調用Linux系統「system()」函數時,有被填充攻擊代碼,惡意攻擊的可能性。

如下截圖是模擬埠被攻擊後,在應用組件intent進行通信過程中,修改了url內容,webview顯示亂碼的情況:

漏洞潛在安全危害

Android APP的四大應用組件:Activity、Receiver、Service和Content provider,以及應用組件通過intent進行IPC通信等安全形色,暫不發散詳述。藉助於上述案例中應用的組件相關漏洞,展示終端APP側相關的攻擊維度如下圖:

由於Android APP本地應用環境,網路socket先天缺乏細粒度的認證授權機制,因此,如果把Android客戶端當做伺服器,利用逆向代碼搜索應用的本地隨機埠號,主動向埠發送攻擊,就潛伏著如下安全危害:

1. 本地命令執行: 當嵌入應用的Packagename指定為應用自身,Componentname指定為應用的activity時,可以啟動該應用的任意activity,包括受保護的未導出activity,從而造成安全危害。如,通過HTTP請求,逐一啟動若干未導出的activity,可以發現拒絕服務漏洞。

2. 命令控制修改應用許可權:通過開放socket埠傳入啟動Android應用組件的intent,然後以被攻擊應用的許可權執行啟動activity、發送廣播等操作。由於通過socket傳入的intent,無法對發送者的身份和許可權進行細粒度檢查,繞過了Android提供的對應用組件的許可權保護,能啟動未導出的和受許可權保護的應用組件,對安全造成危害

3. 敏感信息泄露,控制手機:本地某service打開UDP的埠監聽,接收特定的命令字後,可返回手機的敏感信息。如百度手機管家,遠程管理手機的secretKey,進而未授權的攻擊者可通過網路完全管理手機。

應用Android安全加固版本優化點

1.Native層和Java層增加對系統命令檢查,特殊字元檢查過濾

2.JNI Watchdog守護進程 socket通信加密

3.本地通知功能,添加url、intent、activity的特性驗證,防止點擊通知後,跳轉到惡意鏈接

4.修改Packagename在應用本地的存儲位置

5.增加在線配置功能

以上是此次安全加固優化的重要需求點。

專項安全點測試

如果按照常規的系統測試或者性能測試,只需要根據變動需求,進行正向的測試便可,但對於安全測試,保證SDK安全的健壯性需要進行逆向專項測試,模擬各種安全攻擊手段,針對修改點發散測試用例。

Android常規的安全流程回歸測試

1. 隱私數據:外部存儲安全和內部存儲安全;用戶名、密碼、聊天記錄、配置信息等隱私信息是否被保存在本地,是否加密保存;使用數據前都判斷信息是否被篡改;

2. 許可權攻擊:檢查App所在的目錄,其許可權必須為不允許其他組成員讀寫;檢查系統許可權是否收到攻擊;

3. Android組件許可權保護:禁止App內部組件被任意第三方程序調用: 禁止Activity被任意第三方程序調用,禁止Activity劫持;Broadcast的接收和發送安全,只能接收本程序發出的廣播,發送的內容不想讓第三方獲得;禁止惡意的啟動或者停止service;Content provider的操作許可權;若需要供外部調用的組件,應檢查對調用者是否做了簽名限制;

4. 升級:檢查是否對升級包的完整性、合法性進行了校驗,避免升級包被劫持;

5. 3rd庫:如果使用了第三方庫,需要跟進第三方庫的更新並且檢查第三方庫的安全性;

6. ROM安全:使用官方ROM或者權威團隊提供的ROM,避免ROM中被添加了植入廣告、木馬等;

7. 對抗反破解:對抗反編譯,即無法通過反編譯工具對其進行反編譯,或者反編譯之後無法得到正確的反彙編代碼;對抗靜態分析,採用代碼混淆技術,代碼加密;對抗動態調試,在軟體中加入檢測調試器和模擬器的代碼;防止重編譯,檢查簽名、校驗編譯之後dex文件的Hash值。安全專項測試和常規流程測試完後,針對應用現有的功能、新舊版本兼容性、以及不同;Android操作系統版本的兼容性,進行滾動回歸測試。

Android安全測試總結

相對於普通的性能和系統功能測試用例,安全測試用例需要更全面的理解Android生態系統,如:用例需要覆蓋到用戶安全表象層面、應用系統本地和遠程攻擊層面、以及操作系統本身漏洞層面,且更多的需要設計逆向攻擊思維的測試用例。

如果說開發的出發點是安全對抗防禦,那麼測試的出發點卻是黑客攻擊的思維,如何設計攻擊場景的測試用例,攻擊測試的技術如何實現,決定了SDK安全的健壯性。

歡迎諮詢

歡迎加入測試學習群


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 bugzero無缺 的精彩文章:

弱網被舉報掛機,還被扣分!還我五殺好嗎!
你覺得十二星座里誰最適合做測試?
支招小能手上線,教你如何知曉企業的軟體測試基因!
現實中的機器人,真的會與人類產生感情嗎?比如變形金剛
Appetizer Kotlin 來了,對測試意味著什麼?

TAG:bugzero無缺 |

您可能感興趣

Android Oreo新功能:連接公共WiFi前知道傳輸速度
Dad Shoe你只知道Balenciaga? adidas Twinstrike ADV新配色帶來驚喜!
WPA2中的WiFi「Krack」漏洞:你需要知道的
Dad Shoe你只知道Balenciaga?adidas Twinstrike ADV新配色帶來驚喜!
穿Vetements tabi的人從不需要知道Martin Margiela是誰
連接公共WiFi前想知道傳輸速度?Android Oreo加入了這項新功能
iPhone 6s要升級iOS 嗎?跑分看完你就知道了
iPhoneX和三星Note8看完才知道買哪個
你知道《DARLING in the FRANKXX》為何稱為國家隊嗎?
iPhone X和三星note8看完才知道買哪個
Live as Spanish | 只知道海鮮飯?Tapas才是西班牙美食的精髓!
《Fate/Grand Order》:熱度掉不掉我不知道,梅林是真抽不到!
關於madness×converse 那些你不知道的小事
關於三星 Galaxy S9和S9 Plus:到目前為止我們所知道的一切
連AngelaBaby都在走MLBB風,這個口紅色你不能不知道!
你的心跳它知道 1MORE iBFree 2的智能健身之旅
魅族Pro7:看看iPhoneX,就知道為什麼會失敗
陳可辛iPhone X 拍片好牛?NoNoNo 看了附件你就知道
PhoneX和三星Note8真機實際對比,看完才知道買哪個
Aoife,Siobhan,Ciara……你知道這些愛爾蘭名字都怎麼讀,是啥意思么?