PKP-WAL LESS代码注入漏洞深度解析:通过X-Forwarded-Host头实现SSRF与文件读取

本文详细分析了PKP Web应用库中一个关键的LESS代码注入漏洞(CVE-2025-67891)。该漏洞允许攻击者通过操纵X-Forwarded-Host头,在特定配置下执行恶意LESS代码,可能导致服务器端请求伪造或本地文件读取。影响范围涵盖Open Journal Systems等多个学术出版平台。

漏洞概要

PKP Web应用库(PKP-WAL)版本3.4.0-10及更早版本,以及版本3.5.0-3及更早版本中存在一个LESS代码注入漏洞。该漏洞位于PKPTemplateManager::compileLess()方法中,可能影响基于PKP-Lib构建的Open Journal Systems (OJS)、Open Monograph Press (OMP)和Open Preprint Systems (OPS)等学术出版系统。

受影响的软件

  • 软件链接

    • 官方网站:https://pkp.sfu.ca
    • GitHub仓库:https://github.com/pkp/pkp-lib
  • 受影响版本

    • PKP-WAL 3.4.0-10及之前版本
    • PKP-WAL 3.5.0-3及之前版本

技术细节分析

漏洞原理

该漏洞存在于PKPTemplateManager::compileLess()方法中,该方法调用Less_Parser::parse()时传递了一个"baseUrl"变量。此变量通过$request->getBaseUrl()方法构造,但未经身份验证的攻击者可以通过X-Forwarded-Host HTTP头部操控此变量。

攻击向量

攻击者可以操纵X-Forwarded-Host头部,将恶意LESS代码注入到样式表解析过程中。成功利用此漏洞需要满足特定配置条件:config.inc.php脚本中的allowed_hosts设置必须为空字符串。

潜在影响

  • LESS代码注入:攻击者可以在服务器端执行任意LESS代码
  • 服务器端请求伪造(SSRF):通过注入的代码发起对内网服务的请求
  • 本地文件读取:可能读取服务器上的敏感文件内容

解决方案状态

截至目前,官方尚未提供针对此漏洞的解决方案。

漏洞披露时间线

日期 事件
2025年10月21日 向供应商发送漏洞通知
2025年10月24日 供应商回复称GitHub问题#7649已解决此问题
2025年10月25日 向供应商说明这应被视为新的独立问题
2025年11月12日 申请CVE标识符
2025年12月12日 CVE-2025-67891分配完成
2025年12月23日 发布本安全公告

参考信息

  • CVE编号:CVE-2025-67891
  • 漏洞发现者:Egidio Romano
  • 原始公告:http://karmainsecurity.com/KIS-2025-13

安全建议

  1. 检查您的PKP-WAL版本是否在受影响范围内
  2. 审查config.inc.php中的allowed_hosts配置,确保其包含明确的允许主机列表
  3. 监控官方更新,及时应用安全补丁
  4. 考虑对输入HTTP头部进行严格验证和过滤
  5. 实施网络层防护,限制对管理界面的访问

注意:本漏洞的完整利用需要特定配置条件,但建议所有使用受影响版本的用户采取预防措施,等待官方修复方案发布。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计