大规模实施和监控应用安全控制。
$ git clone [email protected]:mf-labs/witcher.git
$ cd witcher
$ npm i
$ git clone [email protected]:mf-labs/witcher.git
$ cd witcher
$ docker build -t witcher .
# 运行Docker镜像
$ docker run -e GITHUB_TOKEN=$GITHUB_TOKEN -e ORG=$ORG witcher -a status -m ghas -r offsec-sast-testing
➜ witcher git:(master) node witcher.js -h
usage: witcher.js [-h] -m MODULE -a ACTION [--daily-summary] [--mass-action] [--slack] [--siem] [--jira]
[--jira-ticket JIRATICKET] [--org ORG] [-r REPO] [-b BRANCH]
[--workflow-file WORKFLOW] [--repo-file REPOFILE]
witcher ....... 你无处可逃
optional arguments:
-h, --help 显示此帮助信息并退出
-m MODULE, --module MODULE
ghas, dependabot, secret-scanning, codeql, iac, workflows, ALL
-a ACTION, --action ACTION
enable, disable, status, alert, deploy, delete
--daily-summary 获取每日摘要
--mass-action 大规模执行操作(enable、deploy、delete)
--slack 在Slack上发布新警报
--siem 在SIEM上记录活动
--jira 在Jira上发布新漏洞工单
--jira-ticket JIRATICKET
Jira工单ID(如PROJECT-123)
Input:
--org ORG 组织名称
-r REPO, --repo REPO 仓库名称,ALL
-b BRANCH, --branch BRANCH
分支名称
--workflow-file WORKFLOW
工作流文件名
--repo-file REPOFILE 仓库文件名

首先设置以下环境变量
export GITHUB_TOKEN=YOUR_GITHUB_TOKEN
export GITHUB_USER=YOUR_GITHUB_USERNAME
export ORG=YOUR_GITHUB_ORGANIZATION
# 可选:配置Slack
export SLACK_BOT_TOKEN
export SLACK_SIGNING_SECRET
export SLACK_CHANNEL
# 可选:发送数据到SIEM
export SERVERLESS_APP_URL
# 可选:创建Jira工单
export JIRA_API_TOKEN
export JIRA_EMAIL
export JIRA_URL
export JIRA_PROJECT
export JIRA_ISSUE_TYPE
更新 github/data/exclusion.json 文件,添加从核心仓库/GHAS中排除的仓库列表。
# 列出GHAS已禁用的仓库
$ node witcher.js -m ghas -a status --repo All
# 在特定仓库上启用GHAS
$ node witcher.js -m ghas -a enable --repo <repo-name>
# 在特定仓库上禁用GHAS
$ node witcher.js -m ghas -a disable --repo <repo-name>
# 检查特定仓库的GHAS状态
$ node witcher.js -m ghas -a status --repo <repo-name>
# 获取最新代码扫描漏洞
$ node witcher.js -m codeql -a alert --slack // --slack 用于发布到Slack
# 批量操作
$ node witcher.js --mass-action -a enable -m ghas --repo-file mass_action.txt --jira-ticket PROJECT-123

# 运行每日摘要
$ node witcher.js --daily-summary -m ALL -a status --slack --jira
# 每日摘要包括检查以下内容:
# 1. 所有仓库的GHAS状态
# 2. 所有仓库的秘密扫描状态
# 3. 检查Dependabot状态
# 4. 检查已暂停的Dependabot
# 5. 适用仓库的代码扫描状态
# 6. 适用仓库的基础设施即代码(IaC)扫描状态
# 7. 检查是否存在新增漏洞警报
# 8. 记录每日摘要到SIEM并发布到Slack
- 所有公开仓库被排除在 witcher 之外
- 所有已归档仓库被排除在 witcher 之外
- 所有已弃用仓库被排除在 witcher 之外
本项目基于 Apache 2.0 许可证 授权。
版权所有 © 2025 Moonfare。
你可以自由使用、修改和分发本项目,前提是在使用时包含对Moonfare的适当署名。
如果你想为项目做出贡献,请参考我们的 CONTRIBUTING.md 指南。