docker公共存储库_查找并修复docker镜像安全漏洞

587a32fc249bbe2414bd1803bd1b56ed.png

容器的出现使开发团队可以创建沙盒环境,以在其中运行和测试应用程序,容器主要由从 docker hub 或其他公共镜像存储库提取的开源镜像组成。

但是这些开源镜像有时可能包含一些漏洞,这些漏洞可能会危害容器的安全,进而危害其主机/服务器。

由于这些容器在主机上运行,因此如果容器不受保护,就可以劫持生产中的容器。

此类攻击的一个很好的例子是特斯拉对未受保护的 Kubernetes 集群的加密劫持攻击。在此攻击中,攻击者能够使用特斯拉的 K8s(Kubernetes)集群提供的 GPU 下载并运行恶意脚本来挖掘加密货币。通过将 CPU 使用率保持在最低水平,并且还可以在特定的时间间隔运行脚本,导致监控很难发现这个问题。

下面我们将研究常见的容器漏洞以及修复它们的可能方法。

容器漏洞

加密劫持

加密劫持是一种攻击,其中恶意脚本被用来窃取设备的计算资源以挖掘加密货币。

最近,在 Docker 上发现了 CVE-2018-15664 的漏洞。 此漏洞使攻击者有可能获得对主机计算机的 root 访问权限。

攻击者除了能够使用主机计算机的 CPU 和 GPU 资源来挖掘加密货币之外,还可以窃取敏感凭据,进行 DoS 攻击,发起网络钓鱼活动等等。

如果容器包含恶意镜像,这些容器会给攻击者提供对整个容器的根访问权限,则它们可能容易受到密码劫持的攻击。 如果 Docker API 暴露在公网上,例如 Tesla,它们很容易受到攻击。

恶意开源镜像

该漏洞可以覆盖主机的 runc 二进制文件,从而使攻击者可以通过 root 用户访问权限来执行命令。 v18.09.2 之前的Docker 引擎使带有攻击者控制镜像的容器容易受到 CVE-2019-5736 漏洞的影响。

建议工程师尽可能利用 docker 提供的官方 Docker 镜像。 毕竟,甚至还有一个由 Docker 赞助的团队,该团队与软件维护者/发布者和安全专家紧密合作,以确保官方 Docker 镜像的安全性。

静态 Dockerfile

容器的镜像是不可变的。 这意味着在构建镜像时,其内容不可更改。 由于镜像中包含的过时程序包/库/镜像也会导致漏洞

因此,将漏洞扫描程序合并到 CI/CD 流程中是一个好主意,以便识别易受攻击的容器镜像。 由于镜像是不可变的,因此建议经常更新程序包、库、镜像

如何查找容器漏洞

前面我们说了利用漏洞如何攻击容器的可能方式。

下面研究下如何找出容器中可能包含的漏洞

使用 Docker Bench for Security

Docker Bench for Security 是一个脚本,用于测试主机/服务器上的所有 Docker 容器,检查关于在生产环境中部署Docker 容器的几十个常见最佳实践,这些测试基于 CIS docker 基准。

如何运行

docker run -it --net host --pid host --userns host --cap-add audit_control     -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST     -v /etc:/etc:ro     -v /usr/bin/docker-containerd:/usr/bin/docker-containerd:ro     -v /usr/bin/docker-runc:/usr/bin/docker-runc:ro     -v /usr/lib/systemd:/usr/lib/systemd:ro     -v /var/lib:/var/lib:ro     -v /var/run/docker.sock:/var/run/docker.sock:ro     --label docker_bench_security     docker/docker-bench-security
641b62f531810e0810cb2f4f46ed3291.png

该脚本运行各种测试,并为每个测试提供 INFO , NOTE , PASS 或 WARN 结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux修改services命令,Linux中service指令都有哪些参数

