大多数企业或多或少的会去采购第三方软件,或者研发同学在开发代码时,可能会去使用一些好用的软件包或者依赖包,但是如果这些包中存在恶意代码,又或者在安装包时不小心打错了字母安装了错误的软件包,则可能出现供应链攻击。因此去识别采购或者自研项目中的软件包,来保证其版本足够新、不存在恶意代码是解决供应链的一项重要措施,而SCA(软件成分分析)可以帮助完成这一动作。
下载地址:https://github.com/XmirrorSecurity/OpenSCA-cli 使用方法:首先使用了Docker的方式,快速扫描本地:docker run -ti --rm -v ${PWD}:/src opensca/opensca-cli
笔者选择了一个自身的python项目,没发现风险:
不知道是不是Docker中没漏洞数据库还是Docker中的自带的漏洞数据库太少导致。再次尝试使用Docker连接其SAAS云端的方式进行扫描,发现可能是Docker内应用程序问题,导致TLS验证失败:
Get "https://opensca.xmirror.cn/oss-saas/api-v1/open-sca-client/aes-key?clientId=SxxxZVL&ossToken=xx-xx-xx-xx-xx": tls: failed to verify certificate: x509: certificate signed by unknown autho
反正核心都是使用opensca-cli
,因此直接使用Github下载的二进制文件进行了本地扫描:
-token xe43dxxf55-xx-xx-xx-xxx -proj "" -path ${待检测目标路径}
云端还是能扫出不少东西的:
下载地址:https://github.com/DependencyTrack/dependency-track参考官方文档:https://docs.dependencytrack.org/getting-started/deploy-docker/这里使用Docker启动,且先不使用数据库:
curl -LO https://dependencytrack.org/docker-compose.yml
docker-compose up -d
根据docker-compose.yml内容,frontend
前端端口是8080,访问8080,使用admin/admin登录:
这里依然以python项目为例,使用python-sbom生成工具生成sbom:https://github.com/CycloneDX/cyclonedx-python
python -m pip install cyclonedx-bom
python3 -m cyclonedx_py -h
python3 -m cyclonedx_py requirements -o out.json
然后到Projects->Create project->Components->Upload BOM上传生成的BOM即可。
发现一个问题,就以python为例,DependencyTrack解析的是requirements
等方式来获取的软件清单,相比于OpenSCA-cli少了很多,比如hostScan项目中的requirements.txt
文件里面的包就是17个,DependencyTrack识别到的就是17个:
而OpenSCA-cli会发现一些依赖的包: