摘要:Python语言的开放性和易用性使其成为最常用的编程语言之一. 其形成的PyPI生态系统在为开发者提供便利的同时, 也成为攻击者进行漏洞攻击的重要目标. 在发现Python漏洞之后, 如何准确、全面地评估漏洞影响范围是应对Python漏洞的关键. 然而当前的Python漏洞影响范围评估方法主要依靠包粒度的依赖关系分析, 会产生大量误报; 现有的函数粒度的Python程序分析方法由于上下文不敏感等导致存在准确性问题, 应用于实际的漏洞影响范围评估也会产生误报. 提出一种基于静态分析的面向PyPI生态系统的漏洞影响范围评估方法PyVul++. 首先构建PyPI生态系统的索引, 然后通过漏洞函数识别发现受漏洞影响的候选包, 进一步通过漏洞触发条件验证漏洞包, 实现函数粒度的漏洞影响范围评估. PyVul++改进了Python代码函数粒度的调用分析能力, 在基于PyCG的测试集上的分析结果优于其他工具(精确率86.71%, 召回率83.20%). 通过PyVul++对10个Python CVE漏洞进行PyPI生态系统(385855个包)影响范围评估, 相比于pip-audit等工具发现了更多漏洞包且降低了误报. 此外, 在10个Python CVE漏洞影响范围评估实验中, PyVul++新发现了目前PyPI生态系统中仍有11个包存在引用未修复的漏洞函数的安全问题.