一个针对Android的安全静态分析平台。
项目描述
马里亚纳海沟
马里亚纳 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 个问题要查看,因此手动识别问题很容易,但一旦运行了更多规则,页面右上角的过滤功能就派上用场了。
问题告诉您,马里亚纳 trench 在 MainActivity.onCreate
中发现了一个远程代码执行,其中数据从 Activity.getIntent
距离一调用,流向距离 3 调用的 ProcessBuilder
构造函数。单击问题右上角“跟踪”以查看示例跟踪。
马里亚纳 trench 表面的跟踪由三部分组成。
源跟踪 表示数据来自何处。在我们的示例中,跟踪非常短:在 MainActivity.onCreate
中直接调用 Activity.getIntent
。
跟踪根 表示源跟踪与汇点跟踪相交的地方。在我们的示例中,这是活动的 onCreate
方法。
跟踪的最后部分是汇点跟踪:这是源数据流入汇点的地方。在我们的示例中,从onCreate
到onClick
,再到execute
,最终进入ProcessBuilder
的构造函数。
配置马里亚纳海沟
你可能想知道,“工具是如何知道哪些是用户控制数据,哪些是汇点的?”。本指南旨在帮助您快速开始一个小型应用程序。我们没有涵盖如何配置马里亚纳海沟。您可以在我们的网站上了解更多信息,网址为配置。
贡献
有关从源代码构建和马里亚纳海沟开发的高级指南,请参阅我们网站上的开发者指南。
许可证
马里亚纳海沟采用MIT许可证。
项目详情
mariana-trench-1.0.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1e60fca54320cbcd5252991999369d0f9da4d1e28a5cdf9b0b59d3536993d33d |
|
MD5 | 76fe04b96afccef01002d1f4a6568d35 |
|
BLAKE2b-256 | b8985ab451abaf6dd8313e8dc7052eaaee99c4f742b0c9ebd8f3d3a877daeb81 |
mariana_trench-1.0.6-py3-none-manylinux1_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e02f94b48d6d91ef0959e9863076a44c725dbc0059c2bf968ce2297146481d9 |
|
MD5 | 0dd9ccabcf07d8bf2aee2cc889d91db9 |
|
BLAKE2b-256 | 7bd9f4e6dfc315415445fd42a78acebf1f95754a86b601aaa87d3bb617505719 |
mariana_trench-1.0.6-py3-none-macosx_10_11_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bf0f00e32fd186989ffbd828889567d23d350cef85a57a57a6abf290bc669b03 |
|
MD5 | 2d0aa8bf89edc6b604da5213a3720512 |
|
BLAKE2b-256 | 1fc6cd0763e9af2e69b0fcc45d5ec71307b4e2d71da9543e5b471fe79008c745 |