首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Runc 容器初始化和容器逃逸

runc 功能相对单一,即针对特定的配置,构建出容器运行指定进程,它不能直接用来构建镜像,kubernetes 依赖的如 cri-o 这类 CRI,在 runc 基础上增加了通过 API 管理镜像,容器等功能...create runc list # 列出创建状态的容器 runc start runc list runc delete runc 容器初始化流程 runc 目前初始化大致流程如下图所示,其中一些步骤经过了简化: ?...CVE-2019-5736: 改写 runc 容器逃逸 在 2019 年初,爆发了一个容器严重漏洞,运行 docker 的容器环境,普通用户可以通过特殊构建的镜像,运行后改写主机上的 runc,从而进一步进行入侵操作...一个恶意构建的镜像可以将自己的入口改成/proc/self/exe,由于容器入口需要通过 runc 来 clone+execve 启动,这样就使得一个普通的用户容器,访问并执行了主机上的 runc。

93120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CVE-2024-21626|runc容器逃逸漏洞

    0x00 前言 runc是一个遵循oci标准的用来运行容器的命令行工具。runc的使用非常灵活,可以与各种容器工具和平台集成,如Docker、Kubernetes等。...0x01 漏洞描述 由于内部文件描述符泄漏,本地威胁者可以通过多种方式实现容器逃逸: 通过使新生成的容器进程(来自runc exec)在主机文件系统命名空间中拥有一个工作目录,或诱使特权用户运行恶意镜像并允许容器进程通过...runc run 访问主机文件系统,从而获得对主机文件系统的访问权限。...这些攻击还可用于覆盖半任意主机二进制文件,从而实现容器逃逸。.../blog/docker-security-advisory-multiple-vulnerabilities-in-runc-buildkit-and-moby/ https://blog.csdn.net

    83910

    CVE-2019-5736 runc容器逃逸漏洞复现

    0X1 漏洞详情 Docker、containerd或者其他基于runc的容器运行时存在安全漏洞,攻击者可以通过特定的容器镜像或者exec操作可以获取到宿主机的runc执行时的文件句柄并修改掉runc的二进制文件...0X2影响范围:Docker版本 runc版本 <= 1.0-rc6的环境,请自行根据厂商建议进行修复。...然后运行命令:docker run -d cve /bin/bash -c "tail -f /dev/null" 备份docker-runc文件,在kali下该文件目录在/usr/sbin/目录下:...然后进入容器内: ? 到root目录下,运行run.sh脚本 ? kali下开启另一个终端进行端口监听: ? 退出容器然后再重新进入容器,漏洞被触发,shell反弹过来 ? ? 至此,漏洞复现完毕!...0X4 漏洞修复 升级docker或者runC

    4.2K30

    升级Docker后重启容器出现错误Unknown runtime specified docker-runc

    前言 笔者维护的Docker版本为1.13.1,,在对其版本升级到18.06.1之后,启动旧版本创建的容器时遇到这个错误: [root@template-centos7 /data]#docker start...mysql33 Error response from daemon: Unknown runtime specified docker-runc Error: failed to start containers...: mysql33 解决过程 在查阅资料后,得知因为「当您从不兼容的版本升级docker并且升级后无法启动docker容器时会出现这种情况」,解决办法如下: [root@template-centos7.../root]#grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g' [root...template-centos7 /root]#systemctl stop docker [root@template-centos7 /root]#systemctl start docker 改完之后重启dokcer,容器就可以启动了

    2.8K20

    真正运行容器的工具:深入了解 runc 和 OCI 规范

    有一个关于如何运行容器和管理容器映像的开放容器计划(OCI) 和规范。runc 符合此规范,但还有其他符合 OCI 的运行时。...使用 runc 运行 OCI 应用程序包 我们准备好将我们的应用程序包作为名为 的容器运行test: runc run test 接下来发生的事情是我们最终进入了一个新创建的容器内的 shell!...它有类似start,stop和 run的命令来做容器的生命周期管理,但是容器的配置总是来自文件,而不是来自命令行: { "ociVersion": "1.0.1-dev",...runc 如何找到我们的容器?...runc 最重要的部分是它跟踪 OCI运行时规范。尽管几乎每一个容器,这些天与runc催生,它不具有与runc催生。

    3.7K41

    【云原生攻防研究】— runC再曝容器逃逸漏洞(CVE-2024-21626)

    漏洞背景及介绍 RunC是一个基于OCI标准的轻量级容器运行时工具,用来创建和运行容器,该工具被广泛应用于虚拟化环境中,然而不断披露的逃逸漏洞给runC带来了严重的安全风险,如早期的CVE-2019-5736...此外,在 runC 1.1.12版本之前,runC在调用后也没有验证最终工作目录是否位于容器的挂载namespace内。...攻击方式2:runC exec容器逃逸攻击 攻击方式1中的fd泄露和缺乏工作目录验证同样也适用于runC exec命令。...漏洞原理分析 触发CVE-2024-21626漏洞的核心问题是runC run 或者 runC exec 的过程中存在没有及时关闭的fd,从而导致文件描述符泄漏在容器环境中,用户可以通过这个文件描述来进行容器逃逸...具体来说,在容器启动过程中,runC会设置容器的Cgroup信息,runC run 命令会创建一个用于操作 Cgroup 的接口类型对象 cgroups.Manager,根据runC 操作 Cgroup

    2.1K10

    从 docker 到 runC

    docker-containerd 负责管理所有本机正在运行的容器,而一个 docker-containerd-shim 进程只负责管理一个运行的容器,它相当于 docker-runc 的一个封装,充当...实际上,在容器启动的过程中,docker-runc 进程是作为 docker-containerd-shim 的子进程存在的。...docker-runc 进程根据配置找到容器的 rootfs 并创建子进程 bash 作为容器中的第一个进程。...当这一切都完成后 docker-runc 进程退出,然后容器进程 bash 由 docker-runc 的父进程 docker-containerd-shim 接管。...事实上 docker-containerd-shim 的存在是非常有必要的,其目的有如下几点: 它允许容器运行时(即 runC)在启动容器之后退出,简单说就是不必为每个容器一直运行一个容器运行时(runC

    64060

    IOC容器对Bean的生命周期

    Bean的生命周期在IOC容器中,Bean的生命周期经历以下几个阶段:2.1 实例化Bean首先,IOC容器通过反射机制实例化Bean对象。...IOC容器对Bean生命周期的控制IOC容器通过以下几个方面来控制Bean的生命周期:3.1 配置元数据IOC容器通过配置元数据,如XML配置文件、注解或Java配置类等,了解Bean的创建、属性赋值、...配置元数据告诉IOC容器应该如何处理Bean的生命周期。3.2 反射机制IOC容器使用反射机制来实例化Bean对象并执行其方法。反射机制允许IOC容器在运行时动态地创建对象、调用方法和访问属性。...总结IOC容器对Bean的生命周期进行了全面的控制,从实例化到销毁的整个过程都由容器负责管理。通过配置元数据、反射机制和依赖注入,IOC容器能够在适当的时机创建、初始化和销毁Bean对象。...因此,在Java开发中,合理使用IOC容器对Bean的生命周期进行管理,是非常重要的。

    25220

    Docker-番外篇之containerd

    理解这些概念你才能更好的理解 名字 核心功能 下级 是否可以独立使用 强关联Kubernetes Docker 构建镜像,容器生命周期管理 Containerd 是 是 Containerd 容器生命周期管理...Runc 是 是 Runc 容器运行时(创建容器环境) Cgroup/Namespace 是 否 Podman 构建镜像,容器生命周期管理 Runc 是 否 OCI 容器规范 容器规范,镜像规范 否...核心功能:容器生命周期管理(通过调用Runc来实现),他是有守护进程的,这守护进程可以接受标准API输入。...Runc runc 是一个轻量级的容器运行时工具,它基于 OCI(Open Container Initiative)标准,提供了容器生命周期管理、进程隔离、文件系统隔离和网络隔离等功能。...Podman Podman 可以看作是一个更加轻量级、独立的容器运行时工具,适合于单机容器管理。 核心功能:构建镜像,容器生命周期管理(通过调用Runc来实现),简单来说他也是一个二进制包。

    5200

    浅析容器运行时奥秘——OCI标准

    规范了容器的配置、执行环境和生命周期管理。...runC是一个符合OCI规范的轻量级容器运行时生命周期管理工具,最初由Docker贡献给社区,来源于Docker原有的运行时管理部分。...BUNDLE CREATED OWNER [root@breeze runc]$ 至此完成了runC对容器的整个生命周期管理过程展示。...runC只是个命令行工具,不是常驻进程,对于大规模的编排需求,无法通过网络调用实现。同样,也无法实现整个容器生命周期的自动化管理。 bundle的管理。...容器的bundle没有统一的管理,“ship anywhere”的愿望看起来可望不可及。 bundle的生命周期管理现在还没解决。runC的delete操作并不是清理bundle。 网络能力弱。

    4.7K43

    docker 启动容器提示:Error response from daemon: unknown or invalid runtime name: docker-runc

    服务器docker版本升级/或者重装后,导致不兼容问题 错误:Error response from daemon: unknown or invalid runtime name: docker-runc...Error: failed to start containers: 495f12d4ced5 2、解决方式 更改/var/lib/docker/containers目录中的文件参数,把docker-runc...替换为runc 命令如下:grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'...递归搜索目录和子目录,只列出含有匹配的文本行的文件名,而不显示具体的匹配内容 xargs:衔接执行之前得到的值;总体意思是把/var/lib/docker/containers中含有‘docker-runc...’的文件搜索出来,并把‘docker-runc’字符为runc

    2.2K50

    runc 1.0-rc7 发布之际

    发布周期不明确; 为了给相关的 runtime 足够的时间进行修正/升级,以及规范版本生命周期等,最终决定了发布 runc 1.0-rc6。...2019 年 2 月 11 日在 oss-security 邮件组[2]正式批露该漏洞,攻击者可以利用恶意容器覆盖主机上的 runc 文件,从而达到攻击的目的;(具体的攻击方式此处略过),注意不要轻易使用来源不可信的镜像创建容器便可有效避免被攻击的可能...简单补充下可能被攻击的方式: 运行恶意的 Docker 镜像 在主机上执行 docker exec 进入容器内 关于容器安全或者容器的运行机制,其实涉及的点很多,我在去年的一次线上分享 《基于 GitLab...的 CI 实践》[3] 有提到过 Linux Security Modules(LSM)等相关的内容,对容器安全感兴趣的朋友可以对 LSM 多了解下。...将 runc 可执行程序放到只读文件系统上,可避免被覆盖;2. 启动容器时,启用 SELinux; 3. 在容器内使用低权限用户或者采用映射的方式,但保证用户对主机上的 runc 程序无写权限。

    70230

    Docker、Containerd、RunC分别是什么

    什么是RunC 上一篇文章《真正运行容器的工具:深入了解 runc 和 OCI 规范》已经讲清楚了Runc与OCI。这里再讲解一下概念。...它更像是一个服务器,它侦听传入请求以启动、停止或报告容器的状态。在引擎盖下_containerd_使用RunC。然而,_containerd_不仅仅是一个容器生命周期管理器。...image.png containerd 是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性,containerd 可以负责干下面这些事情: 管理容器的生命周期(从创建容器到销毁容器) 拉取/...推送容器镜像 存储管理(管理镜像及容器数据的存储) 调用 runc 运行容器(与 runc 等容器运行时交互) 管理容器网络接口及网络 上图是 Containerd 整体的架构。...其中,containerd 独立负责容器运行时和生命周期(如创建、启动、停止、中止、信号处理、删除等),其他一些如镜像构建、卷管理、日志等由 Docker Daemon 的其他模块处理。

    4.2K53
    领券