implementing-github-advanced-security-for-code-scanning
配置 GitHub Advanced Security 与 CodeQL,在企业级别对仓库执行自动化静态分析和漏洞检测。
Best use case
implementing-github-advanced-security-for-code-scanning is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
配置 GitHub Advanced Security 与 CodeQL,在企业级别对仓库执行自动化静态分析和漏洞检测。
Teams using implementing-github-advanced-security-for-code-scanning should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/implementing-github-advanced-security-for-code-scanning/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How implementing-github-advanced-security-for-code-scanning Compares
| Feature / Agent | implementing-github-advanced-security-for-code-scanning | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
配置 GitHub Advanced Security 与 CodeQL,在企业级别对仓库执行自动化静态分析和漏洞检测。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 实施 GitHub Advanced Security 代码扫描
## 概述
GitHub Advanced Security(GHAS)将 CodeQL 驱动的静态应用安全测试直接集成到 GitHub 开发工作流中。CodeQL 将代码视为数据,通过语义分析识别 SQL 注入、跨站脚本、缓冲区溢出和身份验证缺陷等安全漏洞,误报率显著低于传统模式匹配扫描器。GHAS 涵盖代码扫描、机密扫描、依赖审查和 Dependabot 告警,为仓库提供全面的安全态势。
## 前置条件
- 持有 GHAS 许可证的 GitHub Enterprise Cloud 或 GitHub Enterprise Server 3.0+
- 仓库管理员或组织所有者权限
- 熟悉 GitHub Actions 工作流语法(YAML)
- 支持的语言:C/C++、C#、Go、Java/Kotlin、JavaScript/TypeScript、Python、Ruby、Swift
## 核心概念
### CodeQL 分析引擎
CodeQL 将源代码编译为可查询的数据库,然后对该数据库执行以安全为重点的查询。查询套件内置数百个检查项,映射到 CWE 标识符,涵盖 OWASP Top 10、SANS Top 25 和特定语言的漏洞模式。可以使用 CodeQL 查询语言(QL)编写自定义查询,以检测组织特定的反模式。
### 默认设置与高级设置
**默认设置**通过仓库的代码安全设置一键启用代码扫描。GitHub 自动检测存在的语言,选择适当的查询套件并配置扫描触发器。此方法无需工作流文件,适合快速上手。
**高级设置**生成可自定义的 `.github/workflows/codeql.yml` 工作流文件。团队可控制调度、语言矩阵、编译语言的构建命令、额外的查询包以及与第三方 SARIF 生产者的集成。当需要自定义构建步骤、monorepo 配置或私有查询包时,必须使用高级设置。
### 组织范围的推广
对于管理数百个仓库的企业,GHAS 支持使用组织级别安全概览大规模配置代码扫描。管理员可以在所有符合条件的仓库中启用默认设置、定义自定义安全配置,并通过安全覆盖率仪表板监控采用情况。
## 实施步骤
### 步骤 1 — 在组织中启用 GHAS
1. 导航到组织设置 > 代码安全和分析
2. 为所有仓库或选定仓库启用 GitHub Advanced Security
3. 确认许可证席位分配(GHAS 按活跃提交者计费)
### 步骤 2 — 配置默认设置以快速获益
1. 前往仓库设置 > 代码安全 > 代码扫描
2. 在 CodeQL 分析行中点击"设置"并选择"默认"
3. 检查自动检测的语言和查询套件(默认或扩展)
4. 点击"启用 CodeQL"以在 push 和 pull request 事件上激活扫描
### 步骤 3 — 使用自定义工作流进行高级设置
创建 `.github/workflows/codeql-analysis.yml`:
```yaml
name: "CodeQL Analysis"
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
schedule:
- cron: '30 2 * * 1' # 每周一 UTC 2:30
jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
actions: read
strategy:
fail-fast: false
matrix:
language: ['javascript-typescript', 'python', 'java-kotlin']
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-extended,security-and-quality
# 对于编译语言,在下面添加构建命令
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{ matrix.language }}"
```
### 步骤 4 — 自定义查询包
通过在工作流中引用它们来安装组织特定的查询包:
```yaml
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: java-kotlin
packs: |
my-org/java-custom-queries@1.0.0
codeql/java-queries:cwe/cwe-089
```
### 步骤 5 — 配置分支保护规则
1. 导航到仓库设置 > 分支 > 分支保护规则
2. 启用"需要状态检查通过"并添加 CodeQL 分析检查
3. 启用"需要代码扫描结果"并设置严重性阈值(例如,拦截高危/严重问题)
### 步骤 6 — 机密扫描和推送保护
1. 从代码安全设置中启用机密扫描
2. 激活推送保护以阻止包含检测到机密的提交
3. 为组织特定机密(API 密钥、内部令牌)配置自定义模式
### 步骤 7 — 依赖审查和 Dependabot
1. 启用 Dependabot 告警和安全更新
2. 配置 `.github/dependabot.yml` 以自动更新依赖版本
3. 在 pull request 上启用依赖审查强制执行,以阻止引入已知易受攻击依赖的 PR
## 查询套件参考
| 套件 | 描述 | 使用场景 |
|------|------|---------|
| `default` | 高置信度安全查询 | 生产环境扫描,误报最少 |
| `security-extended` | 更广泛的安全查询,包括低严重性发现 | 全面的安全覆盖 |
| `security-and-quality` | 安全加代码质量查询 | 同时需要安全和可维护性检查的团队 |
| 自定义包 | 组织编写的查询 | 检测内部反模式和合规违规 |
## 与安全工作流集成
### 来自第三方工具的 SARIF 上传
GHAS 接受来自外部工具的 SARIF(静态分析结果交换格式)上传:
```yaml
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
category: "semgrep"
```
### 安全概览仪表板
组织级别的安全概览提供:
- 风险视图,显示按严重性划分的包含未处理告警的仓库
- 覆盖率视图,显示各仓库的 GHAS 功能启用情况
- 随时间变化的告警趋势,用于跟踪修复进度
- 按团队、语言和告警类型过滤,以进行针对性审查
## 监控与指标
- 跟踪代码扫描告警的平均修复时间(MTTR)
- 监控误报率并相应调整查询配置
- 审查告警消除原因,识别开发者培训领域
- 使用 API(`/repos/{owner}/{repo}/code-scanning/alerts`)构建自定义报告仪表板
## 常见误区
1. **编译语言构建失败** — CodeQL 需要成功编译 C/C++、Java、C#、Go 和 Swift;确保 Actions runner 中有可用的构建依赖项
2. **忽略定期扫描** — push/PR 扫描会遗漏依赖项中的漏洞;每周定期扫描可捕获现有代码中新披露的 CVE
3. **security-and-quality 过度告警** — 从 `default` 套件开始,逐步扩展,以避免开发者告警疲劳
4. **GHAS 许可证席位不足** — 只有对启用 GHAS 的仓库的活跃提交者才会消耗许可证席位;相应规划容量
## 参考资料
- [GitHub Code Scanning Documentation](https://docs.github.com/en/code-security/code-scanning)
- [CodeQL Documentation](https://codeql.github.com/docs/)
- [CodeQL Query Repository](https://github.com/github/codeql)
- [SARIF Specification](https://sarifweb.azurewebsites.net/)
- [GitHub Security Overview](https://docs.github.com/en/code-security/security-overview/about-security-overview)Related Skills
triaging-security-incident
使用 NIST SP 800-61r3 和 SANS PICERL 框架对安全事件进行初始分类,确定严重性、范围和所需响应行动。 按类型对事件分类,根据业务影响分配优先级,并路由到相应的响应团队。适用于事件分类、 安全告警分类、严重性评估、事件优先级排序或初始事件分析等请求场景。
triaging-security-incident-with-ir-playbook
使用结构化 IR Playbook 对安全事件进行分类和优先排序,确定严重性、分配响应团队并启动适当的响应程序。
triaging-security-alerts-in-splunk
在 Splunk Enterprise Security 中对安全告警进行分类,通过 SPL 查询和事件审查(Incident Review) 仪表板对重要事件进行严重性分类、调查、关联相关遥测并做出升级或关闭决策。 适用于 SOC 分析师需要处理关联搜索产生的告警队列、确定调查优先级, 或需要为交接给二/三级分析师记录分类决策时。
testing-websocket-api-security
测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。
testing-jwt-token-security
在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。
testing-api-security-with-owasp-top-10
使用自动化和手工测试技术,针对 OWASP API 安全 Top 10 风险对 REST 和 GraphQL API 端点进行系统性评估。
securing-github-actions-workflows
本技能涵盖加固 GitHub Actions 工作流以防范供应链攻击、凭据盗窃和权限提升。 内容包括将 action 固定到 SHA 摘要、最小化 GITHUB_TOKEN 权限、防止机密泄露、 防止工作流表达式中的脚本注入,以及为工作流变更实施必要的审阅者机制。
scanning-network-with-nmap-advanced
使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。
scanning-kubernetes-manifests-with-kubesec
使用 Kubesec 对 Kubernetes 资源清单执行安全风险分析,识别错误配置、权限提升风险以及与安全最佳实践的偏差。
scanning-infrastructure-with-nessus
Tenable Nessus 是业界领先的漏洞扫描器,用于识别网络基础设施(包括服务器、工作站、网络设备和操作系统)中的安全弱点。
scanning-docker-images-with-trivy
Trivy 是 Aqua Security 开源的综合性漏洞扫描器,用于检测容器镜像中操作系统软件包、语言特定依赖项的漏洞、错误配置、密钥和许可证违规,并集成到 CI/CD 流水线,支持 SARIF、CycloneDX 和 SPDX 等多种输出格式。
scanning-containers-with-trivy-in-cicd
本技能涵盖将 Aqua Security 的 Trivy 扫描器集成到 CI/CD 流水线中,用于全面的容器镜像漏洞检测。包括扫描 Docker 镜像中的操作系统包和应用依赖 CVE、检测 Dockerfile 中的错误配置、扫描文件系统和 Git 仓库,以及建立基于严重性的质量门禁以阻止有漏洞的镜像部署。