TheWaterbug/alpr-dashboard-patches
GitHub: TheWaterbug/alpr-dashboard-patches
针对 ALPR Dashboard Docker 项目的运行时补丁集,通过异步日志优化解决性能瓶颈,并通过 nginx sidecar 缓解 Next.js CVE-2025-29927 认证绕过漏洞,均无需修改或重建上游镜像。
Stars: 0 | Forks: 0
# ALPR Dashboard 运行时补丁
针对 [algertc/alpr-dashboard](https://github.com/algertc/ALPR-Database) Docker 项目的两个即插即用型补丁。两者均可直接部署,无需修改或重新构建上游镜像。
## 包含内容
### [`logger-fix/`](./logger-fix/) — 异步 logger 与清理限流
将内置的同步日志传输(每次日志调用时进行完整文件读取与重写)替换为每次调用执行一次 `appendFileSync` 的写入器,以及每分钟执行一次的延迟裁剪。同时限流了每次 POST 请求的图像清理扫描频率。
测量影响(130 KB 的 Base64 图像 payload,与真实的 Blue Iris 警报相匹配):原本导致原始服务器无响应(每个测试窗口中 60 个 POST 请求均未完成)的持续车牌识别速率,现在运行时 CPU 占用平稳且保持满吞吐量。
完整的曲面图与原始数据详见 [`logger-fix/perf/`](./logger-fix/perf/)。
### [`middleware-exploit-mitigation/`](./middleware-exploit-mitigation/) — CVE-2025-29927 nginx 叠加层
该镜像使用了 Next.js 15.0.3,该版本易受 [CVE-2025-29927](https://github.com/advisories/GHSA-f82v-jwr5-mffw)(CVSS 9.1,通过 `x-middleware-subrequest` 标头绕过身份验证)攻击。上游已在 Next.js >= 15.2.3 中修复了此问题,但如果不更新上游镜像则无法修补。
此补丁在应用前部署了一个 `nginx:alpine` sidecar,用于剥离每个代理请求中的绕过标头。无需更改应用,也无需重新构建镜像。
## 为什么不向上游提交 PR?
- logger 修复是一个运行时的 monkey-patch,依赖于一个内部标志(`global.__loggerInitialized`)以及 `fileStorage.cleanupOldFiles` 对 `fs/promises.readdir` 的使用。它在当前的 `logger.js` 和存储代码下能正常工作,但这并不是一个“正确”的修复方法——正确的修复应是在上游代码中用非阻塞的实现替换掉 `LimitedLineTransport`。此补丁只是在等待官方修复之前的一种安全运行方式。
- CVE 缓解措施属于部署层面的考量,而非代码更改。它应该放在 compose 配置的叠加层中,而不是在应用镜像内。
这两个补丁的安装和回滚都非常简便,且独立于上游版本。
## 兼容性
已针对截至 2026 年 4 月的 `algertc/alpr-dashboard:latest` 进行了测试。为确保稳定性,请固定到一个已知良好的镜像标签;尤其是 logger 补丁,它依赖于一些可能会随上游更改而发生变动的内部实现细节。
## 许可证
MIT — 详见 [`LICENSE`](./LICENSE)。
标签:ALPR, Blue-Alerts, CISA项目, CVE-2025-29927, Docker, GNU通用公共许可证, MITM代理, Monkey-Patch, Nginx, Node.js, 中间件绕过, 反向代理, 后端开发, 子域名枚举, 安全补丁, 安全防御评估, 安全防护, 异步日志, 性能优化, 数据可视化, 文件读写, 检测绕过, 汽车牌照, 漏洞缓解, 系统安全, 绕过认证, 请求拦截, 车牌数据库, 车牌识别, 运行时补丁