
当前开发趋势是在开发阶段使用大量软件包,即便它们只提供微不足道的功能,仅由11行代码组成。当我们将其与非常宽松的发布新包策略结合起来时,就会看到针对开发者的恶意攻击呈上升趋势。威胁行为者采用了多种不同的方法:
这些仅仅是开发者可能自我危害的几种技术示例。而由于 PyPI 或 NPM 等仓库上传内容没有监控流程,之前的 incidents 完全是靠运气发现的。我们的目标是改善这一现状。
我们创建了一个旨在大规模扫描源代码的框架(例如整个 PyPI 仓库),用于查找异常、潜在恶意意图以及漏洞。该框架也设计为可按需扫描源代码,例如当开发者安装某个包时,或针对任意文件/目录集。当前实现针对 Python 语言和 PyPI,但设计上支持扩展其他语言(例如 JavaScript 和 NPM)。
用例集包括但不限于:
高度优化的混合分析引擎实现了这一点。分析在完全安全的环境中进行,使用静态代码分析,无需任何代码执行。Aura 核心引擎分析从源代码解析出的 AST 树,执行行为分析和代码执行流程。该引擎还支持通过一组规则(如常量传播、折叠或静态评估)重写 AST 树;这些是编译器用于优化代码的技术。这就是这种分析方法被称为“混合”的原因,因为它以完全安全的部分评估增强了静态分析,使我们能够击败简单的混淆机制。
下面,您可以看到由 Aura AST 转换引擎识别的不同源代码“混淆”技术的展示:

Aura 的核心部分是分析源代码中的异常或潜在漏洞。Aura 内置了多个分析器,用于查找异常,例如在 setup 脚本中使用 eval;其他分析器检查文件系统结构(非源代码),例如查找泄露的凭据、硬编码的 API 令牌等。这些分析器生成我们称之为 hits 的内容,定义发现的异常,并可包含评分,用于计算扫描数据的 aura 安全值。建议根据输入数据的功能对呈现的异常做出合理判断。例如,requests 库包含网络相关调用是完全正常的,而图像处理库通过网络发送数据则不应出现。还支持输出 JSON 格式的数据,适用于大规模仓库扫描或集成到其他产品中。有关其他组件的描述和使用,请参阅文档)。


本项目采用 GPLv3 许可证 - 详见 LICENSE.txt 文件。框架的部分内容包含与其他产品的(可选)集成,例如 r2c 平台、libraries.io 等;这些集成受其自身许可证和使用条款约束。