跳转到主要内容

一个针对Android的安全静态分析平台。

项目描述

马里亚纳海沟

logo

MIT License .github/workflows/tests.yml

马里亚纳 trench 是一个针对 Android 的以安全为中心的静态分析平台。

本指南将指导您在您的计算机上设置马里亚纳 trench,并帮助您在一个小型示例应用程序中找到第一个远程代码执行漏洞。这些说明也可在我们的网站上找到:网站

先决条件

马里亚纳 trench 需要一个较新的 Python 版本。在 MacOS 上,您可以通过 homebrew 获取当前版本。

$ brew install python3

在 Debian 风格的 Linux(Ubuntu、Mint、Debian)上,您可以使用 apt-get

$ sudo apt-get install python3 python3-pip python3-venv

本指南还假设您已安装 Android SDK,并且环境变量 $ANDROID_SDK 指向 SDK 的位置。

在本指南的其余部分中,我们假设您正在虚拟环境中工作。您可以使用以下命令设置它:

$ python3 -m venv ~/.venvs/mariana-trench
$ source ~/.venvs/mariana-trench/bin/activate
(mariana-trench)$

虚拟环境名称出现在您的 shell 提示符之前,表明虚拟环境处于活动状态。

安装马里亚纳 trench

在您的虚拟环境中,安装马里亚纳 trench 只需运行

(mariana-trench)$ pip install mariana-trench

注意:目前不支持 Apple Silicon Macs 上的 pip install,您可以使用开发者指南中的说明从源代码构建:开发者指南

运行马里亚纳 trench

我们将使用我们文档中的一个小型应用程序。您可以通过运行以下命令来获取它:

(mariana-trench)$ git clone https://github.com/facebook/mariana-trench
(mariana-trench)$ cd mariana-trench/

我们现在可以运行分析了

(mariana-trench)$ mariana-trench \
  --system-jar-configuration-path=$ANDROID_SDK/platforms/android-32/android.jar \
  --model-generator-configuration-paths=configuration/default_generator_config.json \
  --lifecycles-paths=configuration/lifecycles.json \
  --rules-paths=configuration/rules.json \
  --apk-path=documentation/sample-app/app/build/outputs/apk/debug/app-debug.apk \
  --source-root-directory=documentation/sample-app/app/src/main/java \
  --model-generator-search-paths=configuration/model-generators/

# ...
INFO Analyzed 68937 models in 7.47s. Found 9 issues!
# ...

分析在我们的示例应用程序中发现了 9 个问题。分析输出的结果是应用程序每个方法的规范集。

后处理

这些规范本身并不打算由人类阅读。我们需要额外的处理步骤,以便使结果更加易于展示。我们使用已为我们安装的 SAPP PyPi 来完成此操作。

(mariana-trench)$ sapp --tool=mariana-trench analyze .
(mariana-trench)$ sapp --database-name=sapp.db server --source-directory=documentation/sample-app/app/src/main/java
# ...
2021-05-12 12:27:22,867 [INFO]  * Running on http://localhost:13337/ (Press CTRL+C to quit)

输出中的最后一行告诉我们,SAPP 启动了一个本地 Web 服务器,使我们能够查看结果。打开链接,您将看到分析发现的 4 个问题。

探索结果

让我们关注在示例应用程序中发现的远程代码执行问题。您可以通过其问题代码 1(对于所有远程代码执行)和可调用 void MainActivity.onCreate(Bundle) 来识别它。由于只有 4 个问题要查看,因此手动识别问题很容易,但一旦运行了更多规则,页面右上角的过滤功能就派上用场了。

Single Issue Display

问题告诉您,马里亚纳 trench 在 MainActivity.onCreate 中发现了一个远程代码执行,其中数据从 Activity.getIntent 距离一调用,流向距离 3 调用的 ProcessBuilder 构造函数。单击问题右上角“跟踪”以查看示例跟踪。

马里亚纳 trench 表面的跟踪由三部分组成。

源跟踪 表示数据来自何处。在我们的示例中,跟踪非常短:在 MainActivity.onCreate 中直接调用 Activity.getIntent。![跟踪源](https://pypi-camo.freetls.fastly.net/827ae5d27ec0ace2b2a3075b9c2974bbaabecd88/68747470733a2f2f6769746875622e636f6d2f66616365626f6f6b2f6d617269616e612d7472656e63682f626c6f622f6d61696e2f646f63756d656e746174696f6e2f776562736974652f7374617469632f696d672f74726163655f736f757263652e706e673f7261773d74727565)

跟踪根 表示源跟踪与汇点跟踪相交的地方。在我们的示例中,这是活动的 onCreate 方法。![跟踪根](https://pypi-camo.freetls.fastly.net/2258fb44f318f4df4388de966ae0e5b931d9a211/68747470733a2f2f6769746875622e636f6d2f66616365626f6f6b2f6d617269616e612d7472656e63682f626c6f622f6d61696e2f646f63756d656e746174696f6e2f776562736974652f7374617469632f696d672f74726163655f726f6f742e706e673f7261773d74727565)

跟踪的最后部分是汇点跟踪:这是源数据流入汇点的地方。在我们的示例中,从onCreateonClick,再到execute,最终进入ProcessBuilder的构造函数。Trace Sink

配置马里亚纳海沟

你可能想知道,“工具是如何知道哪些是用户控制数据,哪些是汇点的?”。本指南旨在帮助您快速开始一个小型应用程序。我们没有涵盖如何配置马里亚纳海沟。您可以在我们的网站上了解更多信息,网址为配置

贡献

有关从源代码构建和马里亚纳海沟开发的高级指南,请参阅我们网站上的开发者指南

许可证

马里亚纳海沟采用MIT许可证。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分发

mariana-trench-1.0.6.tar.gz (6.2 MB 查看哈希值)

上传时间 源代码

构建分发

mariana_trench-1.0.6-py3-none-manylinux1_x86_64.whl (6.3 MB 查看哈希值)

上传时间 Python 3

mariana_trench-1.0.6-py3-none-macosx_10_11_x86_64.whl (5.0 MB 查看哈希值)

上传时间 Python 3 macOS 10.11+ x86-64

由以下支持