当前位置: 首页 > news >正文

甲方安全建设之研发安全-SCA

前言

大多数企业或多或少的会去采购第三方软件,或者研发同学在开发代码时,可能会去使用一些好用的软件包或者依赖包,但是如果这些包中存在恶意代码,又或者在安装包时不小心打错了字母安装了错误的软件包,则可能出现供应链攻击。因此去识别采购或者自研项目中的软件包,来保证其版本足够新、不存在恶意代码是解决供应链的一项重要措施,而SCA(软件成分分析)可以帮助完成这一动作。

OpenSCA-cli

下载地址:
https://github.com/XmirrorSecurity/OpenSCA-cli
使用方法:
首先使用了Docker的方式,快速扫描本地:docker run -ti --rm -v ${PWD}:/src opensca/opensca-cli
笔者选择了一个自身的python项目,没发现风险:

image.png

不知道是不是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 ${待检测目标路径}

云端还是能扫出不少东西的:

image.png

DependencyTrack

下载地址:
https://github.com/DependencyTrack/dependency-track
参考官方文档:
https://docs.dependencytrack.org/getting-started/deploy-docker/
这里使用Docker启动,且先不使用数据库:

curl -LO https://dependencytrack.org/docker-compose.ymldocker-compose up -d

根据docker-compose.yml内容,frontend前端端口是8080,访问8080,使用admin/admin登录:

image.png
帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

这里依然以python项目为例,使用python-sbom生成工具生成sbom:
https://github.com/CycloneDX/cyclonedx-python

python -m pip install cyclonedx-bompython3 -m cyclonedx_py -hpython3 -m cyclonedx_py  requirements -o out.json

然后到Projects->Create project->Components->Upload BOM上传生成的BOM即可。

image.png

发现一个问题,就以python为例,DependencyTrack解析的是requirements等方式来获取的软件清单,相比于OpenSCA-cli少了很多,比如hostScan项目中的requirements.txt文件里面的包就是17个,DependencyTrack识别到的就是17个:

image.png

而OpenSCA-cli会发现一些依赖的包:

image.png

http://www.lryc.cn/news/334611.html

相关文章:

  • [html]网页结构以及常见标签用法
  • 【C语言】if语句选择题
  • ZLMediaKit ubantu 下编译
  • 什么是stable diffusion
  • C++ list链表模拟实现
  • LangChain - PromptTemplate
  • spring cloud gateway openfeign 联合使用产生死锁问题
  • 【WPF应用37】WPF基本控件-DatePicker的详解与示例
  • GitHub教程:最新如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细步骤讲解(图文教程)
  • 编译Nginx配置QUIC/HTTP3.0
  • 【JavaWeb】Day38.MySQL概述——数据库设计-DQL
  • 如何使用Java和RabbitMQ实现延迟队列(方式二)?
  • String.valueOf() 将各种数据类型的值转换为它们的字符串
  • 2024-04-08 NO.6 Quest3 自定义交互事件
  • 素描进阶:深入探索如何表现石膏像的质感
  • flutter组件_AlertDialog
  • 供应链领域主题:生产制造关键术语和系统
  • k8s_入门_kubelet安装
  • 主干网络篇 | YOLOv5/v7 更换骨干网络之 HGNetv2 | 百度新一代超强主干网络
  • JUC:ScheduledThreadPoolExecutor 延迟任务线程池的使用
  • js str字符串和arr数组互相转换
  • 计算机网络——40各个层次的安全性
  • OpenHarmony实战:Combo解决方案之W800芯片移植案例
  • 【数据结构】数组(稀疏矩阵、特殊矩阵压缩、矩阵存储、稀疏矩阵的快速转置、十字链表)
  • nginx 配置访问地址和解决跨域问题(反向代理)
  • 支持向量机(SVM)白话之个人理解(学习记录)
  • 【运输层】TCP 的可靠传输是如何实现的?
  • K8s技术全景:架构、应用与优化
  • Java的异常机制
  • 考虑预同步的虚拟同步机T型三电平逆变器并离网MATLAB仿真模型