报告标题:PyFEX:分析 Python 程序中隐藏的行为
报告时间:9月23日13:00-14:30
报告地点:理科大楼B407
报告摘要:
随着大语言模型逐渐参与软件开发,开发者需要审视的不仅是生成代码的功能是否
正确,还包括代码及其第三方依赖是否引入了超出预期的行为。例如,一个能够正确处
理本地文件的程序,也可能通过所依赖的软件包将敏感数据发送至外部服务器。因此,
理解程序实际执行了什么,是评估软件安全性、进一步检查其是否符合开发者意图的重
要基础。
然而,揭示 Python 程序行为尤其是恶意行为面临多重困难。动态生成的代码和混
淆机制增加了静态分析的难度;环境检测与条件触发机制可能使恶意逻辑在分析环境中
保持隐藏;缺失的文件、依赖或远程服务又可能导致动态分析提前终止。此外,隐藏在
特定函数中的恶意行为,往往不会在软件包安装或导入时被触发。这些因素共同限制了
现有分析方法能够观察到的程序行为。
已有研究通过改进分类模型提升恶意软件检测能力,但分类器的判断仍受限于分析
过程能够提供的行为特征。本工作关注更上游的行为可见性问题:如何揭示常规分析未
能观察到的行为,为后续检测提供更丰富的特征与证据。
本报告介绍 PyFEX,一种面向 Python 威胁分析的强制执行框架。PyFEX 在 CPython
解释器层面探索常规执行未覆盖的分支,并在执行因缺失环境或数据而失败时,通过合
成对象支持后续分析。其核心思想是:即使无法获得某个值的具体内容,仍可以保留该
值的来源及后续使用关系,从而揭示潜在的敏感数据访问与外传行为。同时,PyFEX 结
合路径与状态合并机制控制探索开销,并主动分析常规入口未调用的函数,以扩大行为
覆盖范围。
在此基础上,我们构建了恶意软件包检测系统 PyFEXScan,利用 PyFEX 生成的执
行轨迹进行行为分析。在为期 90 天的实际部署中,系统扫描了 50,427 个 PyPI 软件包,
并发现经人工确认的 212 个此前未知的恶意软件包;这些软件包在被发现时已累计下载
91,648 次。报告最后将讨论如何进一步结合程序行为证据、开发者意图与使用场景,为
LLM 辅助开发中的代码审查提供支持。
报告人简介:
王蒙现为德国 CISPA 亥姆霍兹信息安全中心的博士研究生,导师为 Ali Abbasi,主
要研究方向为程序分析、系统安全与固件安全,关注如何利用程序语义分析发现难以检
测的安全威胁。此前,他曾在亚马逊云科技(AWS)担任安全工程师,从事自动化web
漏洞检测工具开发;曾在UVA与 Yonghwi Kwon 开展研究,并在南洋理工大学(NTU)
师从prof. Mo Li开展科研实习。