安全事件响应

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

  • 对于私有化部署的极狐GitLab 实例和 JihuLab.com 上的群组的管理员和维护人员。
  • 提供有关如何应对与极狐GitLab 服务相关的各种安全事件的附加信息和最佳实践。
  • 作为处理安全事件过程的补充。它不是替代品

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

caution 使用本指南中的建议/建议时,请自行承担风险。

常见安全事件教程

凭据暴露到互联网

这种情况指的是因配置错误或人为失误,导致敏感的认证或授权信息暴露到互联网上的安全事件。此类信息可能包括:

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

此教程可能还包含通过极狐GitLab 服务暴露的第三方凭据的敏感信息。暴露可能发生在例如意外提交到公共极狐GitLab 项目,或 CI/CD 设置的配置错误。更多信息请参阅:

响应

与凭据泄露相关的安全事件的严重性从低到严重,取决于令牌的类型和范围。响应此类事件时,您应该:

  • 确定令牌的类型和范围。
  • 基于令牌信息识别令牌的所有者及相关的团队。
  • 在评估令牌的范围和潜在影响后撤销轮换令牌。只在以下情况下撤销令牌:
    • 对于撤销令牌可能造成的可用性风险,您确信自己理解撤销令牌可能造成的潜在影响。
    • 按照公司安全事件响应指南进行操作。
  • 记录凭据泄露的时间和撤销凭据的时间。
  • 审查极狐GitLab 审计日志,以识别与暴露令牌相关的任何未经授权的活动。根据令牌的范围和类型,搜索与以下活动相关的审计事件:
    • 新用户。
    • 令牌。
    • 恶意流水线。
    • 代码更改。
    • 项目设置更改。

事件类型

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

怀疑用户帐户被入侵

响应

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

事件类型

审核可用的审计事件,以识别任何可疑帐户行为。例如:

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

CI/CD 相关的安全事件

CI/CD workflows are an integral part of modern day software development and primarily used by developers and SREs to build, test and deploy code to production. Because these workflows are attached to the production environments, they often require access to sensitive secrets within the CI/CD pipelines. Security incidents related to CI/CD might vary based on your setup, but they can be broadly classified as follows:

  • Security incidents related to exposed GitLab CI/CD job tokens.
  • Secrets exposed through misconfigured GitLab CI/CD.

CI/CD 工作流是现代软件开发的重要组成部分,主要由开发人员和 SRE 使用来构建、测试和部署代码到生产环境。由于这些工作流与生产环境相关,它们通常需要在 CI/CD 流水线中访问敏感数据。与 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 针对免费用户推出了 GitLab 专业升级服务,如果您在升级过程中遇到任何问题可以咨询此服务。

响应

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

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

事件类型

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

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

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

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

响应

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

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

事件类型

  • 您可以根据 target_type 字段对审计日志进行过滤。根据安全事件的上下文,将此字段应用于过滤器以缩小范围。
  • 查找合规性管理组和项目审核事件的特定审核事件。

向极狐GitLab 寻求安全事件的帮助

在您寻求帮助前,请搜索极狐GitLab 文档,或在官方论坛上搜索或发帖求助,当然,您也可以直接在极狐GitLab 官网首页上寻求帮助。

安全最佳实践

查看极狐GitLab 安全文档,了解哪些建议最适合您的环境和需求。如果您运行的是私有化部署的极狐GitLab 实例,请考虑查看极狐GitLab 组件图,以熟悉极狐GitLab 安装的各个部分。

安全加固建议

关于如何提高极狐GitLab 环境的安全性,您可以查看安全加固建议

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