189个protestware IoC关键词清单曝光:如何用toxic-repos探测“有毒代码”
【免费下载链接】toxic-reposWe are against discrediting open source software项目地址: https://gitcode.com/gh_mirrors/to/toxic-repos
toxic-repos 是一个专门追踪开源项目中“有毒代码”的开源项目,它维护了 800 多条问题仓库记录,并首次完整曝光了 189 个 protestware IoC(失陷指标)关键词。本文带你快速了解 toxic-repos 是什么、这份 IoC 关键词清单包含哪些内容,以及如何用它在自己的 CI 流程中探测“有毒代码”。
什么是 toxic-repos?
近年来,在知名开源项目中插入政治性、攻击性代码的事件屡见不鲜:有的仓库被植入 DDoS 攻击脚本,有的包版本被塞进政治口号导致项目构建失败。这类行为既威胁使用者安全,也损害开源社区的公信力。
toxic-repos 的口号正是“We are against discrediting open source software”(我们反对诋毁开源软件)。项目目前收录的问题记录超过 800 条,全部来自社区持续上报与人工核实。
189个IoC关键词清单里都有什么?
打开 protestware_IoC.txt 就能看到这份完整的 189 条关键词清单,它是用 grep 等工具扫描代码库的核心依据。清单大致分为四类:
- 🌐英文口号与标签:如 StopWar、FreeBelarus、StandWith、HelpUkraine 等;
- 🇷🇺俄语文案:如 “нет войне”(不要战争)、“армия”(军队)、“война”(战争)等;
- 📡域名与链接特征:如 donor.ua、u24.gov.ua 等捐赠与宣传站点;
- 🔍正则模式:如匹配俄文 punycode 域名(xn--p1ai)的写法,覆盖变体拼写。
💡 小贴士:清单中同时收录了正确拼写与常见拼写错误(如 invaision / invasion),这正是 IoC 清单比“人肉记住关键词”可靠的地方。
数据库里的4类“有毒行为”
项目把数据库中的问题仓库按problem_type字段分类,主流行为类型包括:
| 问题类型 | 含义 | 记录数(约) |
|---|---|---|
| political_slogans | 在代码/文档中插入政治口号 | 364 |
| ip_block | 通过 IP/地区屏蔽访问 | 201 |
| hostile_actions | 其他敌意行为 | 128 |
| ddos | 植入或提供 DDoS 攻击工具 | 47 |
| malware | 恶意软件 | 13 |
| broken_assembly | 破坏构建(如包仓库投毒) | 3 |
每条记录都带有时间、问题类型、仓库名称、证据链接和中文/俄文描述,可直接作为“已知恶意仓库”黑名单使用。
三种数据库格式怎么选?
数据统一存放在 data/ 目录下,提供三种格式:
- 🗄️ SQLite:data/sqlite/toxic-repos.sqlite3 —— 适合本地查询、做脚本过滤;
- 📄 CSV:data/csv/toxic-repos.csv —— 适合导入 Excel、Tableau 做统计分析;
- 🧾 JSON:data/json/toxic-repos.json —— 适合在程序里解析、构建自动黑名单。
维护者还提供了转换脚本 scripts/convert_database_to_other_formats.py,从 SQLite 一键导出 CSV 与 JSON,保证三种格式永远同步。
如何在CI中用IoC清单探测“有毒代码”
官方推荐的最快落地方式是在 CI 中加入关键词扫描,只需三步:
- 拉取清单:把 protestware_IoC.txt 放到 CI 工作目录(或随仓库一起维护);
- 逐行扫描:对每一行关键词执行全文检索(例如用 grep -rn -f 一次性扫描整个源码树);
- 命中即告警:CI 输出命中文件与行号,结合人工复核后上报。
同时建议把“文件清单白名单对比”也加进 CI——任何未申报的新文件都会触发提醒,能第一时间发现夹带的小脚本。
官方安全建议清单 🛡️
除了关键词扫描,toxic-repos 在 README.md 中给出了完整防御建议:
- 将第三方代码(含开发者机器上的中间代码)隔离在容器中运行;
- 尽可能 fork 依赖库与容器到自己的空间;
- 镜像(mirror)包仓库,锁定可信版本;
- 在 CI 中至少做到:关键词搜索 + 文件白名单对比;
- 持续关注代码分析工具,提升自动化检测能力。
发现有毒仓库后如何上报?
项目提供了标准上报流程(见 HOW-TO-REPORT.md):在用户头像页点击 Block/Report → 选择 “Report Abuse” → 选择“举报恶意代码(malware)” → 在描述中附上仓库链接与攻击脚本证据链接。
如果你发现了新的污染仓库,也可以按 HOW-TO-ADD.md 提交 PR、创建 issue,或直接联系项目邮箱 info@toxic-repos.ru,让清单保持更新。
核心资料索引 📁
| 文件 | 说明 |
|---|---|
| protestware_IoC.txt | 189 个 IoC 关键词清单(扫描核心) |
| data/sqlite/toxic-repos.sqlite3 | SQLite 主数据库(800+ 条记录) |
| data/csv/toxic-repos.csv | CSV 版,便于表格分析 |
| data/json/toxic-repos.json | JSON 版,便于程序解析 |
| CHANGELOG.md | 记录新增/移除的仓库变更历史 |
| HOW-TO-ADD.md / HOW-TO-REPORT.md | 收录流程与上报指南 |
| scripts/convert_database_to_other_formats.py | SQLite → CSV/JSON 转换脚本 |
写在最后
toxic-repos 的价值不在于它“封杀”了什么,而在于它把分散的社区情报沉淀成了一份可机器读取的 IoC 清单与结构化数据库。把 189 个关键词接入你的 CI,就是为供应链安全加上了一道成本极低、收益极高的防线。开源不是法外之地——用工具守住底线,才是对开源社区最好的保护。
【免费下载链接】toxic-reposWe are against discrediting open source software项目地址: https://gitcode.com/gh_mirrors/to/toxic-repos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考