bytedance / appshark

Appshark is a static taint analysis platform to scan vulnerabilities in an Android app.
Apache License 2.0
1.49k stars 166 forks source link

Manifest配置错误的检测 #1

Closed firmianay closed 1 year ago

nkbai commented 2 years ago

大家可以一起来写规则,比如把flowdriod,或者其他引擎的规则移植过来。

firmianay commented 1 year ago

是否支持Manifest配置错误的检测(例如debuggable),以及有时候需要结合组件是否export来判断问题(例如https://github.com/github/codeql/blob/main/java/ql/lib/semmle/code/java/security/FragmentInjection.qll#L21)

nkbai commented 1 year ago

暂不支持对manifest.xml等资源文件的检测,只支持java,kotlin代码的检测。

firmianay commented 1 year ago

暂不支持对manifest.xml等资源文件的检测,只支持java,kotlin代码的检测。

我看到代码里预留了接口但没有实现:

interface ManifestVulnerability {
    fun check(manifest: ProcessManifest)
}

soot在解析的时候其实已经做了这件事,所以是不是在parseApkInternal()中加上下面的代码就可以:

      val isDebuggable = manifest.application.isDebuggable
      Log.logDebug("debuggable $isDebuggable")
      val isAllowBackup = manifest.application.isAllowBackup
      Log.logDebug("allowBackup $isAllowBackup")
      val isUsesCleartextTraffic = manifest.application.isUsesCleartextTraffic
      Log.logDebug("usesCleartextTraffic $isUsesCleartextTraffic")

最后结果是放在results的AppInfo里,还是单独在SecurityInfo列一项ManifestRisk?我可以提交一个PR

nkbai commented 12 months ago

建议单独列一个ManifestRisk。 目前没做这个主要原因是,appshark的核心功能是数据流分析,这些虽然有用,但是实际上随便一个安卓分析工具都有,就没有实现。

如果你能提交一个pr,当然非常好!