泉缘泉 发表于 2024-9-3 09:50:39

一次推送,毁掉一个公司

本文分享怎样使用极狐GitLab 17.2 发布的密钥推送保护功能(Secret Push Protection)从源头方式密钥被推送到代码仓库中,从而导致密钥信息泄漏,给公司造成巨额损失。
密钥(用户名、密码、令牌、key 等)是软件研发中绕不外去的因素,怎样管理好这些密钥,是保护企业核心资产不外泄的关键。极狐GitLab 有完整的密钥保护体系,包括:

[*]代码审核:通过代码审核来尽可能地发现变动代码中包含的密钥信息,制止密钥信息被归并到主分支;
[*]代码推送规则设置:通过设置来制止某些密钥文件被推送到代码仓库中,好比 SSH Key;
[*]密钥检测:极狐GitLab DevSecOps 体系有七大安全测试手段,密钥检测是其中非常重要的一环,通过将密钥安全检测嵌入到 CI/CD 流水线中,来自动检测代码变动中的密钥信息;
此次分享的密钥推送保护是自 16.7 以试验功能引入,在 17.1 升级为 Beta,17.2 中在私有化摆设中正式可用。密钥推送保护功能联合上述的三大手段,能够构建坚固的密钥防护体系。
该功能为旗舰版功能,不外可以申请免费试用,旗舰版 license 申请链接 https://dl.gitlab.cn/jgc6re9s 。
密钥泄漏的案例

先看几个因为敏感信息泄漏导致遭受巨额损失的例子:
案例一

2016 年,一位为 Uber 工作的员工不警惕将 AWS 的访问根据上传到了 GitHub,随后该根据被黑客发现并使用,窃取了 5700万用户、60万司机的信息。事件发生后,其时的安全主管并未公开披露此事,而是选择以给黑客支付赎金的方式制止数据被删除。一年以后,该事件被披露,安全主管离开公司,同时 Uber 公司遭受了超 1亿美金的罚款(和解费)。
案例二

Code Spaces是一家提供代码托管服务的公司,公司 AWS 控制台的访问根据被黑客窃取之后,黑客对公司的数据进行了窃取,并索要赎金,在未得到赎金之后,黑客删除了公司数据,包括主存储和备份。由于大部门数据被永久删除,包括所有的备份,Code Spaces 失去了其所有关键数据,导致无法继续运营。尽管公司努力试图恢复,但因数据的丧失和随之而来的客户流失,公司最终公布关闭。
现代化公司内部有很多系统,涉及到的敏感信息也非常多,怎样更好的保护敏感信息是企业安全合规的重中之重。极狐GitLab 17.2 中推出的密钥推送保护功能能够从源头制止开发者将密钥信息泄漏到外部,进一步加强了极狐GitLab 的安全合规体系。
密钥推送保护,从源头制止密钥泄漏

极狐GitLab 最新推出的密钥推送保护功能是为了防止密钥信息(诸如 API 和 token)被直接推送到极狐GitLab 仓库中。当用户进行代码推送时,该功能会检测每一个提交中的内容,如果检测到有密钥信息,就会制止本次提交,并给出详细的告警信息:指明密钥信息存在的位置。
当前该功能处于 Beta 版本,对于私有化摆设用户来说,必须要确保版本在 17.2 以后,而且需要管理员在整个实例上开启该功能。
极狐GitLab 版本的安装升级可以检察官网指南。
可通过管理中心(Admin area) --> 安全 --> Security and compliance --> Secret检测中开启:
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093728941-196155292.png
别的,还需要在每个项目上开启此功能。可通过项目 --> 安全 --> 安全设置开启此功能。
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093729342-1644656385.png
该功能不仅可以在代码变动中对密钥信息进行检测,还能对 Issue、MR 评论中的密钥信息进行检测。下面以极狐GitLab 个人访问令牌为密钥信息进行该功能的演示。
对提交代码进行检测防护

下面是一段 python 代码:
import requests

login_url = 'https://jihulab.com'

pat = "glpat-kQvcWtA6pBJAyYDqcza6"

login_headers = {
    'username' : "小马哥",
    'password' : "JiHu-GitLab"
}

