使用此参考来确定 GitHub 在安全调查期间要使用的工具、每个工具可以回答哪些问题,以及哪些因素可能会影响你看到的数据。
注意
每个工具(及其提供的数据)的可用性因 GitHub 计划、角色和权限、功能启用和预事件配置而异(例如,审核日志流式处理和 IP 地址泄露需要事先设置)。
活动视图
使用
- 大致了解特定存储库中的 活动 ,包括合并、推送、强制推送、分支创建和删除,这些活动归因于定义期间的特定执行组件。
- 将可疑代码外观与 ** 相关推送或合并**相关联。
- 回答有关 何时 进行更改、谁 进行了更改、在哪个分支的问题,并浏览差异或提交历史记录。
Permissions
对存储库的读取访问权限。
关键资源
说明和限制
- 活动视图最好用作初始导航和关联图面;它与原始审核日志导出没有相同的完整性或查询能力。
- 某些事件需要跨存储库或组织关联,这在审核日志中可能更容易。
审核日志
使用
- 回答有关企业或组织中的更改内容、更改时间和更改人员的问题。
- 调查可能已导致安全漏洞的事件,或可能指示漏洞的事件,例如成员身份、角色、权限的更改,或访问令牌的生成或使用等。
- 将安全相关操作归因于执行组件(用户或集成),并生成调查时间线。
- 按执行组件、操作、IP 地址(如果已启用)或令牌进行筛选,以识别可疑活动或跟踪令牌使用情况。
- 跨多个存储库或组织关联活动。
Permissions
- 若要查看组织审核日志,需要是组织所有者。
- 若要查看企业审核日志,需要是企业管理员。
- 若要查看安全日志(个人帐户),需要是帐户所有者。
- 若要查看导出到外部安全信息和事件管理(SIEM)系统、日志管理系统或其他工具和服务的审核日志数据,需要访问该系统。
关键资源
说明和限制
- GitHub 提供三个审核日志: 企业、 组织和用户 安全日志。
- GitHub审核日志 UI 的筛选和搜索功能有限。 因此,我们建议企业将企业审核日志 流式传输到 外部 SIEM 或日志管理系统,以便进行更高级的查询。
- 将审核日志流式传输到外部 SIEM 或日志管理系统需要事先配置。 请参阅“流式处理企业审核日志”。
- 如果没有审核日志流式处理,将无法运行更复杂的查询,例如跨组织或存储库关联事件,或从特定令牌透视到所有相关事件。
- 流中包含 Git 事件数据。
- 建议流式处理 API 请求事件;这需要以前的配置。 请参阅“流式处理企业审核日志”。
- 对于 GitHub Enterprise Cloud 上的企业,我们建议在审核日志中显示 IP 地址;这需要事先配置。 请参阅“在企业审核日志中显示 IP 地址”。
- 不同的 GitHub 计划具有不同的数据可用性和数据保留产品/服务:
- GitHub Free 和 GitHub Team 计划根本无法查看 API 活动或 Git 事件。
- 独立组织(不属于企业的组织)无法进行流传输审核日志、无法查看 API 请求的事件,并且 Git 事件数据仅限于 7 天。
- 对于企业:GitHub Enterprise Cloud
- 如果企业使用 Enterprise Managed Users,则审核日志还包括用户 安全日志 (与用户帐户相关的事件,例如登录活动和令牌使用情况)。
- 如果企业 _不使用_Enterprise Managed Users,则 GitHub 审核日志仅包含与企业帐户及其内部组织相关的事件。
- 审核日志不包括页面视图或存储库浏览遥测。
依赖项关系图
使用
- 检查存储库是否依赖于 易受攻击或泄露的包 (或版本)。
- 查看可能在事件期间引入的新依赖项或可疑依赖项。
- 根据生态系统或关系(直接或传递)筛选和浏览依赖项。
- 导出用于审核目的的软件材料清单(SBOM),或保留证据。
Permissions
- 写入或维护对存储库的访问权限。
关键资源
说明和限制
- 依赖项图是从受支持的清单/锁文件(以及可选的生成时提交)生成的,因此它可能不完整或不同于实际生成和部署的内容。 若要获取最准确的视图,尤其是对于 CI/构建期间解析的依赖项,应使用构建时依赖项提交(或 SBOM 等其他构建来源)来补充依赖项关系图。
GitHub 代码搜索
使用
- 跨存储库搜索入侵指标 (IoC),例如已知的恶意工作流或包名称。
- 通过检查可疑代码模式(例如泄露的机密或恶意代码片段)是否出现在整个组织或企业的其他存储库中,从而快速确定潜在爆炸半径的范围。
- 按各种不同限定符限定搜索范围,这些限定符在事件期间可能很有用,例如:
- 在特定存储库、组织或企业中搜索(使用
repo:、org:``enterprise:限定符)。 - 在特定文件路径(
path:.github/workflows repo:ORG-NAME/REPO-NAME)内搜索。
- 在特定存储库、组织或企业中搜索(使用
所需权限
- 若要跨公共存储库进行搜索,必须登录到帐户 GitHub 。
- 若要跨专用存储库进行搜索,必须具有对这些存储库的读取访问权限。
关键资源
说明和限制
- 支持正则表达式搜索。
- 仅搜索存储库的默认分支。 如果可疑代码是在非默认分支中引入的,并且尚未合并,则代码搜索不会找到该代码。
- 可以使用代码搜索来确定某种模式或 IoC 是否存在,但它不提供上下文信息,例如代码何时添加以及由谁添加。 应将代码搜索与其他工具结合使用,例如审核日志、活动视图或检查责任视图、提交历史记录和存储库的拉取请求历史记录。
安全概述和安全警报
使用
- 查看跨组织或企业存储库的所有安全警报(secret scanning和code scanningDependabot警报)的高级视图。
- 分类GitHub 已检测到的内容并识别哪些代码库受到影响。
- 跟踪在事件过程中生成的新警报(这可能指示活动利用或传播)。
所需权限
- 若要查看企业级组织的数据,企业管理员必须在相关组织中具有组织所有者或安全经理角色。
- 若要查看组织级别的存储库数据,需要组织所有者或安全管理员角色。
关键资源
说明和限制
- 仅当事件之前启用了和配置相关功能时,才会显示泄露机密、易受攻击的代码、易受攻击的依赖项和恶意软件的警报。
工作流运行和日志
使用
- 确认在给定时间在 CI/CD 中执行的内容(例如执行的命令或安装的依赖项)。
- 调查可疑的工作流运行(例如,由不熟悉的用户触发或异常时间触发的工作流运行),以查看执行了哪些操作、访问了哪些机密以及执行了哪些代码。
- 查看工作流作业有权访问哪些凭据,包括默认
GITHUB_TOKEN凭据、任何personal access tokensGitHub App凭据、令牌、存储为机密的其他凭据,以及工作流运行期间获取的访问令牌。 - 通过 REST API 以编程方式检索日志,以实现存档、取证或自动化目的。
所需权限
- 对存储库的读取访问权限。
关键资源
- 查看工作流程运行历史记录
- 使用工作流运行日志
- 下载工作流程构件
- GITHUB_TOKEN
- 在 GitHub Actions 中使用机密
- 安全使用指南
- 工作流运行的 REST API 终结点
- 工作流作业的 REST API 终结点
- 保护生成系统的最佳做法
说明和限制
- GitHub 自动从工作流日志中去除机密信息。
- 默认情况下,工作流日志默认由 GitHub 保留 90 天,但您可以配置此保留期限。 对于公共存储库,最大保留期为 90 天。 对于专用 存储库和内部 存储库,最大值为 400 天。 可以在企业、组织或存储库级别配置保留。 如果工作流运行发生在配置的保留时段之外,则日志可能不再可用。 有关详细信息,请参阅“管理存储库的GitHub Actions设置”、“为组织中的 GitHub Actions 构件和日志配置保留期”或“在企业中强制实施GitHub Actions策略”。
- 工作流运行(包括日志)也可以通过 REST API 删除。 若要检查某次运行是否已被删除,请在审计日志中查询
workflows.delete_workflow_run事件。 - 向每个作业颁发的默认
GITHUB_TOKEN的作用域仅限于该作业,并会在作业完成时或其有效的最长生命周期结束后过期(在自托管运行器上最长可达 24 小时)。 即使某个步骤捕获了令牌,作业完成后也无法重复使用该步骤。 有关详细信息,请参阅“GITHUB_TOKEN”。 - 工作流中引用的其他凭据(例如 personal access tokens, GitHub App 安装令牌或存储为机密的第三方 API 密钥)具有自己的生命周期,并且作业结束时不会过期。 如果某个工作流步骤泄露了其中一个凭据,该令牌仍然有效,直到其被吊销或根据其自身策略过期。 可能已公开的任何凭据都应被视为已泄露并立即轮换或替换。 查看工作流文件和存储库、组织和环境机密,以确定可访问哪些凭据。 有关详细信息,请参阅“在 GitHub Actions 中使用机密”。
- 可以使用 REST API 以编程方式下载整个工作流运行的日志或特定作业的日志。 这两个终结点都返回一个有效期为一分钟的重定向 URL。 有关详细信息,请参阅 工作流运行的 REST API 终结点 和 工作流作业的 REST API 终结点。
- 工作流运行日志仅捕获工作流步骤中的标准输出。 不会写入标准输出的活动(例如网络调用、文件系统修改或后台进程)不会显示在日志中。
- 对于 GitHub 托管的运行器,运行器环境是临时的,并会在作业完成后被销毁。 GitHub 除了这些运行器的工作流运行日志外,不会保留任何数据。 对于自托管运行器,可能可以从您自己的基础设施中获得额外的主机级或网络遥测数据。
- 若要进行更全面的调查,请关联工作流运行日志与审核日志事件。 例如
git.clone、git.fetch、git.push、protected_branch.create和protected_branch.policy_override等事件可以提供更多上下文。 由于托管审核日志中的 GitHubGit 事件目前仅为企业保留 7 天,因此提前设置流式企业审核日志对于此类调查非常重要。 有关详细信息,请参阅“准备应对安全事件”。