这是因为没有配置安装服务器配置安装服务器 如下1、 以root登录安装服务器,用命令 rpm –qa | grep tftp 查看是否安装了tftp软件包,如果没有,安装一下(安装软件的方法将在后面的文章中详细介绍)。2、 修改tftp的配置文件,使tftp服务可以随linux开机启动…

vim关闭下一行也是注释_在Vim中注释/取消注释行的快速方法是什么?

我有一个在vi中打开的Ruby代码文件&#xff0c;其中的行注释为#&#xff1a;class Search < ActiveRecord::Migrationdef self.up# create_table :searches do |t|# t.integer :user_id# t.string :name# t.string :all_of# t.string :any_of# t.string :none_of#…

linux中常用安装程序的方法,Linux下常见的软件安装方式

一、Linux源码安装1、解压源码包文件源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩&#xff0c;后缀格式会分别为.tar.gz与.tar.bz2&#xff0c;分别的解压方式&#xff1a;#tar -zxvf File.tar.gz#tar -jxvf File.tar.bz22、切换到解压后的目录#cd File3、准备编…

git status清空_本地删除文件后,git status会显示红色的那个文件。

知道了&#xff0c;感谢大家&#xff1a;正确答案应该是&#xff1a;$ git rm -r 倒计时rm 倒计时/js/countDown.jsrm 倒计时/倒计时整理.htmlWarning: Your console font probably doesnt support Unicode. If you experience strange characters in the output, consider swi…

Linux导出函数控制,linux 下仅导出指定函数的方法

节整理资料时&#xff0c;发现了这个&#xff0c;是两年前在 LOVEUNIX 上的回帖。自己都忘了&#xff0c;贴在这里做个备份。linux 也有导出文件。不用特定的扩展名&#xff0c;且不是在 gcc 中指定参数&#xff0c;而是在 ld 中。写一个导出符号文件&#xff0c;如 symbol 指定…

idea代码补全声明代码_用了这么多年idea,竟然不知道这些代码补全功能

先上图&#xff0c;不知道大家写代码注意到没&#xff0c;因为也没有人告诉我&#xff0c;网上今天才发现这个技巧&#xff0c;所以推荐给大家&#xff0c;如果你知道&#xff0c;那就路过即可。。。if相关定义一个boolean类型的变量flag和一个String类型的变量name来进行测试。…

网站设计软件linux,ubuntu下的网页设计 网页制作软件工具.pdf

ubuntu下的网页设计 网页制作软件工具.pdfubuntu/linux 下的网页设计网页制作软件工具1. Bluefish 是一个基于Gtk 的 HTML 的编辑器&#xff0c;它支持语法加亮&#xff0c;支持HTML 、CSS 、JAVASCRIPT 、Java server pages (JSP) 、Python 、Perl 、SSI 、PHP 、XML 等语言从…

linux安装python2环境_Python基础手册 2 —— Python 环境搭建(Linux)

一、安装python3.4 (CentOS6.5)这里我们选择python3.4版本&#xff0c;首先是因为python3是python发展的趋势&#xff0c;Python2将在2020年被淘汰。其次Python3拥有更好更简洁的语言设计&#xff0c;同时也是因为后期我们的Django项目1.9.5版本适用于python3.4版本。1、 首先我…

Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制

使用shell脚本实现USB设备的加载与文件复制在Linux操作系统中&#xff0c;如果插入一个USB设备&#xff0c;需要用mount挂载命令才能实现这个设备的加载&#xff0c;下面写一个USB设备挂载与文件复制的Shell程序&#xff0c;程序需求&#xff1a;www.2cto.com1、运行时&#xf…

getbook netty实战_Netty 入门教程

前言Netty是一个异步事件驱动的网络应用程序框架&#xff0c;用于快速开发可维护的高性能协议服务器和客户端。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Dukes Choice Award&#xff0c;见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户…

linux环型共享内存,Linux system v 共享内存

