久违的更新:最近的研究、漏洞复现与一些思考
好久没更新了,博客还是得写点东西,不然感觉像是荒废了。不过写博客这事,还是随缘,毕竟日常事情够多的,没必要硬凑内容。
这一阵子主要在搞漏洞复现和一些技术积累,趁着空闲整理下笔记,顺便聊聊最近遇到的一些有意思的东西。
近期的安全研究
1. CVE-2023-2868:邮件安全网关远程命令执行漏洞
前段时间研究了一下 CVE-2023-2868,这是一个 Barracuda Email Security Gateway(ESG)上的 RCE 漏洞。官方 CVSS 评分 9.8,基本上是“不能不修”的级别。
这个漏洞本质上是对 TAR 格式解析的处理不当,导致攻击者可以构造特定的压缩包,在解析时触发远程命令执行。这个漏洞比较麻烦的一点是,它早在 2022 年 10 月就被 APT 组织利用了,而 Barracuda 直到 2023 年 5 月才公开披露,等于白送攻击者大半年时间。
漏洞复现过程就不细讲了,核心点在于:
- 需要找到一个受影响版本的 ESG 设备(虚拟环境搭建不算难,但环境获取相对麻烦)。
- 发送特制的 TAR 附件,利用 ESG 解析过程中的漏洞执行任意命令。
- 观察服务器端返回情况,确认成功 RCE。
Barracuda 官方建议是尽快升级,但考虑到 APT 组织长期利用的可能性,真正的解决方案其实是直接换设备,因为攻击者可能早就植入了后门。补丁能修漏洞,但不能抹掉入侵历史。
2. 某些老旧 Web 框架的安全问题
最近看了一些老项目,发现很多仍然在用老旧的 Web 框架,有的甚至是 2016 年左右的代码,安全性堪忧:
- Spring 早期版本的 Actuator 接口暴露问题
/actuator/env、/actuator/configprops这些接口在很多老项目里默认是开放的,一些开发者甚至没有权限控制机制,直接导致环境变量和应用配置泄露。 - Shiro 反序列化漏洞
还见到有些项目用的 Shiro 版本很老,rememberMe反序列化漏洞依然存在,虽然 Shiro 早就修了,但这些项目压根没升级。
有时候搞这些老项目,比分析 0day 还麻烦,因为很多代码根本没文档,甚至得靠翻源码才能搞清楚逻辑。更别提修复了,动一块就容易牵扯一大片。
近期一些杂谈
1. Docker 网络的奇葩问题
之前遇到过 Docker 内部网络通信异常的问题,起初以为是 iptables 规则的问题,后来发现是 Docker 自己的 FORWARD 规则导致的。这个问题在某些内核版本上表现得特别明显,需要手动调整 iptables 规则,或者直接换用 host 网络模式才能绕过。
Docker 网络看似简单,实则细节很多,尤其是 bridge 网络的 NAT 处理,稍微配置不当就会影响容器间通信。
2. 开源项目的依赖地狱
最近尝试部署一个开源安全工具,发现它的依赖管理做得一团糟,Python 版本要求极其严格,某些依赖甚至只支持 Python 3.7,而大部分现代 Linux 发行版默认已经是 3.10+ 了。最终只能手动创建 venv,然后一点一点解决依赖冲突。
现在有些开源项目在 package 版本管理上真的很随意,导致部署难度陡增。要么是 lock file 不维护,要么是 hardcode 某些老旧库,体验实在是不太行。
未来的更新计划
说是计划,其实也就是随缘更新。如果有值得分享的漏洞分析、研究或者技术坑,就写点东西记录一下,但不强求。
主要还是看工作安排,博客只是个副业,更新频率就别太在意了。
这次先写到这里,下次有时间再更新。