ossf/malicious-packages
GitHub: ossf/malicious-packages
一个由 OpenSSF 维护的开放数据库,以 OSV 格式收集和共享开源软件包仓库中发现的恶意软件包报告,帮助社区防御供应链攻击。
Stars: 575 | Forks: 123
# OpenSSF 恶意软件包
[](https://ossf.github.io/malicious-packages/stats/)
本仓库收集了在开源软件包仓库中发现的恶意软件包报告,并可通过
[Open Source Vulnerability (OSV)](https://osv.dev) 格式使用。
本项目与 [OpenSSF 软件包分析项目](https://github.com/ossf/package-analysis) 密切相关。
## 关于
### 背景
针对开源生态系统的攻击正变得越来越普遍。域名抢注、依赖混淆、
账号接管等事件每年发生的频率都在增加。
虽然可以通过各种安全解决方案找到一些保护措施,但目前
没有一个全面的数据库来记录发布到
开源软件包仓库中的恶意软件包。
### 目标
本项目和仓库的目标是成为一个全面、高质量、开源的数据库,
记录在开源软件包仓库中发布的恶意软件包报告。
这些公开的报告有助于保护开源社区,并为安全社区
提供数据源,以提高其发现和检测新型开源恶意软件的能力。
## 范围
哪些属于范围内?
- 任何属于 [OSV Schema](https://ossf.github.io/osv-schema/)
支持的生态系统中的软件包
- 通过域名抢注类攻击发布的恶意软件包
- 通过账号接管发布的恶意软件包
- 随软件包下载或安装的恶意预编译二进制文件
- 安全研究人员的活动
- 依赖和清单混淆
边界情况:
- 域名抢注,或是内容空白或无实质功能的垃圾软件包,虽然
不属于恶意软件,但允许存在于数据集中
范围外:
- 非恶意软件包
- 漏洞报告
- 受损的基础设施
- 进攻性安全工具,除非它们在安装时执行恶意 payload
## 恶意软件包的定义
以下是本仓库对恶意软件包的定义。
- 在软件包仓库中公开可用的软件包
- 并且满足以下任一条件:
- 在安装或使用时,由于机密性、可用性和/或完整性的损失,
会引发某种程度的事件响应;或者
- 窃取可用于直接对受害者发起后续攻击的标识符
(例如,用于网络钓鱼或密码暴力破解的用户名)
- 同时还满足以下任一条件:
- 违反了软件包仓库的服务条款;或者
- 理所当然地被认为需要从软件包仓库中移除
### 依赖和清单混淆
[依赖混淆](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
和 [清单混淆](https://blog.vlt.sh/blog/the-massive-hole-in-the-npm-ecosystem)
是利用软件包系统的特性缺陷及其在组织内部使用方式的攻击技术。
使用这些攻击手段的软件包属于恶意软件。
极少数情况下,有人可能会无意中遇到这些特性缺陷,但这被认为是非常罕见的。
清单混淆要求某人绕过 NPM 命令行工具,并
故意提供被篡改的清单。
依赖混淆实际上与账号接管相同,攻击者
用自己的代码替换了软件包的代码。这意味着即使是无关紧要或
空白的依赖混淆软件包也需要进行事件响应。
### 垃圾软件包和域名抢注
垃圾软件包和域名抢注本身不属于恶意行为,除非软件包本身
表现出上述定义中的恶意行为。
这类软件包通常是空白的(即没有功能性代码),或者仅
包含毫无用处的简单功能(例如,只打印一条消息)。虽然这些
软件包不是恶意的,但它们令人反感,且通常是不受欢迎的。
域名抢注软件包可能很难与依赖混淆区分开来。因此,
允许将此类报告保留在恶意软件包仓库中。
### 逆向工程保护(例如:代码混淆)
逆向工程保护不属于恶意行为,除非它表现出上述定义中的恶意行为。
代码混淆、调试器规避和其他逆向工程保护
技术,既被寻求保护其源代码的
开发者使用,也被企图逃避检测的攻击者使用。
恶意的混淆软件包可能很难与非恶意的混淆软件包区分开来。
因此,当混淆软件包属于
在其服务条款中禁止使用混淆技术的生态系统(例如 PyPI, Crates.IO)时,即使它们尚未被明确认定为恶意,
也允许将关于这些软件包的报告保留在恶意软件包仓库中。
### 遥测
遥测本身并不是恶意的。
许多开源软件包使用遥测来追踪安装情况,或
软件包的行为和性能。
但是,如果滥用遥测来窃取和盗取敏感数据,或
提供远程访问权限,则可以将其视为恶意行为。
### 抗议软件
如果抗议软件不影响运行该软件包的系统的可用性、完整性
或机密性,则它不属于恶意软件。例如,输出到控制台的
一条消息可能会让开发者感到烦人,但这并不是恶意的。
然而,如果抗议软件作为抗议的一部分破坏文件、降低性能,
或以其他方式影响可用性、完整性或机密性,则可能
会被视为恶意软件。
### 进攻性安全工具
进攻性安全工具、库、黑客工具等不属于恶意软件。
虽然在某环境中发现进攻性安全工具可能
表明存在遭到破坏的情况,但软件包本身并不是恶意的。
这些软件包不一定违反托管它们的仓库的条款,
并且经常被安全研究人员使用。
然而,在安装期间执行恶意 payload 的
进攻性安全工具会被视为恶意软件包。
## 统计数据
关于仓库中报告数量的统计数据每天都会自动更新。
请访问 [ossf.github.io/malicious-packages/stats](https://ossf.github.io/malicious-packages/stats/) 查看。
### 贡献恶意软件包报告
请参阅我们的[贡献指南](CONTRIBUTING.md) 了解完整详情。
#### 通过 Pull Request 提交 OSV 报告
我们接受新的报告,以及对现有报告的更新。
我们也接受通过 PR 批量导入(请先创建一个 Issue)。
#### 自动化来源
如果您经常产生高质量的检测结果且
误报极少,并且已将它们积累在数据库中,我们可以
自动从云存储环境(S3, GCS)中将它们作为 OSV 消费。
### 交流
- 大多数交流在 [OpenSSF 软件包分析 Slack 频道](https://openssf.slack.com/archives/package_analysis) 中进行
- 官方沟通通过 https://lists.openssf.org/g/openssf-wg-securing-crit-prjs 邮件列表进行。 \
[管理您对 Open SSF 邮件列表的订阅](https://lists.openssf.org/g/main/subgroups)。
### 会议时间
- 每两周的周四 @ 适宜 APAC 或 EMEA 地区的时间(参见
[共享日历](https://calendar.google.com/calendar/u/2?cid=czYzdm9lZmhwNWk5cGZsdGI1cTY3bmdwZXNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ))。
- [会议纪要](https://docs.google.com/document/d/1MIXxadtWsaROpFcJnBtYnQPoyzTCIDhd0IGV8PIV0mQ/edit)。
## 误报
尽管我们尽最大努力确保不出现误报,但我们的数据集中有时
可能仍会包含误报。
如果您发现非恶意软件包被标记为恶意,
请[创建一个 Issue](https://github.com/ossf/malicious-packages/issues/new)。
请包含以下内容:
- 受影响的生态系统和软件包。
- 如果特定版本是误报,请指出哪些版本是误报。
- 任何相关的链接。
然后,我们将执行以下操作之一:
- 将整个报告移动到 `./osv/withdrawn/` 目录中,并在
报告中添加 `withdrawn`(撤回)时间 —— 如果整份报告都是误报。
- 将受影响的版本移动到 `database_specific` 数组中,
指出哪些版本是误报 —— 如果
部分版本是恶意的,而部分版本是误报。
最后,添加到恶意软件包仓库中的报告将不会被移除。
**注意:** 关于处理误报的支持尚待确定。
## 前期和相关工作
- GitHub 的 [Advisory Database(按恶意软件过滤)](https://github.com/advisories?query=type%3Amalware),适用于 NPM 生态系统。
- https://github.com/lxyeternal/pypi_malregistry (PyPI)
- https://dasfreak.github.io/Backstabbers-Knife-Collection/ (PyPI 和 npm),作者:Marc Ohm 等人。
- https://github.com/datadog/malicious-software-packages-dataset (PyPI),作者:Datadog
## 治理
此工作与
[软件包分析项目](https://github.com/ossf/package-analysis) 相关联。
本项目属于 [OpenSSF](https://openssf.org/) 下的[保护关键项目工作组](https://github.com/ossf/wg-securing-critical-projects)([Slack](https://openssf.slack.com/archives/wg_securing_critical_projects))。
工作组的 [CHARTER.md](https://github.com/ossf/wg-securing-critical-projects/blob/main/CHARTER.md)
概述了我们小组活动的范围和治理方式。
标签:DAST, EVTX分析, Homebrew安装, 威胁情报, 开发者工具, 开源生态, 恶意软件分析