前一阵我们的应用在申请Google Fit API
时,被要求进行安全性评估。
收到的通知邮件部分内容如下:
You are required to complete a TIER 2 CASA security assessment for your application by the following date: xxx. This assessment is required annually; to learn more, please visit the CASA website.
CASA (云应用安全性评估)的定义如下:
在过去十年中,我们在保护云基础架构方面进行了大量投资和改进,但应用层仍面临着重大挑战。具体来说,风险较高的安全应用通过可信的数据集成集成与安全的云基础架构交换数据。因此,我们推出了云应用安全性评估 (CASA)。
CASA 在 OWASP 应用安全验证标准 (ASVS) 的基础上基于行业认可的标准,提供一组一致的要求,可强化任何应用的安全性。此外,对于可能需要访问敏感数据的应用,CASA 提供了一种统一的方式来执行针对这些要求的可信保证评估。
简单理解就是检测代码里面存在的安全隐患和漏洞,以达到安全标准。有些类似国内各厂商开发平台的应用检测。
那么为了不提供源代码,我们选择了自行扫描里面的静态扫描。
静态扫描
利用 FlidAttacks CLI 对您的应用执行自动静态 (SAST) 扫描。创建 Docker 镜像以包含所有必要的 CWE。只需启动容器,然后在容器内运行扫描命令。
这里有个小坑,一开始我是按照这个静态扫描文档去操作的,但是过程中发现在FlidAttacks
的casa文档中说上面的文档过时了。。。
回过头看文档底部显示的最后更新时间是2022-11-11。同时发现这种方式更加简单,不需要Dockerfile文件,只需要下载镜像。所以就使用了此方法。
我下面说一下整个操作流程,我的系统是ubuntu20。
-
安装docker,可以参考这篇博客。有安装的话忽略此步骤。
-
然后将
config.yaml
文件放入扫描代码的根目录。config.yaml
的内容见上图或者文档。 -
下载镜像:
docker pull ghcr.io/fluidattacks/makes/amd64:latest
-
运行:
docker run -v /root/MyApplication:/working-dir ghcr.io/fluidattacks/makes/amd64 m gitlab:fluidattacks/universe@trunk /skims scan ./config.yaml
(注意必须是扫描代码的绝对路径)
- 完成后扫描结果
Fluid-Attacks-Results.csv
文件就在扫描代码的根目录。
下图是Fluid-Attacks-Results.csv
的部分内容:
此条cvss值为:CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H/E:U/RL:O/RC:C
通过cvss计算器,计算结果如下:
高、中、低严重程度的划分对应以下分数:
- 高:CVSS 基本评分为 7.0–10.0 的漏洞。
- 中:CVSS 基本评分为 4.0–6.9 的漏洞。
- 低:CVSS 基本评分为 0.0–3.9 的漏洞。
这条安全漏洞7.8分显然需要修改,其他几条都是低风险,但是也不代表这可以不用处理,比如低风险的CWE-310。所以需要使用CASA的加速器,在里面可以查看需要遵守的所有CWE。例如上面的问题CWE-295。
问题是使用到的org.java-websocket:Java-WebSocket
1.3.9版本有安全漏洞。通过CVE-2020-11050
我搜到了相关内容。
处理方法就是升级Java-WebSocket
到1.4.1以上,后面再次扫描验证,问题解决。
ps: 这让我想起了之前Android Studio上使用的360FireLine
插件,也是做这种代码安全扫描,并给出改进意见。
使用CASA内置扫描
还有一种方式是打包代码,上传到CASA门户网站进行扫描。
首先需要在此页面上下载打包工具,工具下方也提供了操作说明文档。
对于Android代码,可以在项目根目录里面执行scancentral package -bt gradle -skipBuild -o myPackage.zip
命令进行打包。
注意打包前需要编译好代码,因为里面需要包含所有开发代码,和用到的jar和aar文件。
完成后就是按要求提供各种资料上传,填写问卷,等待审核结果。
参考
- 通用漏洞评分系统CVSS v4.0标准浅析