当安全事件发生时,您应该主要遵循您组织定义的流程。极狐GitLab 安全运营团队创建了本指南:

  1. 适用于极狐GitLab 私有化部署实例和 JihuLab.com 上群组的管理员和维护者。
  2. 提供有关如何响应与极狐GitLab 服务相关的各种安全事件的附加信息和最佳实践。
  3. 作为您组织定义的处理安全事件流程的补充。它不是替代品

使用本指南,您应该能够自信地处理与极狐GitLab 相关的安全事件。在必要时,指南会链接到极狐GitLab 文档的其他部分。

{{< alert type=”warning” >}}

使用本指南中提到的建议/推荐需自行承担风险。

{{< /alert >}}

常见的安全事件场景

凭证暴露于公共互联网

此场景指的是由于配置错误或人为错误导致敏感的身份验证或授权信息暴露在互联网上的安全事件。此类信息可能包括:

  • 密码。
  • 个人访问令牌。
  • 群组/项目访问令牌。
  • runner 令牌。
  • 流水线触发令牌。
  • SSH 密钥。

此场景还可能包括通过极狐GitLab 服务暴露的第三方凭证的敏感信息。例如,通过意外提交到公共极狐GitLab 项目,或 CI/CD 设置的配置错误导致的暴露。有关更多信息,请参见:

响应

与凭证暴露相关的安全事件的严重性可能从低到高不等,具体取决于令牌的类型及其相关权限。响应此类事件时,您应该:

  • 确定令牌的类型和范围。
  • 根据令牌信息识别令牌所有者和相关团队。
  • 在评估其范围和潜在影响后,撤销旋转令牌。撤销生产令牌是在暴露令牌带来的安全风险与撤销令牌可能导致的可用性风险之间的平衡。只有在您:
    • 对令牌撤销的潜在影响有信心。
    • 遵循您公司安全事件响应指南时,才撤销令牌。
  • 记录凭证暴露的时间和您撤销凭证的时间。
  • 查看极狐GitLab 审计日志以识别与暴露令牌相关的任何未经授权的活动。根据令牌的范围和类型,搜索与以下内容相关的审计事件:
    • 新创建的用户。
    • 令牌。
    • 恶意流水线。
    • 代码更改。
    • 项目设置更改。

事件类型

  1. 查看您群组或命名空间的可用审计事件
  2. 对手可能会尝试创建令牌、SSH 密钥或用户帐户以保持持久性。查找与这些活动相关的审计事件
  3. 关注与 CI 相关的审计事件以识别对 CI/CD 变量的任何修改。
  4. 查看作业日志以查找对手运行的任何流水线。

怀疑的用户帐户被入侵

响应

如果您怀疑用户帐户或机器人帐户已被入侵,您应该:

事件类型

查看可用给您的审计事件以识别任何可疑的帐户行为。例如:

  • 可疑的登录事件。
  • 个人、项目和群组访问令牌的创建或删除。
  • SSH 或 GPG 密钥的创建或删除。
  • 双因素身份验证的创建、修改或删除。
  • 对存储库的更改。
  • 对群组或项目配置的更改。
  • runner 的添加或修改。
  • 授权的 OAuth 应用程序的添加或修改。
  • 连接的 SAML 身份提供商的更改。
  • 电子邮件地址或通知的更改。

CI/CD 相关的安全事件

CI/CD 工作流是现代软件开发的重要组成部分,主要由开发人员和 SRE 使用,以将代码构建、测试和部署到生产环境。由于这些工作流与生产环境相连,通常需要在 CI/CD 流水线中访问敏感密钥。与 CI/CD 相关的安全事件可能根据您的设置而有所不同,但可以大致分类如下:

  • 与暴露的极狐GitLab CI/CD 作业令牌相关的安全事件。
  • 通过配置错误的极狐GitLab CI/CD 暴露的密钥。

响应

暴露的极狐GitLab CI/CD 作业令牌

当流水线作业即将运行时,极狐GitLab 生成一个唯一令牌并将其注入为 CI_JOB_TOKEN 预定义变量。您可以使用极狐GitLab CI/CD 作业令牌与特定 API 端点进行身份验证。此令牌具有与导致作业运行的用户访问 API 相同的权限。该令牌仅在流水线作业运行时有效。作业完成后,令牌失效,不再可用。

在典型情况下,CI_JOB_TOKEN 不会显示在作业日志中。然而,您可能会通过以下方式意外暴露这些数据:

  • 在流水线中启用详细日志记录。
  • 运行将 shell 环境变量回显到控制台的命令。
  • 未能正确保护 runner 基础设施可能会意外暴露这些数据。

