热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

镜像扫描工具预研

镜像扫描工具预研1、背景​最近给了个任务,准备接入容器镜像的漏洞扫描工具,于是需要先预研,看看接入哪一种开源工具。因为在镜像的构建过程中,镜像封装的代码、软件会有不同程度的缺陷

镜像扫描工具预研

1、背景

​ 最近给了个任务,准备接入容器镜像的漏洞扫描工具,于是需要先预研,看看接入哪一种开源工具。因为在镜像的构建过程中,镜像封装的代码、软件会有不同程度的缺陷,这些缺陷一旦被恶意的者利用,入侵到内部系统进行一系列非法的操作(破坏系统的正常运行和窃取私密的信息)。当缺陷成为漏洞,将会对镜像的安全造成很大的隐患。


2、目的

​ 寻找能够支持商用的开源扫描镜像漏洞的工具。


3、开源协议简介

​ 开源工具一般都会遵循一定的开源协议,哪些协议能够商用,哪些不能商用,在开源协议中都有一定的说明,故先对协议做一定的说明。

Apache License 2.0 :商业软件最爱, 主要条件是要求保留原始版权和许可声明。同时向贡献者明确授予专利权。使用者可以自由修改,进行商业使用,大型项目可以不同的条款分发,没有开源要求,修改源代码需要记录变更。

BSD 3-Clause "New" or "Revised" license:允许商业发布和销售。使用者可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。主要条件是要求尊重代码作者的著作权,即包含原始版权和免责声明(二进制形式分发必须分发文档中包含版权申明及免责声明),且未经事先特别书面许可,不可以用开源代码的“作者/机构的名字”或“原来产品的名字”做市场推广。

BSD 2-Clause "Simplified" or "FreeBSD" license:比3-Clause少一个条目,去掉了“不可以用开源代码的“作者/机构的名字”或“原来产品的名字”做市场推广。”.

GNU General Public License: 商业软件绕开,GPL不允许修改后和衍生的代码做为闭源的商业软件发布和销售。

GNU Library or "Lesser" General Public License (LGPL):允许商业软件代码动态link到LGPL类库。注意:不可以静态链接,否则你的代码也必须用LGPL协议开源。(即:商业软件可以动态使用,但不能修改)

Mozilla Public License 2.0:修改的版本需要保持原始版权申明。编译版本需和可获得MPL协议下的源码。修改源代码需要记录变更。

Common Development and Distribution License:商业软件可用,也可以修改。可以自行发布许可,允许公共版权使用,提供专利保护,无专利费

Eclipse Public License version 2.0:商业软件可用,也可以修改,无需开源。不过将本程序包含在商业产品中的贡献者需要承担因代码而产生的侵权责任,及对所有其他贡献者的相关损失

image-20220520151252847


4、开源镜像扫描工具


4.1、Trivy 扫描器

image-20220520145911660


4.1.1、简介

官网:https://aquasecurity.github.io/trivy/v0.28.0/

github:https://github.com/aquasecurity/trivy

Trivy(tri 发音为 trigger,vy 发音为 envy)是一个简单而全面的漏洞/错误配置扫描器,用于容器和其他工件。 软件漏洞是软件或操作系统中存在的故障、缺陷或弱点。 Trivy 检测操作系统包(Alpine、RHEL、CentOS 等)和特定语言包(Bundler、Composer、npm、yarn 等)的漏洞。 此外,Trivy 会扫描基础设施即代码 (IaC) 文件,例如 Terraform 和 Kubernetes,以检测使您的部署面临攻击风险的潜在配置问题。 Trivy 易于使用。 只需安装二进制文件,您就可以开始扫描了。 扫描所需要做的就是指定一个目标,例如容器的图像名称。


4.1.2、使用协议/语言

Apache License Version 2.0/Golang


4.1.3、扫描类型

1、Container Images:容器镜像

2、Filesystem and Rootfs:文件系统/根文件系统

3、Git Repositories:代码仓库

4、Kubernetes:集群中使用到的镜像/配置


4.1.4、使用

1、安装trivy应用即可

2、不需要另外安装数据库

3、每次扫描前都会下载最新的CVE漏洞库


4.1.5、扫描镜像及扫描结果

扫描镜像:

# trivy image -f json -o results.json nginx:latest

扫描结果:

"Results": [
{
"Target": "nginx:latest (debian 10.10)",
"Class": "os-pkgs",
"Type": "debian",
"Vulnerabilities": [
{
"VulnerabilityID": "CVE-2011-3374",
"PkgName": "apt",
"InstalledVersion": "1.8.2.3",
"Layer": {
"DiffID": "sha256:764055ebc9a7a290b64d17cf9ea550f1099c202d83795aa967428ebdf335c9f7"
},
"SeveritySource": "debian",
"PrimaryURL": "https://avd.aquasec.com/nvd/cve-2011-3374",
"DataSource": {
"ID": "debian",
"Name": "Debian Security Tracker",
"URL": "https://salsa.debian.org/security-tracker-team/security-tracker"
},
"Title": "It was found that apt-key in apt, all versions, do not correctly valid ...",
"Description": "It was found that apt-key in apt, all versions, do not correctly validate gpg keys with the master keyring, leading to a potential man-in-the-middle attack.",
"Severity": "LOW",
"CweIDs": [
"CWE-347"
],
"CVSS": {
"nvd": {
"V2Vector": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
"V3Vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N",
"V2Score": 4.3,
"V3Score": 3.7
}
},
"References": [
"https://access.redhat.com/security/cve/cve-2011-3374",
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=642480",
"https://people.canonical.com/~ubuntu-security/cve/2011/CVE-2011-3374.html",
"https://seclists.org/fulldisclosure/2011/Sep/221",
"https://security-tracker.debian.org/tracker/CVE-2011-3374",
"https://snyk.io/vuln/SNYK-LINUX-APT-116518",
"https://ubuntu.com/security/CVE-2011-3374"
],
"PublishedDate": "2019-11-26T00:15:00Z",
"LastModifiedDate": "2021-02-09T16:08:00Z"
}]}]

4.1.6 优/劣势

​ 优势:工具功能专一,仅提供扫描漏洞功能,而且能扫描文件、代码仓库、k8s集群使用到的镜像等。并不提供其它功能。


4.2、anchore


4.2.1 简介

官网:https://engine.anchore.io/docs/general/

github:https://github.com/anchore/anchore-engine

​ Anchore Engine 是一种开源扫描工具,用于评估 Docker 镜像的安全性。Anchore 报告让您深入了解过时的包版本和依赖项中的潜在漏洞。


4.2.2 使用协议/语言

Apache License Version 2.0/Python


4.2.3 扫描类型



  • Image metadata

  • Image layers

  • Operating System Package Data (RPM, DEB, APKG)

  • File Data

  • Ruby Gems

  • Node.JS NPMs

  • Java Archives

  • Python Packages

  • .NET NuGet Packages

  • File content


4.2.4 使用

1、以往只能安装Anchore Engine,运行Anchore Engine、db实例,再使用CLI进行镜像注册,扫描、获取访问结果等交互

2、也可以使用后来的内联扫描方式,下载脚本,由脚本进行配置数据库、注册表功能,使用脚本进行直接扫描(未成功)。

3、扫描前需要启动db实例,db中postsq;,maridb有已知的漏洞库数据。


4.2.5 扫描镜像及结果

​ 使用Anchore Cli 操作Docker Compose进行镜像的添加、扫描,获取扫描结果

# 添加到Docker Compose注册表
# docker-compose exec api anchore-cli image add docker.io/library/debian:7
# 等待Docker Compose进行镜像分析完成
# docker-compose exec api anchore-cli image wait docker.io/library/debian:7
# 获取镜像扫描结果
# docker-compose exec api anchore-cli --json image vuln docker.io/library/debian:7 all

扫描结果Json:

{
"imageDigest": "sha256:b495f952df67472c3598b260f4b2e2ba9b5a8b0af837575cf4369c95c8d8a215",
"vulnerabilities": [
{
"feed": "vulnerabilities",
"feed_group": "debian:11",
"fix": "None",
"nvd_data": [
{
"cvss_v2": {
"base_score": 1.9,
"exploitability_score": 3.4,
"impact_score": 2.9
},
"cvss_v3": {
"base_score": 4.7,
"exploitability_score": 1.0,
"impact_score": 3.6
},
"id": "CVE-2017-14159"
}
],
"package": "libldap-2.4-2-2.4.57+dfsg-3",
"package_cpe": "None",
"package_cpe23": "None",
"package_name": "libldap-2.4-2",
"package_path": "pkgdb",
"package_type": "dpkg",
"package_version": "2.4.57+dfsg-3",
"severity": "Negligible",
"url": "https://security-tracker.debian.org/tracker/CVE-2017-14159",
"vendor_data": [],
"vuln": "CVE-2017-14159",
"will_not_fix": false
}]
}

4.2.6 优/劣势

​ 劣势:可以通过cli或者api调用。但是每次扫描前需要先将镜像添加到Docker Compose中进行分析,等待分析好了才能获取扫描结果。