login_response = requests.post(login_url)

print(login_response.get())如果在没有开启该功能的情况下,使用 git push 下令可以将上面的代码推送到极狐GitLab 仓库中:
git push --set-upstream origin secret-push-protection
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 16 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 339 bytes | 339.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote:
remote: To create a merge request for secret-push-protection, visit:
remote:   http://jhma.jihulab.net/root/jh-gitlab/-/merge_requests/new?merge_request%5Bsource_branch%5D=secret-push-protection
remote:
To jhma.jihulab.net:root/jh-gitlab.git
*       secret-push-protection -> secret-push-protection
branch 'secret-push-protection' set up to track 'origin/secret-push-protection'.在极狐GitLab 项目页面上能够看到该密钥信息:
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093730473-1848873778.png
在开启该功能后,如果要对包含 PAT 的代码进行提交时,就会出错,而且提示在代码的第 5 行有密钥信息:
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093731253-1323767238.png
而且明确提示PUSH BLOCKED:Secrets detected in code changes。
通过页面提交代码,也会提示 PUSH BLOCKED: Secrets detected in code changes 从而制止相关代码的提交:
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093732238-182886010.png
对 Issue、MR 评论进行检测防护

如果在 Issue、MR 的评论中包含密钥信息,也会进相应的不安全提示。好比在 Issue 的评论中输入极狐GitLab 个人访问令牌,就会提示以下内容:
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093733010-1960272378.png
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093733434-1268831760.png
可以看到如果在 MR、Issue 的评论中包含密钥信息,在添加的时候,就会发出告警,提示这内里包含哪些密钥信息。
跳过也要留痕

如果在某些特别情况下(好比为了测试之类),想跳过此功能进行代码的正常合入,这时候就需要在提交代码的时候做一些特别处理。但是对于跳过该功能这件变乱,会在安全审计内里进行记录。
下令行提交

如果是通过 git push 的方式从下令行进行代码提交,则需要添加一个参数** -o secret_push_protection.skip_all**,结果如下:
git push -o secret_push_protection.skip_all origin secret-push-protection
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 16 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 504 bytes | 504.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
remote:
remote: View merge request for secret-push-protection:
remote:   http://jhma.jihulab.net/root/jh-gitlab/-/merge_requests/1
remote:
To jhma.jihulab.net:root/jh-gitlab.git
   6b3acb2..0b7fdb3secret-push-protection -> secret-push-protection可以看到代码推送乐成。
在网页端提交

如果是通过极狐GitLab 网页端进行代码提交,则需要在 commit 信息中添加 信息,然后即可提交乐成:
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093734141-167245114.png
不管是哪种方式,只要是跳过密钥推送保护功能,都会在在安全审计(项目 --> 安全 --> 审计事件)中看到对应的审计事件:
https://img2024.cnblogs.com/other/3375936/202409/3375936-20240903093734504-746112914.png
极狐GitLab 的密钥安全防护体系

极狐GitLab 是一个内置安全、默认安全的 DevSecOps 平台,有多种安全功能、策略来保障软件研发全生命周期的安全。17.2 新增的密钥推送保护功能是密钥安全防护体系的重要增补部门。之前针对密钥安全防护,主要有以下几种手段:

[*]代码审核:通过代码审核来尽可能地发现变动代码中包含的密钥信息,制止密钥信息被归并到主分支;
[*]代码推送规则设置:通过设置来制止某些密钥文件被推送到代码仓库中,好比 SSH Key;
[*]密钥检测:极狐GitLab DevSecOps 体系有七大安全测试手段,密钥检测是其中非常重要的一环,通过将密钥安全检测嵌入到 CI/CD 流水线中,来自动检测代码变动中的密钥信息;
此次新发布的密钥推送保护直接从源头制止了包含密钥信息的代码被推送到仓库中。这几种手段联合起来就可以构建一个坚固的密钥安全防护体系。
由于该功能当前是旗舰版功能,欢迎大家升级到 17.2 来体验该功能,然后在官网申请旗舰版 license 进行测试体验。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 一次推送,毁掉一个公司