Cull 供应链感染扫描
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/cull。
技能介绍
要解决什么问题
依赖安装、Dependabot 异常或公开蠕虫通报之后,团队往往不知道开发机、CI 运行器或容器镜像是否已被命中。更棘手的是:不少载荷会在你撤销 GitHub 令牌时触发报复逻辑(例如 Mini Shai-Hulud 第二波的 gh-token-monitor),顺序错了可能比不处理更糟。Cull 面向这类真实环境 IoC 确认:把本地状态与整理的 npm/PyPI 攻击活动指标对齐,给出可执行的等级判断和清除顺序,而不是泛泛的「看起来可疑」。
技能如何工作
工作流固定为 SURVEY → SCAN → TRIAGE → ERADICATE → ROTATE → REPORT。扫描侧以只读为主:持久化面(LaunchAgent、systemd 用户单元等)、残留路径、锁定文件中的 package@version 固定、进程树与被动外泄痕迹,均对照 reference/ioc-database.md 举证。
感染等级分为 CLEAN / SUSPECTED / CONFIRMED / ACTIVELY_BLEEDING。有 IoC 匹配才到 CONFIRMED;持久化仍在跑则到 ACTIVELY_BLEEDING,此时应先停监视进程,再谈删除与轮换。
常用配方包括:完整 scan、针对 Mini Shai-Hulud 的 shai-hulud、合并前 lockfile 检查、确认后 eradicate 清除手册、清除验证通过后的 rotate 轮换序列,以及预防向的 harden 与维护者向的 propagation。
边界与注意点
Cull 不编写 Sigma/YARA、不指挥安全事件、不直接在云里改生产密钥;锁定文件/CVE 侧重 → sentinel,技能与 MCP 审计 → chain,事件升级 → triage,实际改锁文件/云 API → builder。删除前会记录 sha256 并建议隔离到 /tmp/husk-quarantine-*/;绝不向已知 C2 发探测请求「验证上线」。凭据只报告路径与是否存在,不输出令牌或种子内容。
使用场景
- `npm install` 输出异常或 Dependabot 行为古怪后,在本机/CI 上跑完整 IoC 扫描并得到 CLEAN 至 ACTIVELY_BLEEDING 等级
- 合并前审查改动了 `package-lock.json`、`pnpm-lock.yaml` 或新增 `prepare`/`optionalDependencies` 的 PR,仅做锁定文件恶意版本固定比对
- 针对 Mini Shai-Hulud 等已命名攻击活动做「是否被击中」检查,含持久化、IDE 钩子与 GitHub 提交异常模式
- 已判定 CONFIRMED 或持久化仍在跑时,生成先停 `gh-token-monitor`、再隔离删除、清除验证通过后才轮换凭据的手册
适合人员
- 负责依赖 PR 合并的 Tech Lead,要在含 lockfile 与生命周期脚本的变更上线前拦截已知恶意 package@version
- 开源 npm 维护者,需确认发布令牌是否被用于向自己维护的包推送非本人编写的 tarball
- 安全/平台工程师处理「开发机或 CI 可能被供应链入侵」假设,需要可移交 triage 的 IoC 证据链与等级
- 尚未中招的团队负责人,希望拿到 `npm ci --ignore-scripts`、注册表冷却期与 Actions SHA 固定等预防清单