4.3、Clair


4.3.1 简介

官网:https://www.redhat.com/en/topics/containers/what-is-clair

github:https://github.com/quay/quay

​ Clair 是一个开源项目,它提供了一个通过对 appc 和 docker 容器中的漏洞进行静态分析来监控容器安全性的工具。Clair 采用 API 驱动的分析引擎,可以逐层检查容器中是否存在已知的安全漏洞。利用 Clair,您可以轻松构建服务,对容器漏洞进行持续监控


4.2.2 使用协议/语言

Apache License Version 2.0/Python


4.2.3 扫描类型

​ 支持以下类型的关方容器镜像



  • Ubuntu

  • Debian

  • RHEL

  • Suse

  • Oracle

  • Alpine

  • AWS Linux

  • VMWare Photon

  • Python


4.2.4 使用

​ 参考集成了clair的工具进行安装使用

https://github.com/arminc/clair-scanner/tree/v13

https://www.elephdev.com/index.php/cDocker/301.html?ref=addtabs&lang=en

1、下载集成了clair的客户端工具

2、启动clair-local-scan扫描镜像

3、安装clair-db,下载漏洞库


4.2.5 扫描镜像及结果

# clair-scanner -r php-report.json --ip 172.17.0.1 php:7.2

扫描结果Json:

{
"image": "php:7.2",
"vulnerabilities": [
{
"featurename": "linux",
"featureversion": "4.19.160-2",
"vulnerability": "CVE-2022-0435",
"namespace": "debian:10",
"description": "A stack overflow flaw was found in the Linux kernel's TIPC protocol functionality in the way a user sends a packet with malicious content where the number of domain member nodes is higher than the 64 allowed. This flaw allows a remote user to crash the system or possibly escalate their privileges if they have access to the TIPC network.",
"link": "https://security-tracker.debian.org/tracker/CVE-2022-0435",
"severity": "Critical",
"fixedby": "4.19.232-1"
},
{
"featurename": "openssl",
"featureversion": "1.1.1d-0+deb10u4",
"vulnerability": "CVE-2022-1292",
"namespace": "debian:10",
"description": "The c_rehash script does not properly sanitise shell metacharacters to prevent command injection. This script is distributed by some operating systems in a manner where it is automatically executed. On such operating systems, an attacker could execute arbitrary commands with the privileges of the script. Use of the c_rehash script is considered obsolete and should be replaced by the OpenSSL rehash command line tool. Fixed in OpenSSL 3.0.3 (Affected 3.0.0,3.0.1,3.0.2). Fixed in OpenSSL 1.1.1o (Affected 1.1.1-1.1.1n). Fixed in OpenSSL 1.0.2ze (Affected 1.0.2-1.0.2zd).",
"link": "https://security-tracker.debian.org/tracker/CVE-2022-1292",
"severity": "Critical",
"fixedby": "1.1.1n-0+deb10u2"
}]
}

4.2.6 优/劣势

​ 劣势:针对官方文档进行操作,有许多卡点,参考了已集成了clair的开源工具进行测试,可以直接扫描指定镜像。


5、扫描能力比对

image-20220526100955131


6、总结

AnchoreClair相比较Trivy出现的时间更早,但是扫描的结果发现Trivy能发现更多的漏洞,尤其是对alphine镜像;现在大部分镜像的基础镜像都会选择alpine,因为它更加轻量级而且漏洞相对较少

​ 而AnchoreClair对一些alpine镜像是扫描不出来漏洞的,但是使用Trivy却能够找到;之前部署的Harbor版本使用的扫描器是Clair,扫描alphine镜像之后没有发现漏洞,就认为是安全的;现在Harbor2.0之后是使用Trivy作为默认扫描器,对一些alphine就能够扫描出来漏洞了

Trivy相对于其他两个来说,安装更加的简单,使用也更加的方便;并且能够支持多种类型的文件的扫描,目前也是Harbor默认的扫描器

参考:

https://boxboat.com/2020/04/24/image-scanning-tech-compared/

https://www.a10o.net/devsecops/docker-image-security-static-analysis-tool-comparison-anchore-engine-vs-clair-vs-trivy/



推荐阅读
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 本文介绍在使用vmware中配置centos6.5时遇到的网络问题,包括host-only和natip的配置,以及无法上网的原因。同时提供了解决方法,包括去掉host-only配置文件中的gateway。 ... [详细]
  • OWASP(安全防护、漏洞验证工具)开放式Web应用程序安全项目(OWASP,OpenWebApplicationSecurityProject)是一个组织 ... [详细]
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
author-avatar
WenFJ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有