成果分享|[IEEETSE2025]PHPJoy:“更全更快”的新一代PHP静态分析框架

admin 2026-01-21 01:00:09 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 复旦大学与香港理工大学推出PHPJoy静态分析框架,提出扩展代码属性图E-CPG及缓存预取策略,解决PHP动态特性导致的语义缺失与分析效率瓶颈。该工具在测试中大幅提升语义覆盖并降低76%开销,于333个应用中发现53个0-day漏洞,源码已开源供使用。 综合评分: 100 文章分类: 代码审计,安全工具,WEB安全,应用安全,漏洞分析


cover_image

成果分享 | [IEEE TSE 2025] PHPJoy:“更全更快”的新一代PHP静态分析框架

原创

复旦白泽战队 复旦白泽战队

复旦白泽战队

2026年1月20日 17:20 上海

导语

复旦大学系统软件与安全实验室与香港理工大学的研究团队合作,针对现有基于代码属性图的PHP静态分析技术存在“语义缺失”与“效率低下”两大痛点,提出了一种全新的基于扩展代码属性图的分析框架。

该研究成果的论文”PHPJoy: A Novel Extended Graph-Based PHP Code Analysis Framework”已被软件工程领域国际顶级期刊IEEE Transactions on Software Engineering (TSE)录用 。PHPJoy通过构建扩展代码属性图(E-CPG)和创新的“缓存-预取”查询策略,成功在333个知名PHP应用中发现了53个先前未知的0-day漏洞

目前,PHPJoy源码已在GitHub上开源:

https://github.com/seclab-fudan/PHPJoy

论文链接:

https://ieeexplore.ieee.org/abstract/document/11181216

研究背景:

现有图分析技术的“阿喀琉斯之踵”

基于代码属性图(Code Property Graph, CPG)的静态分析方法,在Java、C等语言中已展现出强大能力。然而,当面对现代PHP应用时,这类技术却频频“失准”,主要受限于两大核心挑战:

  • 动态特性引发严重漏报:PHP广泛使用动态文件包含(include $path)、复杂的类继承结构以及细粒度的字段级数组访问(如 $info[U_TOKEN])等动态特性。这些特性使得程序的真实执行路径难以静态还原。同时,当前主流技术(如PHPJoern)通常将项目视为一组孤立的源文件,既无法准确解析跨模块的函数调用目标,也难以追踪嵌套数组中特定字段的数据流向。综上,现有技术生成的代码属性图中充斥着大量“断链”,关键污点路径被直接切断,导致真实漏洞在检测时被遗漏。
  • 大规模分析的效率瓶颈:现有基于代码属性图分析的静态技术普遍采用“全图遍历”的查询策略,即对整个程序图进行统一扫描。然而,安全分析的重心往往在于对“从用户输入(source)到危险函数(sink)”的局部路径的验证。这种“大水漫灌”式的分析方式,会将大量计算资源浪费在与漏洞无关的冗余代码上,极易触发分析超时,难以支撑WordPress、Dolibarr等百万行级PHP项目的实际审计需求。

正因如此,亟需一种既能精准建模PHP动态语义、又能聚焦关键路径的新型分析范式。

PHPJoy的破局之道:E-CPG与高效查询

为了解决上述挑战,研究团队提出了一种“精细化分析+高性能查询”的融合思路——PHPJoy。

1. 第一阶段:构建扩展代码属性图(E-CPG)——让语义“看得懂”

传统CPG在PHP面前“失语”,根源在于无法理解其动态语义。PHPJoy为此设计了扩展代码属性图(E-CPG),通过两项关键技术实现深度语义还原:

  • 跨模块语义融合:引入了模块依赖图(MDG)和类层次图(CHG)。MDG通过启发式规则解析动态include路径,将分散的文件连接成整体,自动重建文件间的包含关系;CHG则通过精准解析extends、implements和trait,完整还原复杂的继承与组合结构,打通跨文件、跨类的调用链。
  • 字段级程序分析:针对 $info[U_TOKEN] 或 $obj->dynamicMethod() 等细粒度动态访问,PHPJoy采用上下文敏感 + 字段敏感的数据流分析。通过后向类型推断,它能准确识别数组字段或对象属性的语义角色,补全传统工具因“看不懂”而断裂的数据流与控制流边,大幅降低漏报率。

2. 第二阶段:面向安全的高效查询——只查“该查的”

有了精准的图,还需高效的引擎。PHPJoy摒弃“全图扫描”的低效模式,转而构建安全导向的轻量查询框架

  • 缓存与预取策略:安全规则(如污点分析)通常由多个基础查询组合而成。PHPJoy采用“自底向上”策略,将中间查询结果缓存为可复用的子图,避免重复计算。
  • 双线程并行加速:引入并行机制,一个线程专注执行安全逻辑,另一个线程提前从图数据库预取相关数据并更新缓存。这种流水线式设计显著减少I/O等待,使大规模项目的静态分析效能大幅提升。

研究成果

研究团队在GitHub上选取了333个星标超过500的流行PHP应用(总代码量超1.4亿行)对PHPJoy进行了全面评估:

  1. 语义图构建更丰富:与SOTA工具PHPJoern相比,PHPJoy构建的图边总数增加了23.76%。其中,函数调用边的数量大幅提升167.52%,这意味着大量原本“断链”的跨文件、动态方法调用被成功还原,为后续精准分析打下坚实基础。
  2. 代码分析更高效:借助独创的缓存与预取策略,PHPJoy将运行时分析开销降低了76.54%(与主流技术PHPJoern在相同测试集上对比)。
  3. 0-day漏洞检测:PHPJoy在实战中成功发现了53个全新的高危漏洞(0-day),涵盖了XSS(40个)、任意文件读写(7个)、SQL注入(2个)、RCE(2个)等多种类型。
  4. 漏洞披露与修复:截至论文发表时,已有17个漏洞获得了官方确认和修复(涉及GLPI、Dolibarr等知名项目),充分证明了PHPJoy在真实场景下的实用价值。

第一作者

施游堃,香港理工大学计算学系博士后研究员,在罗夏朴(Daniel Xiapu Luo)教授指导下工作。他于2024年6月取得复旦大学网络空间安全博士学位,导师为张源教授与杨珉教授。主要研究方向为Web应用安全,在USENIX Security、IEEE S&P、ACM CCS、NDSS、TIFS等网络安全顶级会议与期刊上发表10余篇论文(7篇一作/共一),荣获IEEE S&P 2025与ACM CCS 2025杰出论文奖、ACM SIGWEB China 2025优秀博士论文奖,并入选2026-2028年度香港理工大学杰出博士后研究计划。他的研究成果已在开源社区发现超500枚安全漏洞,技术原型已在阿里巴巴、华为等头部企业落地应用。此外,施游堃系复旦大学网安竞赛战队Whitzard的联合创始人,曾多次参与全球顶尖CTF赛事,荣获10余项冠军奖项。

素材:施游堃

排版:柏天浩

责编:邬梦莹

审核:林楚乔、张琬琪、洪赓

复旦白泽战队

一个有情怀的安全团队

还没有关注复旦白泽战队?

公众号、小红书搜索:复旦白泽战队也能找到我们哦~


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:复旦白泽战队 复旦白泽战队 复旦白泽战队《成果分享 | [IEEE TSE 2025] PHPJoy:“更全更快”的新一代PHP静态分析框架》

评论:0   参与:  0