使用此参考来确定 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 自动从工作流日志中去除机密信息。
- 默认情况下,工作流日志将 GitHub 保留 90 天,但可以将此保留期配置为更长(专用存储库最长为 400 天)。