BastionPHP/Bastion

安全

在本地核查服务器上各 PHP 构建是否真的已修复,并追踪入侵痕迹。

57
0
Go
MIT
上线 3 天

如果你手上有一台跑着多个 PHP 构建的主机,需要确认它们对一个具体漏洞是否真的打了补丁,而不只是看 php -v 的输出,Bastion 值得花时间看一眼。它仍处于 pre-release 阶段,没有发布二进制,内置漏洞库范围也很窄,应当当作调查辅助工具,而非通用扫描器。

解决什么问题

运维听到 PHP 漏洞消息时,通常的做法是跑一下 php -v 或查包管理器,然后默认版本号能反映真实状态。这并不可靠:发行版可能在不改上游版本号的情况下回填修复,主机面板会在系统 PHP 之外再装一套,而某个 worker 进程可能仍在运行磁盘上已被替换的旧程序。Bastion 把这一步换掉:它盘点包管理器、面板、容器和运行中进程里的 PHP 构建,再结合上游发布、包版本、厂商重建日期和补丁指纹,判断每个构建是否已修复。结果是带证据的逐项结论,还可以顺带追踪入侵迹象,并把两者打包成离线 HTML 报告。

有什么不同

核心机制是“先证据、后结论”,而不是简单比对版本号。每个构建会得到 fixed、vulnerable、likely-vulnerable 或 unknown,证据不足时工具会刻意保留 unknown,而不是把缺失信息变成一张“干净”的通行证。CLI 和浏览器端检查共用同一套判定规则,README 称 Go 与浏览器实现共享测试向量;漏洞数据与痕迹规则都签入仓库,判定逻辑可直接审阅。

代价在于范围和定位。Bastion 只检查、只报告,不打补丁、不重启服务、不删文件、不隔离发现,修复仍需你自己做。它也明确不是通用的 PHP 依赖扫描器:内置库覆盖的是 PHP2Shell(CVE-2026-109618 与 CVE-2026-109619),作者也说明发现某个构建并不代表存在厂商修复证据。README 还提醒,构建已修复不能证明此前没有发生过入侵。

谁值得试

适合:Linux 上的系统管理员或应急响应人员,有具体理由排查 PHP2Shell 暴露面,并且希望拿到离线 示例报告 用于交接。不适合:想要通用 PHP 漏洞扫描器、自动修复,或在 Windows 上用 CLI 的人。

使用条件与边界

需要在 Linux 或 macOS 上用 Go 1.24+ 和 Make 从源码构建,目前没有已发布的二进制。提升权限可以扩大对其他用户进程、容器文件系统和系统日志的覆盖,但 README 说明对自己账户可读的文件可以不用 sudo 起步。覆盖并不均匀:Linux 支持最广,进程命名空间和 /proc 检查是 Linux 专有,macOS 构建没有这些检查。发现某个构建与拿到有证据支持的补丁结论是两回事。导出的报告还可能包含主机名、路径和匹配片段。

HotRepo 点评

HotRepo 最早在 2026-10-24 记录到该项目;在 2026-10-25 的新项目榜(不是总榜)上它以 57 个总星数位列第 14。这只是一个成立两天的仓库的快照,不是增长数据,现有记录也不足以判断热度能否延续。采用前应先核对 漏洞数据 是否覆盖你主机上的 PHP 版本。

本文由 AI 根据项目 README 生成,更新于 2026年10月25日,以项目官方文档为准。