中文

实用的自动化恶意 npm 包检测

密码学与安全 2022-03-01 v1 软件工程

摘要

npm 注册表是 JavaScript 与 TypeScript 生态系统的支柱之一,托管超过 170 万个包,涵盖从简单工具库到复杂框架乃至完整应用。由于 npm 的极高流行度,它已成为恶意行为者的首要目标,他们发布新包或破坏现有包以引入恶意软件,篡改或窃取安装这些包或任何(传递)依赖它们的包的用户敏感数据。防御此类攻击对维护软件供应链完整性至关重要,但包更新的海量规模使得全面人工审查不可行。我们提出 Amalfi,一种基于机器学习、由三种互补技术组成的自动检测潜在恶意包的方法。我们首先在已知恶意与良性包样本上训练分类器。若某包被分类器标记为恶意,我们再检查其是否包含源仓库元数据,若包含则检查该包能否从其源代码复现。可从源复现的包通常并非恶意,故此步骤可剔除误报。最后,我们还采用简单文本克隆检测技术识别可能被分类器遗漏的恶意包副本,减少漏报。Amalfi 的先进之处在于轻量,每个包仅需数秒提取特征并运行分类器,且实践中效果良好:在一周内发布的 96287 个包版本上运行,我们识别出 95 个先前未知的恶意软件样本,误报数量可控。

关键词

引用

@article{arxiv.2202.13953,
  title  = {Practical Automated Detection of Malicious npm Packages},
  author = {Adriana Sejfia and Max Schäfer},
  journal= {arXiv preprint arXiv:2202.13953},
  year   = {2022}
}

备注

12 pages, accepted for publication at ICSE 2022