
Android ऐप्स के लिए स्थिर टेन्ट विश्लेषण प्लेटफ़ॉर्म जो अनुकूलन योग्य नियम-आधारित स्कैनिंग और विस्तृत परिणाम रिपोर्टिंग का उपयोग करके कमजोरियों और अनुपालन मुद्दों का पता लगाता है।
Appshark एक स्थैतिक दूषण विश्लेषण (static taint analysis) प्लेटफॉर्म है जो एंड्रॉइड ऐप में कमजोरियों को स्कैन करता है।
Appshark को JDK के एक विशिष्ट संस्करण की आवश्यकता है -- JDK 11। परीक्षण के बाद, यह निर्भरता संगतता समस्या के कारण अन्य LTS संस्करणों, JDK 8 और JDK 16 पर काम नहीं करता है।
हम मानते हैं कि आप प्रोजेक्ट रिपॉजिटरी की रूट डायरेक्टरी में काम कर रहे हैं। आप gradle टूल का उपयोग करके पूरे प्रोजेक्ट का निर्माण कर सकते हैं।
$ ./gradlew build -x test
उपरोक्त कमांड को निष्पादित करने के बाद, आपको build/libs डायरेक्टरी में एक आर्टिफैक्ट फ़ाइल AppShark-0.1.2-all.jar दिखाई देगी।
पिछले चरण की तरह, हम मानते हैं कि आप अभी भी प्रोजेक्ट की रूट फ़ोल्डर में हैं। आप टूल को इस प्रकार चला सकते हैं:
$ java -jar build/libs/AppShark-0.1.2-all.jar config/config.json5
config.json5 में निम्नलिखित कॉन्फ़िगरेशन सामग्री है।
{
"apkPath": "/Users/apks/app1.apk"
}
प्रत्येक JSON में ये मूल फ़ील्ड होते हैं।
, से विभाजित होते हैं। डिफ़ॉल्ट $rulePath डायरेक्टरी में सभी *.json फ़ाइलें हैंअधिक कॉन्फ़िग फ़ील्ड के लिए, कृपया net.bytedance.security.app.ArgumentConfig पर जाएँ।
यदि आप एक कॉन्फ़िगरेशन JSON फ़ाइल प्रदान करते हैं जो प्रोजेक्ट रूट डायरेक्टरी में आउटपुट पथ को out के रूप में सेट करता है, तो आपको विश्लेषण चलाने के बाद परिणाम फ़ाइल out/results.json मिलेगी।
नीचे results.json का एक उदाहरण है।
{
"AppInfo": {
"AppName": "test",
"PackageName": "net.bytedance.security.app",
"min_sdk": 17,
"target_sdk": 28,
"versionCode": 1000,
"versionName": "1.0.0"
},
"SecurityInfo": {
"FileRisk": {
"unZipSlip": {
"category": "FileRisk",
"detail": "",
"model": "2",
"name": "unZipSlip",
"possibility": "4",
"vulners": [
{
"details": {
"position": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>",
"Sink": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r31",
"entryMethod": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void f()>",
"Source": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r3",
"url": "/Volumes/dev/zijie/appshark-opensource/out/vuln/1-unZipSlip.html",
"target": [
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r3",
"pf{obj{<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>:35=>java.lang.StringBuilder}(unknown)->@data}",
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r11",
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolderFix1(java.lang.String,java.lang.String)>->$r31"
]
},
"hash": "ec57a2a3190677ffe78a0c8aaf58ba5aee4d2247",
"possibility": "4"
},
{
"details": {
"position": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>",
"Sink": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r34",
"entryMethod": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void f()>",
"Source": "<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r3",
"url": "/Volumes/dev/zijie/appshark-opensource/out/vuln/2-unZipSlip.html",
"target": [
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r3",
"pf{obj{<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>:33=>java.lang.StringBuilder}(unknown)->@data}",
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r14",
"<net.bytedance.security.app.pathfinder.testdata.ZipSlip: void UnZipFolder(java.lang.String,java.lang.String)>->$r34"
]
},
"hash": "26c6d6ee704c59949cfef78350a1d9aef04c29ad",
"possibility": "4"
}
],
"wiki": "",
"deobfApk": "/Volumes/dev/zijie/appshark-opensource/app.apk"
}
}
},
"DeepLinkInfo": {
},
"HTTP_API": [
],
"JsBridgeInfo": [
],
"BasicInfo": {
"ComponentsInfo": {
},
"JSNativeInterface": [
]
},
"UsePermissions": [
],
"DefinePermissions": {
},
"Profile": "/Volumes/dev/zijie/appshark-opensource/out/vuln/3-profiler.json"
}
AppShark APACHE LICENSE, VERSION 2.0 के अंतर्गत लाइसेंस प्राप्त है।
UI/Server एक सहायक परीक्षण उपकरण है जिसका उपयोग उत्पादन वातावरण में नहीं किया जाना चाहिए और इसे केवल स्थानीय परीक्षण के लिए तैनात किया जा सकता है।
Lark 