zaproxy/action-baseline
GitHub: zaproxy/action-baseline
一个在 GitHub Actions 中运行 ZAP 基线扫描的自动化操作,用于持续发现 Web 应用的漏洞并自动创建/更新议题。
Stars: 355 | Forks: 58
# 操作基线
一个用于运行 ZAP [基线扫描](https://www.zaproxy.org/docs/docker/baseline-scan/) 的 GitHub Action,用于查找 Web 应用程序中的漏洞。
ZAP 基线操作会扫描目标 URL 的漏洞,并为识别到的告警在 GitHub 仓库中维护一个议题。阅读以下 [博客文章](https://www.zaproxy.org/blog/2020-04-09-automate-security-testing-with-zap-and-github-actions)
以获取更多信息。
## 输入
### target
**必需** 要扫描的 Web 应用程序的 URL。这可以是一个公开可用的 Web 应用程序或一个本地可访问的 URL。
### docker_name
**可选** 要执行的 Docker 文件的名称。默认情况下,操作会运行 ZAP 的稳定版本。但你可以
配置参数以使用每周构建版本。
### rules_file_name
**可选** 你也可以指定一个规则文件的相对路径,以忽略 ZAP 扫描中的任何告警。确保在相关仓库中创建
规则文件。以下展示了一个示例规则文件配置。
确保检出仓库(actions/checkout@v2)以向扫描操作提供 ZAP 规则。
```
10011 IGNORE (Cookie Without Secure Flag)
10015 IGNORE (Incomplete or No Cache-control and Pragma HTTP Header Set)
```
### cmd_options
**可选** 基线脚本的额外命令行选项
### allow_issue_writing
**可选** 默认情况下,基线操作会使用 `issue_title` 输入将报告提交到 GitHub 议题。
如果不希望创建或更新议题,请将其设置为 false。
### issue_title
**可选** 要创建的 GitHub 议题的标题
### token
**可选** ZAP 操作使用 GitHub 提供的默认操作令牌来创建和更新基线扫描的议题。
你无需创建专用的令牌。确保在运行操作时使用 GitHub 的默认操作令牌(`secrets.GITHUB_TOKEN`)。
### fail_action
**可选** 默认情况下,如果 ZAP 识别到任何告警,ZAP Docker 容器将以 [退出代码](https://github.com/zaproxy/zaproxy/blob/efb404d38280dc9ecf8f88c9b0c658385861bdcf/docker/zap-baseline.py#L31) 失败。
如果希望在 ZAP 识别到任何告警时使 GitHub 扫描状态失败,请将此选项设置为 `true`。
### artifact_name
**可选** 默认情况下,基线操作会将报告以 `zap_scan` 名称附加到构建中。将其设置为其他字符串以使用不同的名称。请参考 [GitHub 文档](https://github.com/actions/toolkit/blob/main/packages/artifact/docs/additional-information.md#non-supported-characters) 了解允许的工件名称。
## 环境变量
如果设置了以下 [ZAP 认证环境变量](https://www.zaproxy.org/docs/authentication/handling-auth-yourself/#authentication-env-vars),
它们将被复制到 Docker 容器中:
- `ZAP_AUTH_HEADER_VALUE`
- `ZAP_AUTH_HEADER`
- `ZAP_AUTH_HEADER_SITE`
## 示例用法
**基础用法**
```
steps:
- name: ZAP Scan
uses: zaproxy/action-baseline@v0.15.0
with:
target: 'https://www.zaproxy.org'
```
**高级用法**
```
on: [push]
jobs:
zap_scan:
runs-on: ubuntu-latest
name: Scan the webapplication
steps:
- name: Checkout
uses: actions/checkout@v5
with:
ref: master
- name: ZAP Scan
uses: zaproxy/action-baseline@v0.15.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
docker_name: 'ghcr.io/zaproxy/zaproxy:stable'
target: 'https://www.zaproxy.org'
rules_file_name: '.zap/rules.tsv'
cmd_options: '-a'
```
## 问题描述
以下 [议题](https://github.com/zaproxy/zaproxy-website/issues/93) 展示了 GitHub 基线操作如何扫描
[https://www.zaproxy.org/](https://www.zaproxy.org/) 网站并通过在 ZAP 网站仓库中打开议题来通知用户。
该议题将由 GitHub Actions 机器人创建,并列出作为议题评论的告警。
[](https://github.com/zaproxy/zaproxy-website/issues/93#issue-597219582)
为了演示操作的工作流程;我们忽略了不相关的告警,但这与修复它们的效果相同。
因此在第二次扫描时,我们通过 ZAP 规则忽略了一些告警,操作机器人会使用新忽略/已解决的告警更新议题。
[](https://github.com/zaproxy/zaproxy-website/issues/93#issuecomment-611490632)
在最后一次扫描中,我们忽略了所有告警,因此结果未发现任何告警。根据扫描结果
操作机器人将关闭正在进行的开放议题。
[](https://github.com/zaproxy/zaproxy-website/issues/93#issuecomment-611496321)
## 本地化告警详情
ZAP 是国际化的,告警信息支持多种语言。
你可以通过 `cmd_options` 更改此操作使用的语言,例如:`-z "-config view.locale=fr_FR"`
查看 [https://github.com/zaproxy/zaproxy/tree/main/zap/src/main/dist/lang](https://github.com/zaproxy/zaproxy/tree/main/zap/src/main/dist/lang) 获取当前支持的全部语言集合。
你可以通过 [https://crowdin.com/project/zaproxy](https://crowdin.com/project/zaproxy) 帮助改进 ZAP 翻译。
标签:Baseline Scan, DevSecOps, Docker, GitHub Action, Issue管理, 上游代理, 安全扫描自动化, 安全测试, 安全防御评估, 开源安全工具, 攻击性安全, 目标URL扫描, 自动化安全扫描, 自定义脚本, 规则配置, 请求拦截, 逆向工具, 逆向工程平台