implementing-github-advanced-security-for-code-scanning

配置 GitHub Advanced Security 与 CodeQL,在企业级别对仓库执行自动化静态分析和漏洞检测。

9 stars

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

$curl -o ~/.claude/skills/implementing-github-advanced-security-for-code-scanning/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/implementing-github-advanced-security-for-code-scanning/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/implementing-github-advanced-security-for-code-scanning/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How implementing-github-advanced-security-for-code-scanning Compares

Feature / Agentimplementing-github-advanced-security-for-code-scanningStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

9
from killvxk/cybersecurity-skills-zh

使用 NIST SP 800-61r3 和 SANS PICERL 框架对安全事件进行初始分类,确定严重性、范围和所需响应行动。 按类型对事件分类,根据业务影响分配优先级,并路由到相应的响应团队。适用于事件分类、 安全告警分类、严重性评估、事件优先级排序或初始事件分析等请求场景。

triaging-security-incident-with-ir-playbook

9
from killvxk/cybersecurity-skills-zh

使用结构化 IR Playbook 对安全事件进行分类和优先排序,确定严重性、分配响应团队并启动适当的响应程序。

triaging-security-alerts-in-splunk

9
from killvxk/cybersecurity-skills-zh

在 Splunk Enterprise Security 中对安全告警进行分类,通过 SPL 查询和事件审查(Incident Review) 仪表板对重要事件进行严重性分类、调查、关联相关遥测并做出升级或关闭决策。 适用于 SOC 分析师需要处理关联搜索产生的告警队列、确定调查优先级, 或需要为交接给二/三级分析师记录分类决策时。

testing-websocket-api-security

9
from killvxk/cybersecurity-skills-zh

测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。

testing-jwt-token-security

9
from killvxk/cybersecurity-skills-zh

在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。

testing-api-security-with-owasp-top-10

9
from killvxk/cybersecurity-skills-zh

使用自动化和手工测试技术,针对 OWASP API 安全 Top 10 风险对 REST 和 GraphQL API 端点进行系统性评估。

securing-github-actions-workflows

9
from killvxk/cybersecurity-skills-zh

本技能涵盖加固 GitHub Actions 工作流以防范供应链攻击、凭据盗窃和权限提升。 内容包括将 action 固定到 SHA 摘要、最小化 GITHUB_TOKEN 权限、防止机密泄露、 防止工作流表达式中的脚本注入,以及为工作流变更实施必要的审阅者机制。

scanning-network-with-nmap-advanced

9
from killvxk/cybersecurity-skills-zh

使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。

scanning-kubernetes-manifests-with-kubesec

9
from killvxk/cybersecurity-skills-zh

使用 Kubesec 对 Kubernetes 资源清单执行安全风险分析,识别错误配置、权限提升风险以及与安全最佳实践的偏差。

scanning-infrastructure-with-nessus

9
from killvxk/cybersecurity-skills-zh

Tenable Nessus 是业界领先的漏洞扫描器,用于识别网络基础设施(包括服务器、工作站、网络设备和操作系统)中的安全弱点。

scanning-docker-images-with-trivy

9
from killvxk/cybersecurity-skills-zh

Trivy 是 Aqua Security 开源的综合性漏洞扫描器,用于检测容器镜像中操作系统软件包、语言特定依赖项的漏洞、错误配置、密钥和许可证违规,并集成到 CI/CD 流水线,支持 SARIF、CycloneDX 和 SPDX 等多种输出格式。

scanning-containers-with-trivy-in-cicd

9
from killvxk/cybersecurity-skills-zh

本技能涵盖将 Aqua Security 的 Trivy 扫描器集成到 CI/CD 流水线中,用于全面的容器镜像漏洞检测。包括扫描 Docker 镜像中的操作系统包和应用依赖 CVE、检测 Dockerfile 中的错误配置、扫描文件系统和 Git 仓库,以及建立基于严重性的质量门禁以阻止有漏洞的镜像部署。