本参考文章介绍了在响应安全事件时应该使用哪些 GitHub 工具以及检查哪些 GitHub 界面。 使用本文指导你跨主要威胁类别进行调查。
有关如何响应安全事件(包括 包含策略)的完整指南,请参阅 响应安全事件。
重要
每个工具(及其提供的数据)的可用性因 GitHub 计划、角色、权限、功能启用和预事件配置而异(例如,审核日志流式处理和 IP 地址泄露需要事先设置)。 有关详细信息,请参阅“安全事件调查工具”。
请注意,实际安全事件很少涉及单个攻击途径。 凭据泄露可能导致恶意代码注入,这可能导致数据外泄。 调查威胁信号时,请准备好进入其他调查领域,并在发现新的威胁指标以及理解威胁模型不断深入时,反复进行遏制、更深入的调查和修正。
公开或泄露的凭据
本部分在以下情况下适用:
你怀疑令牌或密钥被盗或被利用、收到 secret scanning 警报或发现代码、日志或公共存储库中公开的凭据。
需要检查的事项
- 在审核日志中搜索:
- 通过搜索与该令牌相关的所有事件,确定已泄露令牌导致的操作。 请参阅“标识由访问令牌执行的审核日志事件”。
- 由意外的行为者或未知 IP 地址执行的操作(如果启用了 IP 地址显示功能)。
- 查看 secret scanning 有关调查结果的警报,以评估泄露的机密的位置、暴露和有效性。
- 使用企业或组织的安全概述来识别跨存储库的趋势或活动。
- 使用 GitHub 代码搜索检查存储库中公开的代码、
.env文件或配置文件中的机密。
关键工具
| 工具 | Purpose |
|---|---|
| 审核日志 | 跟踪令牌使用情况 |
| 安全性概述 | 查看组织或企业级安全警报和活动,尤其是 secret scanning 警报 |
| [ |
GitHub 代码搜索](/code-security/reference/security-incident-response/investigation-tools#github-code-search) | 在代码中搜索公开的凭据 |
关键资源
未经授权的访问和帐户泄露
本部分在以下情况下适用:
你注意到了异常的登录活动、看到意外的提交或更改,或检测到可疑帐户行为。
需要检查的事项
- 在审核日志中搜索 成员访问权限、权限或角色更改。 例如,查找诸如
org.add_member、repo.add_member、org.add_outside_collaborator、org.update_member、repo.update_member、role.create、 等role.update事件。 - 对于审核日志中的任何可疑事件,请标识执行者。 检查活动者是否为未知用户、可能遭到入侵的帐户或未识别的应用程序。
- 如果启用了 IP 地址可见性,请检查是否识别与异常事件或可疑活动关联的 IP 地址 。
- 在审核日志中搜索与新创建的部署密钥或应用相关的事件,
public_key.create例如integration_installation.create。 - 检查审核日志,确认意外的存储库更改,例如,新的公共存储库或存储库可见性更改(从私有到公共),如
repo.create``repo.access。 - 使用活动视图(存储库级别) 生成最近推送的时间线。 查找来自意外来源的推送、强制推送或异常的分支名称。
关键工具
| 工具 | Purpose |
|---|---|
| 审核日志 | 搜索和交叉检查操作、主体和 IP 地址 |
| 活动视图 | 查看特定存储库的活动 |
关键资源
数据外泄
本部分在以下情况下适用:
您检测到大规模下载、异常的 API 活动,或收到有关您数据外部曝光的报告。
需要检查的事项
- 搜索大量 git 操作(
git.clone、git.fetch)或 API 请求的审计日志,特别是来自不熟悉用户(actor)或 IP 地址的请求(如果启用了 IP 地址可见性),表明可能存在批量数据收集。- 请注意,审核日志中的 Git 事件具有与其他审核日志事件不同的特殊访问要求和保留策略。 可以通过 REST API 访问 GitHub Enterprise Cloud 的 Git 事件,并且数据会保留七天,除非你正在流式传输审核日志。 对于 GitHub Enterprise Server,必须在审核日志配置中启用 Git 事件,且这些事件不会包含在搜索结果中。
- 同样,在审核日志中捕获 API 活动需要以前的配置,默认情况下不可用。
- 检查存储库复制或公开事件的审核日志,例如存储库可见性更改(从专用到公共)、意外创建的新存储库(如新的公共存储库)或存储库被重命名或传输(
repo.create、repo.access(可见性更改)、repo.rename、repo.transfer)。 - 检查出站机制,例如创建或更新的 Webhook(
hook.create或在审核日志中的类似事件),并检查是否有任何 Webhook 指向不被识别的域名。
关键工具
| 工具 | Purpose |
|---|---|
| 审核日志 | 搜索相关操作 |
关键资源
恶意代码和工作流更改
本部分在以下情况下适用:
你在存储库中发现了可疑代码,安全研究人员报告了问题,或者你注意到了意外的工作流行为。
需要检查的事项
- 查看操作选项卡,以检查意外的工作流运行,尤其是那些由不熟悉的用户或在异常时间触发的工作流运行。
- 检查工作流运行日志中是否有可疑输出。
- 使用 GitHub 代码搜索查找可疑文件或代码添加,特别是在工作流文件(
.github/workflows/)、shell 脚本或配置文件中。 - 使用活动视图检查推送至非常规分支名称、强制推送、来自意外的行为者的推送。
- 检查审核日志中对安全设置更改或禁用操作的事件(例如
repository_ruleset.destroy、repository_secret_scanning_push_protection.disable,或其他类似.delete、.disable、.destroy的事件)。 - 检查审核日志中是否有与新添加的自托管运行器相关的事件(例如
org.register_self_hosted_runner,repo.register_self_hosted_runner事件)。 - 检查Dependabot alerts或GitHub Advisory Database查找与您的工作流中使用的GitHub Actions相关的通知。
关键工具
| 工具 | Purpose |
|---|---|
| 工作流运行和日志 | 查看工作流执行并检查日志输出 |
| 活动视图 | 识别来自不熟悉用户的意外推送、强制推送或一般推送 |
| [ |
GitHub 代码搜索](/code-security/reference/security-incident-response/investigation-tools#github-code-search) | 搜索可疑代码模式 |
| 审核日志 | 按操作筛选以查找安全设置更改 |
关键资源
恶意软件和供应链攻击
本部分在以下情况下适用:
你收到了恶意软件或依赖项警报、怀疑恶意包或注意到项目中的意外依赖项。
需要检查的事项
- Dependabot检查恶意软件警报,该警报可告知有关恶意包的详细信息(例如包名称、受影响的版本和修补的版本),以及修正步骤。 目前仅支持生态系统中的
npm包。 -
GitHub Advisory Database
搜索以查看您的项目正在使用的依赖项(或依赖项版本)是否有GitHub报告的警告。 具体而言,请在咨询数据库中搜索
type:malware恶意软件。 - 使用 GitHub 代码搜索在您的组织中查找与可疑软件包或操作相关的引用。
- 查看存储库的依赖项图,以确定任何新的或意外的依赖项。
- 使用活动视图和检查提交历史记录来查看对依赖项清单或锁文件的最新更改(例如,、
package.json``package-lock.json、Gemfile.lock)。 检查责任视图和拉取请求,以确定谁引入了更改,以及他们是否进行了评审。 - 查看贵组织的安全概览中最近创建的安全警报。
关键工具
| 工具 | Purpose |
|---|---|
| [ |
GitHub 代码搜索](/code-security/reference/security-incident-response/investigation-tools#github-code-search)| 搜索对可疑包或操作的引用 |
| 依赖项关系图 | 可视化和查看依赖项 |
|
Dependabot 警报 | 查看与易受攻击的依赖项相关的警报 |
| GitHub Advisory Database| 搜索 type:malware |
| 活动视图 | 查看最近推送到存储库 |
| 安全性概述 | 查看整个组织或企业的最新安全警报 |