热门标签 | 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/



推荐阅读
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • GSIOpenSSH PAM_USER 安全绕过漏洞
    漏洞名称:GSI-OpenSSHPAM_USER安全绕过漏洞CNNVD编号:CNNVD-201304-097发布时间:2013-04-09 ... [详细]
  • OWASP(安全防护、漏洞验证工具)开放式Web应用程序安全项目(OWASP,OpenWebApplicationSecurityProject)是一个组织 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 由于同源策略的限制,满足同源的脚本才可以获取资源。虽然这样有助于保障网络安全,但另一方面也限制了资源的使用。那么如何实现跨域呢,以下是实现跨域的一些方法。 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
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社区 版权所有