01 / 基础设施
一个应用镜像,覆盖不了整个栈
应用可以装进镜像,宿主机运行的 Docker、Kubernetes 与共享内核仍需单独准备。Metarget 将这些层也纳入场景构建。
CLOUD NATIVE SECURITY
把指定版本的 Docker、Kubernetes、Linux 内核与应用靶场装进同一套构建流程。Metarget 是我在绿盟科技星云实验室工作期间创建的开源项目,让云原生安全实践从环境准备开始。
工业界开源项目 · 原创环境示意 · OID Asia 2021
绿盟科技 / 星云实验室
可复用的场景定义
代码开放,共同积累场景
OpenInfra Days Asia 项目演讲
验证一次漏洞可能很快,准备合适的系统却要反复找版本、装组件、改配置。云原生环境把这些工作分散到了多个层次。
01 / 基础设施
应用可以装进镜像,宿主机运行的 Docker、Kubernetes 与共享内核仍需单独准备。Metarget 将这些层也纳入场景构建。
02 / 测试条件
特定组件版本、特权 Pod、敏感路径挂载都能成为测试条件。场景定义用类别和依赖表达它们,再分发给对应的安装或部署逻辑。
03 / 组合与复用
在准备好的基础设施上叠加应用靶场,形成多层测试环境。命名场景可以重复调用,用于漏洞复现、攻防训练与防御验证。
切换内核、运行时、Kubernetes 或特权 Pod 场景,观察配方、依赖与环境层的对应关系。点击构建步骤查看说明,或点击环境层了解它的作用。
name: cve-2022-0847
class: kernel
type: container_escape
dependencies:
- name: kernel
version: "5.8"
从场景目录读取 CVE-2022-0847 的 YAML。名称、类别与 dependencies 把场景转换成可解析的配方。
对应 CLI 命令 / 仅展示
./metarget cnv install cve-2022-0847容器共享宿主机内核。内核场景需要安装相应内核包,并在重启后进入目标版本。
安装前提
适配的 Ubuntu 版本;root;安装后重启
配方目标
指定内核包与启动配置
依据仓库 YAML 与安装、部署代码原创制作。浏览器只展示配方与流程,不安装组件、不执行 PoC;环境准备与漏洞触发是后续不同步骤。 cnv.py ↗ · kernel_installer.py ↗
场景名是入口,组件版本和资源清单是执行依据。版本类任务交给安装器;配置和应用交给 Kubernetes 资源部署器。
当你已知需要的基础组件,直接指定版本。为场景准备底座,也可以单独管理 Docker、Kubernetes 或内核。
加载 vulns_cn 中的 YAML,按 class 分流。既能安装指定版本的组件,也能部署带有危险配置或挂载的 Pod。
读取应用 desc.yaml 所列的资源,在已有集群中应用清单。服务访问方式可选,--external 会生成 NodePort 配置。
场景定义使用 YAML SafeLoader 读取,资源部署前创建 metarget 命名空间。相关实现: vuln_loader.py ↗ · internal.py ↗
选择一个场景,查看仓库实际声明的依赖与前提。这里展示 8 个精选配方,不以数量或演示动画代替现场验证。
显示 8 个精选配方 / 共 8 个示例;并非仓库完整目录
场景配方 / 源码快照
配方通过安装 Docker 18.03.1,准备研究 runC 容器逃逸的运行时环境。它没有把独立的 runc 包列为依赖。
配方与代码核对于 2026-10-10,固定源码快照 3cd1d62 ↗。声明版本不等于在任意系统都能安装成功;具体场景还受发行版、软件源、镜像与重启条件影响。
Metarget: Auto-Construction of Vulnerable Cloud Native Infrastructure。OpenInfra Days Asia 2021 的工业界演讲介绍项目、实践案例及其防御价值。项目介绍与仓库记录设计和使用方式。
实际部署会修改系统组件,需要 root 权限。请使用独立测试环境,遵循仓库中针对系统版本和隔离环境的说明。
./metarget cnv install cve-2019-5736 ./metarget cnv install cve-2018-1002105 ./metarget cnv install privileged-container ./metarget appv install dvwa --external
从 README 的多层场景示例选取四条命令:依次准备运行时、编排层、配置 Pod 和应用。真实部署仍需核对系统及各步骤前提;它们不自动执行漏洞利用。