ossf/malicious-packages

GitHub: ossf/malicious-packages

一个由 OpenSSF 维护的开放数据库,以 OSV 格式收集和共享开源软件包仓库中发现的恶意软件包报告,帮助社区防御供应链攻击。

Stars: 575 | Forks: 123

# OpenSSF 恶意软件包 [![恶意软件包报告总数](https://img.shields.io/badge/dynamic/regex?url=https%3A%2F%2Fossf.github.io%2Fmalicious-packages%2Fstats%2Ftotal.json&search=%5B0-9%5D%2B&style=flat&label=Malicious%20Package%20Reports&color=%23c32700&cacheSeconds=3600)](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安装, 威胁情报, 开发者工具, 开源生态, 恶意软件分析