Lobsters | 原文链接 | 2026-09-09 收录

把容器镜像一路加固到只剩两个文件:少一层攻击面就少一分风险

来源: grepular.com — 2026-09-05

概述

作者在新服务器上跑 Flatcar Container Linux,决定从源头加固每一个容器——以 PowerDNS Recursor 官方镜像为例,它本质是「Debian + 一个 pdns-recursor」,约 355MB、7,500 个文件。他用 Musl 把 pdns-recursor 静态编译成单个可执行文件(连同 rec_control 共两个),在 Alpine 里构建后拷进 scratch 空镜像,用 PGP 校验源码包,还主动砍掉 SNMP 与 zoneToCache 的 url 支持——它们拖进来的依赖历史上满是 CVE。接着加了一个自研 C 启动器:在交给 pdns 前先用内核 Landlock 把文件系统与网络访问框到最小集合,再配一份基于 strace 生成的 seccomp.json 白名单,只放行应用真会用到的系统调用(memfd_create 这种「无文件」提权路径自然不在列)。运行时层再叠 read_only、noexec 小 tmpfs、cap_drop:[ALL]、no-new-privileges 等 docker 选项。CI 每天追踪 PowerDNS 两条稳定线自动重建镜像、把构建时间戳设成 epoch 以免误触发「变更」,扫描出的真实依赖漏洞再用 OpenVEX 声明哪些不适用;所有产物用 cosign 基于 GitLab OIDC + Fulcio 证书签名并计入 Rekor 透明日志,任何人都能 cosign verify 验证镜像确实出自他的 CI 主分支。

核心要点

金句

If the process is compromised, there is no shell and no system tools for the attacker to abuse, making their life more difficult.
返回 Lobsters 首页