system v 共享内存#include #include int shmget(key_t key, size_t size, int shmflg);建立&#xff1a;进程与共享内存的关联关系key_t key&#xff1a;16进制的非0数字。一般有两种方式设置它。第一种:调用fotk函数第二种&#xff1a;直接使用IPC_PRIVATE注意&#xff1a;如…

用python画组合图形的面积_实现五边形面积计算

此课程与《清华编程高手.尹成.带你实战python入门》大体相同&#xff0c;只需购买其中的一门课程。本课程由清华大学尹成老师录制&#xff0c;课程的特色在于讲解原理的同时引入了每个程序员都热衷的黑客技术。python是一种跨平台的计算机程序设计语言&#xff0c;是一种面向对…

linux代码段映射,bss,data,text,rodata,堆,栈,常量段与其各段在物理存储中关系

本文想从linux出发【目前还想可不可以从51单片机出发】&#xff0c;解答程序代码和各种数据结构是如何存储(映射)到存储区的。目前未完成整理&#xff0c;还是初稿的想法。bss段&#xff1a;BSS段(bsssegment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英…

python求123逆序数_应用Python来计算排列中的逆序数个数

在一个排列中&#xff0c;如果一对数的前后位置与大小顺序相反&#xff0c;即前面的数大于后面的数&#xff0c;那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。一个排列中所有逆序总数叫做这个排列的逆序数。也就是说&#xff0c;对于n个不同的元素&am…

linux共享文件可读写,在Ubuntu中设置samba共享可读写文件夹

在Ubuntu中设置samba共享可读写文件夹发布时间:2007-03-15 01:01:08来源:红联作者:XLooking首先当然是要安装samba了&#xff0c;呵呵&#xff1a;sudo apt-get install sambasudo apt-get install smbfs下面我们来共享群组可读写文件夹&#xff0c;假设你要共享的文件夹为&…

python频谱分析_基于Python的频谱分析(一)

1、傅里叶变换傅里叶变换是信号领域沟通时域和频域的桥梁&#xff0c;在频域里可以更方便的进行一些分析。傅里叶主要针对的是平稳信号的频率特性分析&#xff0c;简单说就是具有一定周期性的信号&#xff0c;因为傅里叶变换采取的是有限取样的方式&#xff0c;所以对于取样长度…

python 武沛齐_武沛齐 - 主页

${content}你输入的邮件地址曾经通过${type}激活了本站帐号&#xff0c;请使用${type}帐号直接登录。课程习题&#xff1a;提示请选择一个答案提交查看正确答案下一题${option}: ${content}{if multiple}{else}{/if}{if defined("xlist")&&!!xlist.length}{l…

linux全过程图解图片,安装 Mandriva Linux全过程《图解》

wide 于 2006-02-26 10:29:58发表:设定帐号Mandriva 是一个可供多人使用的作业系统&#xff0c;使用者必须先在系统中拥有帐号才可以使用。而登入时&#xff0c;则必须输入帐号及密码&#xff0c;验证无误后方可进入。 本章将介绍如何在安装时设定使用者帐号及密码。何谓系统管…

mnist torch加载fashion_Pytorch加载并可视化FashionMNIST指定层(Udacity)

加载并可视化FashionMNIST在这个notebook中&#xff0c;我们要加载并查看 Fashion-MNIST 数据库中的图像。任何分类问题的第一步&#xff0c;都是查看你正在使用的数据集。这样你可以了解有关图像和标签格式的一些详细信息&#xff0c;以及对如何定义网络以识别此类图像集中的模…

linux 查看socket fd,linux socket中select()函数以及FD_ZERO FD_SET FD_CLR FD_ISSET

linux socket非阻塞编程时常见到如下的code:socket s;.....fd_set set;.....struct timeval tv;while(1){FD_ZERO(&set);//将你的套节字集合清空FD_SET(s, &set);//加入你感兴趣的套节字到集合,这里是一个读数据的套节字stv.tv_sec 3;tv.tv_usec 0;select(maxf…