micromize-dev/micromize

GitHub: micromize-dev/micromize

Micromize 是一款利用BPF LSM为容器化应用提供内核级边界防护的安全硬化工具,解决容器逃逸和主机入侵问题。

Stars: 48 | Forks: 6

Micromize Logo

为云原生容器提供内核级强化的边界防护。 Micromize 使用 [BPF-LSM](https://docs.ebpf.io/linux/program-type/BPF_PROG_TYPE_LSM/) 来强制执行良好行为的云原生容器应有的规范。Micromize 基于 [Inspektor Gadget](https://github.com/inspektor-gadget/inspektor-gadget) 构建。 ## 问题所在 容器依赖命名空间、控制组、seccomp 和 LSM,但它们仍然暴露了内核攻击面。配置错误或权限过高的工作负载会导致容器逃逸原语、主机被容器变异、运行时偏离镜像,以及未定义的内核行为。 现有的工具可能检测到这些问题,但极少能消除它们。 ## 设计理念 Micromize 不关心容器内部发生了什么。相反,它强制执行边界。我们不会扫描加密货币挖掘程序,因为使用 Micromize,未经授权的二进制文件首先就无法执行。您无法有效地防范每一个编写不良的应用程序,但您可以保证,除非它是原始镜像的一部分,否则什么都不会运行。 Micromize 假设容器是不可变的、可丢弃的、不会变异主机的,并且对权限是明确声明的。 如果您的工作负载违反了这些假设,Micromize 会阻止它或强制要求进行明确的安全姿态决策。 ## Micromize 的功能 目前,Micromize 将 eBPF 程序附加到 LSM 钩子并强制执行: - **严格的容器边界** — 阻止文件系统逃逸和主机访问 - **能力限制** — 防止通过 `unshare`/`clone`/`setns` 进行权限提升 - **Ptrace 阻止** — 消除基于 ptrace 的调试/注入攻击 - **套接字限制** — 阻止容器内使用 `AF_ALG`(内核加密用户空间 API)套接字,缓解 CVE-2026-31431 及相关攻击面 - **执行完整性** — 通过 `bpf_ima_file_hash` 进行软件物料清单(SBOM)+ 运行时哈希验证 策略在容器启动前加载,并在执行时强制执行。没有运行时替换。没有学习模式。内核原生强制执行。 ## 快速入门 ### Docker 容器 ``` docker run -it \ --name micromize \ --pid=host \ --privileged \ -v /sys/fs/bpf:/sys/fs/bpf \ -v /sys/kernel/debug:/sys/kernel/debug \ -v /sys/kernel/security:/sys/kernel/security:ro \ -v /bin:/host/bin \ -v /proc:/host/proc \ -v /run:/host/run \ -v /usr:/host/usr \ ghcr.io/micromize-dev/micromize:latest ``` ### Kubernetes (Helm) 设置 ``` # 解析 micromize 镜像摘要以进行自排除筛选 DIGEST=$(crane digest ghcr.io/micromize-dev/micromize:) helm install micromize ./charts/micromize \ --namespace micromize \ --create-namespace \ --set image.tag= \ --set image.digest=$DIGEST ``` ### CLI 标志 | 标志 | 默认值 | 描述 | |---|---|---| | `--enforce` | `true` | 强制执行限制(阻止)而非审计模式 | | `--verbose` / `-v` | `false` | 调试日志记录 | | `--filter-namespaces` | `""` | 逗号分隔的 K8s 命名空间进行监控(`!` 前缀用于排除)。`micromize` 命名空间总是被排除。 | | `--filter-image-digest` | `""` | 过滤掉使用此镜像摘要的容器,不对其进行监控 | | `--disable-gadgets` | `""` | 要禁用的 gadget 逗号分隔列表(例如 `ptrace-restrict,cap-restrict`) | | `--exempt-label` | `micromize.dev/exempt` | 用于标记命名空间为豁免的 Kubernetes 标签键(值必须为 `true`)。仅在启动时评估。设置为 `""` 可禁用。 | ## 要求 - Linux 内核 5.18+ - 启用 BPF LSM(`CONFIG_BPF_LSM=y`,启动时需包含 `lsm=...,bpf`) - 启用 IMA(`CONFIG_IMA=y`)— 通过 `bpf_ima_file_hash` 实现执行完整性所必需 ## 开发 构建 gadget 需要 [`ig`](https://inspektor-gadget.io/docs/latest/quick-start#linux) CLI v0.49+。 ``` # 构建所有内容(gadgets + binary)。需要 sudo。 make build-all # 运行 tests make test ``` ## 状态 Micromize 正在积极开发中。欢迎贡献。
标签:0day挖掘, Docker镜像, eBPF技术, EVTX分析, GitHub Advanced Security, SBOM, Web截图, 内核安全, 子域名突变, 安全加固, 安全技术, 安全策略执行, 容器安全, 容器逃逸防护, 执行完整性, 攻击防护, 文件系统访问控制, 日志审计, 权限提升防护, 漏洞缓解, 硬件无关, 请求拦截