使用MobSF和Docker进行静态应用安全测试
一个没有被修复的漏洞可能会给应用程序的用户和所有者带来可怕的后果。SAST是用来扫描和评估应用程序的漏洞的方法之一。
前提条件
学习者应该熟悉。
- Git命令和Linux操作系统中的命令。
- 对容器化存储有基本了解。
什么是SAST
静态应用安全测试(SAST)是一种漏洞测试方法,它分析应用程序的源代码以确定可能导致应用程序被破坏的安全漏洞。
漏洞是应用程序中的任何漏洞,可被利用来获得对应用程序的未经授权的访问或通过应用程序传播恶意软件。一个没有被修复的漏洞可能会给用户和应用程序的所有者带来可怕的后果。SAST是用来扫描和评估应用程序的漏洞的方法之一。
SAST在SDLC开始时,在编译代码之前扫描应用程序,因为它不需要一个正在执行的应用程序。这种情况也被称为白盒测试。
因此,开发人员可以在开发的早期阶段确定应用程序的缺点,并迅速解决可能影响最终推出的应用程序的问题。开发人员还可以系统地跟踪应用程序内的漏洞趋势,从而促进创建一个安全和高效的软件开发生命周期(SDLC)。
SAST对发现的问题提供可视化的表示,使之易于浏览代码。此外,它还提供关于如何修复代码中发现的漏洞的建议。大多数SAST工具都支持可下载和离线可见的定制报告,也可以通过仪表盘进行跟踪。
SAST和DAST之间的差异
有两种不同类型的应用安全测试,即SAST和DAST(动态应用安全测试)。这两种方法检测应用程序的安全漏洞,但每种方法都有独特的方式。下面是SAST和DAST之间的一些重要比较。
- SAST支持所有类型的软件,而DAST只能扫描应用程序,如网络应用程序和网络服务。
- SAST不能发现运行时和环境相关的问题,而DAST可以发现运行时和环境相关的问题。
- 使用SAST修复漏洞的成本较低,而使用DAST修复漏洞则相对昂贵。
- SAST在SDLC的早期发现漏洞,而DAST在SDLC的末期发现漏洞。
- SAST需要源代码。DAST需要一个正在运行的应用程序。
用于执行SAST的工具
在执行SAST中使用的一些工具如下。
- GitLab。
- Veracode。
- Synopsys Coverity。
- HCL AppScan。
- SonarQube。
- Snyk.
- Appknox.
- Klocwork。
- 移动安全框架(MobSF)。
- Checkmarx。
上述所有工具都以不同的方式进行SAST和其他类型的安全测试;进一步的细节可以在这里找到。
SAST的分步过程
SAST在以下步骤中自动执行应用程序的扫描。
第1步:选择工具
选择一个静态分析工具,它可以根据编程语言审查应用程序的代码,并了解应用程序的基础框架。
对于这个样本测试,我们将使用移动安全框架(MobSF),一个开源的、自动化的移动渗透测试工具,进行安全测试。
在本教程中,我们将利用容器技术的优势,使用docker来容纳框架,并从运行在Linux环境中的docker容器中进行分析。
我们将继续创建一个docker容器,并在下一步部署我们的框架。
第2步:创建docker容器
我们将使用以下步骤来设置docker容器。
- 设置docker PGP密钥。
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add –
- 配置docker。
echo 'deb [arch=amd64] https://download.docker.com/linux/debian buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
- 安装docker。
apt install docker-ce
第3步:部署和运行工具
我们将把我们的工具部署到容器中,然后触发框架在容器中运行。
然后,我们使用以下命令从这个git仓库下载MobSF工具docker镜像。
docker pull opensecurity/mobile-security-framework-mobsf
当拉动操作完成后,我们的docker容器就设置成功了,我们的框架也部署在其中。
然后我们用下面的命令来运行MobSF工具。
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf
当我们运行工具完成后,终端应该显示 "监听http://0.0.0.0:8000"。
第4步:应用程序的入驻
一旦MobSF工具准备好了,应用程序就会被加载到它上面进行分析。
我们可以通过上面步骤中的URL访问MobSF并上传要测试的应用程序。
在第3步中点击控制台中的http://0.0.0.0:8000,然后点击上传和分析。
该过程将自动运行,然后在完成后呈现结果,如下图所示。

第5步:下载报告和分析扫描结果
这一步包括通过对漏洞扫描结果进行分流来消除任何假阳性。
一旦漏洞被完全汇总,就可以把它们分配给部署团队,以便采取适当的行动并及时纠正。
之后,可以对这些漏洞的进展进行跟踪。
在任务窗格上导航,查看pdf报告或下载一个离线报告。
上述报告可以脱机学习。
SAST的优势
SAST有几个优点,其中一些列在下面。
- SAST工具可以分析整个代码库。
- SAST工具比人类触发的安全代码审查快得多,在很短的时间内执行接近一百万行的代码。
- SAST工具能自动发现关键的漏洞,并具有很高的可信度。
- 鉴于SAST工具可以在多个软件上运行,并且可以多次运行,因此SAST工具的规模很大。
SAST的缺点
SAST有一些缺点,概述如下。
- 高数量的假阳性反应。
- SAST有时无法找到配置问题,因为它们在代码中没有体现。
总结
SAST仍然是SDLC的一个重要部分,因为应用程序源代码中的漏洞可以在开发的早期被发现。这导致了一些优势,如与应用程序调试有关的成本效益和节省时间。因此,开发人员可以在最小的安全问题上推出经过微调的应用程序。