在这种情况下,您应该:

  • 检查存储库中源代码是否有任何最近的修改。您可以检查修改文件的提交历史,以确定进行更改的参与者。如果您怀疑可疑的编辑,请使用怀疑的用户帐户被入侵指南调查用户活动。
  • 对任何调用该文件的代码的可疑修改可能会导致问题,应进行调查,并可能导致密钥暴露。
  • 考虑在确定撤销的生产影响后旋转暴露的密钥。
  • 查看可用给您的审计日志,以查找对用户和项目设置的任何可疑修改。
通过配置错误的极狐GitLab CI/CD 暴露的密钥

当作为 CI 变量存储的密钥未被屏蔽时,它们可能会在作业日志中暴露。例如,回显环境变量或遇到详细的错误消息。根据项目的可见性,如果您的项目是公共的,作业日志可能在您的公司内部或互联网上可访问。为减轻此类安全事件,您应该:

  • 按照暴露密钥指南撤销暴露的密钥。
  • 考虑屏蔽变量。这将阻止它们直接反映在作业日志中。然而,屏蔽并非万无一失。例如,屏蔽的变量仍可能写入产物文件或发送到远程系统。
  • 考虑保护变量。这确保它们仅在受保护的分支中可用。
  • 考虑禁用公共流水线以防止公共访问作业日志和产物。
  • 查看产物保留和过期策略。
  • 请遵循 CI/CD 作业令牌安全指南,了解有关最佳实践的更多信息。
  • 查看暴露密钥系统的审计日志,如 AWS 的 CloudTrail 日志或 GCP 的 CloudAudit 日志,以确定在暴露时是否进行了任何可疑更改。
  • 查看可用给您的审计日志,以查找对用户和项目设置的任何可疑修改。

怀疑的实例被入侵

极狐GitLab 私有化部署客户和管理员负责:

  • 其底层基础设施的安全性。
  • 保持其极狐GitLab 安装的最新状态。

定期更新极狐GitLab、更新您的操作系统及其软件,并根据供应商指导加固您的主机是很重要的。

响应

如果您怀疑您的极狐GitLab 实例已被入侵,您应该:

  • 查看可用给您的审计事件以查找可疑的帐户行为。
  • 查看所有用户(包括管理根用户),并在必要时按照怀疑的用户帐户被入侵指南中的步骤进行操作。
  • 查看凭证清单(如果您可以访问)。
  • 更改任何敏感的凭证、变量、令牌和密钥。例如,那些位于实例配置、数据库、CI/CD 流水线或其他地方的。
  • 更新到极狐GitLab 的最新版本,并制定计划在每个安全补丁发布后进行更新。
  • 此外,以下建议是服务器被恶意行为者入侵时在事件响应计划中通常采取的步骤:
    1. 将服务器状态和日志保存到一次性写入位置,以便后续调查。
    2. 查找未识别的后台进程。
    3. 检查系统上的开放端口。我们的默认端口指南可以作为起点。
    4. 从已知良好的备份或从头重建主机,并应用所有最新的安全补丁。
    5. 查看网络日志以查找异常流量。
    6. 建立网络监控和网络级控制。
    7. 限制对授权用户和服务器的入站和出站网络访问。
    8. 确保所有日志都路由到独立的只写数据存储。

事件类型

查看系统访问审计事件,以确定与系统设置、用户权限和用户登录事件相关的任何更改。

配置错误的项目或群组设置

由于项目或群组设置配置不当,可能会导致安全事件,从而可能导致对敏感或专有数据的未经授权访问。这些事件可能包括但不限于:

  • 项目可见性更改。
  • MR 审批设置的修改。
  • 项目删除。
  • 向项目添加可疑的 webhook。
  • 受保护分支设置的更改。

响应

如果您怀疑对项目设置的未经授权的修改,请考虑采取以下步骤:

  • 首先查看可用的审计事件以识别负责该操作的用户。
  • 如果用户帐户看起来可疑,请按照怀疑的用户帐户被入侵指南中的步骤操作。
  • 考虑通过参考审计事件并咨询项目所有者和维护者的指导将设置恢复到其原始状态。

事件类型

  1. 审计日志可以根据 target_type 字段进行过滤。根据安全事件的上下文,对该字段应用过滤器以缩小范围。
  2. 查找合规管理的特定审计事件和群组和项目的审计事件

寻求极狐GitLab 的帮助以应对安全事件

在请求极狐GitLab 帮助之前,请搜索极狐GitLab 文档。您应该在进行初步调查后与支持部门联系,以便有其他问题或需要协助。极狐GitLab 支持的协助资格由您的许可证确定。

安全最佳实践

查看极狐GitLab 安全文档,以了解哪些建议最适合您的环境和需求。对于极狐GitLab 私有化部署,考虑查看我们的极狐GitLab 组件图,以熟悉极狐GitLab 安装的各个部分。

加固建议

有关提高极狐GitLab 环境安全状况的更多信息,请参阅加固建议

您还可以考虑实施滥用速率限制,如Git 滥用速率限制中所述。设置滥用速率限制可能有助于自动减轻某些类型的安全事件。