appshark
v0.1.2
AppSharkは、Androidアプリの脆弱性をスキャンするための静的な汚染分析プラットフォームです。
AppSharkには、JDK -JDK 11の特定のバージョンが必要です。テスト後、依存関係の互換性の問題により、他のLTSバージョンJDK 8およびJDK 16では機能しません。
プロジェクトリポジトリのルートディレクトリで作業していると仮定します。 Gradleツールでプロジェクト全体を構築できます。
$ ./gradlew build -x test 上記のコマンドを実行した後、ディレクトリbuild/libsにArtifactファイル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にはこれらの基本的なフィールドがあります。
, 。デフォルトはすべて *.jsonファイル$ rulepathディレクトリですその詳細なフィールドについては、 net.bytedance.security.app.ArgumentConfigにアクセスしてください
Project Root Directoryに出力パスをoutする構成JSONファイルを提供すると、分析を実行した後、結果ファイルがout/results.jsonを見つけます。
以下はresults.jsonの例です。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は、バージョン2.0のApacheライセンスに基づいてライセンスされています
ラーク