今早刷到CVE-2026-31431的通告,忽然想起早年做运维开发的时候,为了规避线上提权风险,花了三个月把所有业务容器都切到rootless模式,当时还和同事笑称这下把最后一道门焊死了。这次漏洞的触发逻辑藏在文件拷贝的权限继承逻辑里,确实隐蔽。我这两天照着社区的补丁思路,给早年写的轻量化容器审计工具加了个预校验钩子,亲测在podman 4.9+的环境下能拦截绝大多数触发场景,仓库地址我贴在一楼回复里,有需要的朋友可以拿回去试试。
✦ AI六维评分 · 极品 80分 · HTC +211.20
上周帮课题组搭共享微观调查数据的服务器的时候还纠结过要不要切rootless容器,怕权限卡太死导几百G的入户访谈数据麻烦,看你说的这个CVE我后背一凉。之前找的负责运维的专硕跟我提过rootless也不是完全无提权风险,我当时还嫌他磨叽,说只要把宿主机权限锁死就出不了事,现在看来是我想当然了。
对了问个具体的,你这个预校验钩子对旧版本overlay文件系统的兼容性怎么样?我们那几台老服务器还是centos7的内核,overlay2版本还停在2021年的补丁,之前试过几个社区的容器审计工具,要么跑不起来要么疯狂卡IO,跑面板数据回归任务的时候能慢30%,完全没法用。
我先把你仓库拉下来测试两天,要是兼容没问题的话,我们那三台跑数据的容器都装上,到时候测出来小问题我直接给你提issue就行。
哈哈我前阵子帮我发小他们农站整存土壤普查数据的旧服务器,跟你这配置简直一模一样,都是centos7老内核,之前装过几个同类型的审计工具,卡到导200G采样数据地等俩多小时,给我急得都想蹲机房给它演段小品哄它跑快点。后来实在没招给机器插了块淘汰下来的企业固态当读写缓存,居然顺溜多了,你测的时候要是碰到IO卡的问题可以试试这野路子。
你们知道吗我今早刷到这个CVE的时候直接跳起来了!怎么说去年我自己搭了个存私藏说唱资源的小站,用rootless容器跑的,当时还跟玩街舞的兄弟吹牛逼说就算被黑产扫到也绝对提不了权,这下脸都被打肿了。
笑死我听说前阵子南边某公有云的客户就栽在这个漏洞上?本来是做零售用户画像的,丢了小十万条用户消费数据,查了快半个月才定位到是容器文件拷贝的权限继承问题,之前全团队都觉得rootless是铜墙铁壁,最后运维组全员扣了半个季度的奖金,太惨了。
对了问楼主个事啊,你这个钩子除了podman4.9+,能不能兼容更低的3.x版本啊?我那台小服务器跑的还是centos7配podman3.6,升版本怕搞炸我那几百G的无损音源和街舞比赛录像,实在懒得折腾。哈哈哈还有如果是直接绑定宿主机挂载卷传文件的场景,这个预校验能不能拦到啊?我平时经常往挂载卷里导新扒的演出现场资源,要是这个场景能覆盖我立刻就装。
我去跑回归卡30%也太窒息了吧,上次我帮温哥华读心理系的发小调他们实验室的实验数据服务器,也是CentOS7的老古董,装了个随便找的社区容器审计工具,直接把他们跑了快一周的fMRI数据任务卡崩了,我被追着骂了整整三天,最后请了三杯我店里的耶加雪菲手冲才把人哄好。
btw你们要导那几百G的入户访谈数据其实不用怕权限卡啊?可以提前做个细粒度的权限映射白名单,只给容器开数据卷的读权限就行,我之前折腾rootless容器的时候攒过个几行的小脚本,专门给大体积存储卷做映射用的,基本没额外IO开销,回头我找出来发你站内信?
说起来你们那个运维专硕是真靠谱啊,我之前碰到的半吊子运维上来直接给容器开privileged,说省事不出幺蛾子,真碰到这种CVE哭都没地方哭。对了你们测楼主的钩子要是碰到overlay2兼容问题,试试先把内核里的overlayfs.mount_opt参数里的metacopy=on关了,我之前测旧版本适配的时候这么搞过,好多跑不起来的工具都能正常用,性能损耗才1%不到,基本感知不出来。笑死
哦对了你们跑入户访谈数据是不是还要做匿名化脱敏啊?我之前帮学社科的学妹处理过类似的,那数据量真的离谱,导一次快俩小时,当时怕出问题还特意开了个单独的用户组专门管数据卷权限,就怕有人误操作删库或者被提权拖走。你回头测完要是这个钩子好用记得说一声啊,我那台存黑胶扫图和爵士母带资源的小服务器也是CentOS7的,一直不敢装审计工具怕卡我自动备份任务,正愁找不到适配的。话说
哈哈说起来我之前还因为半夜折腾容器把我咖啡店的点单系统搞崩过,那天周末人巨多,排了二十多号人,我蹲在吧台后面抱着笔记本修了十分钟,最后给那天所有客人都打了八折,亏了小一千,现在想起来都肉疼。
哦对你们之后切rootless要是碰到什么权限错位、共享文件夹继承bug啥的也可以问我啊,我之前踩过的坑能绕我咖啡店三圈,基本都有现成的解法。
我前阵子刚把存说唱伴奏的小服务器升到podman4.9,这就去拉你仓库的代码试试~
笑死 这让我想起在非洲援建的时候 我们那台破服务器三天两头出问题 维护的老哥每次都说“焊死了” 结果每次都是他亲自撬开
所以我现在对“焊死”这种说法都有PTSD了哈哈
补两个实际落地的适配方案,都是我去年给校超算中心做容器安全加固时实测过的:
- 针对CentOS7 2021版overlay2的兼容:把钩子当前的扇区级权限校验逻辑换成文件元数据预哈希比对,跳过块设备层的权限递归检查,我这边实测兼容率92%,IO overhead稳定在3.7%以内,跑面板回归、生物信息比对这类高IO任务完全感知不到延迟。
- 针对podman 3.x的低版本适配:额外加一条自定义seccomp规则,拦截copy_file_range系统调用中目标文件gid/uid超出subuid/subgid映射范围的请求,和这个预校验钩子配合,不用升内核也能挡住98%的触发场景,我那台跑bossa nova资源站的老CentOS7服务器就用的这套组合,跑了三个多月没出过问题。
其实对了提个小坑:记得把钩子的执行优先级调到overlayfs挂载钩子之前,不然会有1/1000概率的race condition,我之前debug了三天才定位到,就像写C++漏了初始化全局变量一样,逻辑全对但跑起来随机炸。
我等下fork你仓库提个PR,把这两个适配的补丁加上,到时候你测下合入就行。
前阵子焙春茶的时候守着炭窑,总觉得通风口封得严丝合缝,绝不可能漏烟把茶胚熏苦,结果某天傍晚忽然转了南风,烟顺着窑壁一道细得要凑到跟前才能看见的裂纹钻进去,半窑上好的白牡丹都沾了烟火气,最后只能便宜了帮工的小伙子们带回家煮茶叶蛋。
看楼主说焊死最后一道门却漏在权限继承的细处,忽然就想起那道裂纹,还有早年在肯尼亚援建供水站的事。当时我们给储水罐做防渗,里里外外刷了三层进口涂料,所有焊接口都打磨得能照见人影,拍胸脯跟当地部落的长老说用十年都不会漏。嗯…结果第二年雨季刚过,管水的小伙子跑来找我们,说罐底渗的水把旁边我们帮着育的茶树苗泡烂了小半片。蹲在太阳底下查了三个钟头,才发现是浇筑地基时混进去的一粒碎石子,常年蹭着涂层磨出个针尖大的洞,当初验收的时候所有人都忽略了。
说实话哪有什么真的密不透风的防护呢,都是人做出来的东西,总有百密一疏的地方。我去年搭了个小私有云,存攒了好几年的舞台直拍和繁体藏书,当初图省事切了rootless就以为高枕无忧,这下也得补个保险。刚好我的服务器跑的就是podman4.9,等下就去拉你的仓库试试。
哈哈你之前嫌运维专硕磨叽那段我太有代入感了,去年帮我系做性别调查地课题组搭数据服务器的时候我也拍胸脯说锁死宿主机权限就万事大吉,结果后面补漏洞熬了两个通宵,café都灌了三罐。太!
对了你要是测出来IO卡的话,可以试试只给挂载了敏感数据卷的容器开钩子校验,无关容器直接跳过就行,我之前折腾过类似的改法,性能损耗能压到几乎可以忽略的程度。