2、編寫掃描規(guī)則
appshark有非常靈活的規(guī)則來指定source以及sink, 詳細的介紹文檔可以參考https://github.com/bytedance/appshark/blob/main/doc/zh/how_to_write_rules.md。撰寫規(guī)則最重要的就是確定source以及sink,一般把外部用戶可直接或間接控制的變量視為source,明顯openFile的參數(shù)0也就是uri是用戶可控制的,而sink點比較合適的一個地方是ParcelFileDescriptor.open的參數(shù)0,因為如果source能夠控制ParcelFileDescriptor.open參數(shù)0,那么基本上就可以讀取任何文件了。
因此我們的規(guī)則ContentProviderPathTraversal.json如下:
3. 通過github下載config文件夾
4. 修改config文件
1. 將apkPath修改為你想要掃描的apk絕對路徑。為了方便,可以在這里下載參考: https://github.com/nkbai/BypassPathTraversal/blob/main/apk/app-debug.apk
2. 指明你要使用的規(guī)則,也就是ContentProviderPathTraversal.json文件,這個文件應該放在config/rules目錄下,因為appshark是通過這個路徑來查找這些規(guī)則的。
3. 指定輸出結果保存的目錄,默認是當前目錄下的out文件,你可以指定一個其他目錄。
5. 啟動appshark
先下載:https://github.com/bytedance/appshark/releases/download/0.1/appShark-0.1-all.jar,然后啟動。
6. 查看結果
結果在當前目錄的out/results.json文件中,里面給出了所有的漏洞列表。關于結果的詳細解釋請查看https://github.com/bytedance/appshark/blob/main/doc/zh/result.md。如果對某個具體的漏洞有疑問,可以查看url字段指明的HTML文件。
針對這個漏洞,你應該可以在results.json中看到,存在漏洞的函數(shù)(postion),漏洞傳播的數(shù)據(jù)流(target):
三、后續(xù)計劃
appshark會長期維護,歡迎大家使用,歡迎交流提建議以及貢獻代碼。
四、關于無恒實驗室
無恒實驗室(https://security.bytedance.com/security-lab)是由字節(jié)跳動資深安全研究人員組成的專業(yè)攻防研究實驗室,致力于為字節(jié)跳動旗下產品與業(yè)務保駕護航,亦極為重視開源軟件與系統(tǒng)對業(yè)務安全的影響,在檢測公司引入的開源框架和系統(tǒng)的同時,無恒實驗室也著力于構建第三方框架和組件的漏洞緩解機制,并將持續(xù)與業(yè)界共享研究成果,協(xié)助企業(yè)業(yè)務避免遭受安全風險,亦望能與業(yè)內同行共同合作,為網絡安全行業(yè)的發(fā)展做出貢獻。