首页 > 其他分享 >一次推送,毁掉一个公司

一次推送,毁掉一个公司

时间:2024-09-03 09:37:17浏览次数:4  
标签:一次 毁掉 代码 GitLab 极狐 密钥 push 推送

本文分享如何使用极狐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/tvetsgi4

密钥泄漏的案例

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

案例一

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检测中开启:

file

此外,还需要在每个项目上开启此功能。可通过项目 --> 安全 --> 安全配置开启此功能。

file

该功能不仅可以在代码变更中对密钥信息进行检测,还能对 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
 * [new branch]      secret-push-protection -> secret-push-protection
branch 'secret-push-protection' set up to track 'origin/secret-push-protection'.

在极狐GitLab 项目页面上能够看到该密钥信息:

file

在开启该功能后,如果要对包含 PAT 的代码进行提交时,就会出错,并且提示在代码的第 5 行有密钥信息:

file

而且明确提示PUSH BLOCKED: Secrets detected in code changes

通过页面提交代码,也会提示 PUSH BLOCKED: Secrets detected in code changes 从而阻止相关代码的提交:

file

对 Issue、MR 评论进行检测防护

如果在 Issue、MR 的评论中包含密钥信息,也会进相应的不安全提示。比如在 Issue 的评论中输入极狐GitLab 个人访问令牌,就会提示以下内容:

file

file

可以看到如果在 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..0b7fdb3  secret-push-protection -> secret-push-protection

可以看到代码推送成功。

在网页端提交

如果是通过极狐GitLab 网页端进行代码提交,则需要在 commit 信息中添加 [skip secret push protection] 信息,然后即可提交成功:

file

不管是哪种方式,只要是跳过密钥推送保护功能,都会在在安全审计(项目 --> 安全 --> 审计事件)中看到对应的审计事件:

file

极狐GitLab 的密钥安全防护体系

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

  • 代码审核:通过代码审核来尽可能地发现变更代码中包含的密钥信息,避免密钥信息被合并到主分支;

  • 代码推送规则设置:通过设置来阻止某些密钥文件被推送到代码仓库中,比如 SSH Key;

  • 密钥检测:极狐GitLab DevSecOps 体系有七大安全测试手段,密钥检测是其中非常重要的一环,通过将密钥安全检测嵌入到 CI/CD 流水线中,来自动检测代码变更中的密钥信息;

此次新发布的密钥推送保护直接从源头阻止了包含密钥信息的代码被推送到仓库中。这几种手段结合起来就可以构建一个坚固的密钥安全防护体系。

由于该功能当前是旗舰版功能,欢迎大家升级到 17.2 来体验该功能,然后在官网申请旗舰版 license 进行测试体验。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

标签:一次,毁掉,代码,GitLab,极狐,密钥,push,推送
From: https://www.cnblogs.com/jihugitlab/p/18393944

相关文章

  • 软件工程课程第一次随笔
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243这个作业的目标向老师介绍自己在技术方面的基本情况,未来作业的前期准备学号1022021401.个人logo文生图任务设......
  • 记一次yoga联想电脑黑屏
    记一次yoga联想电脑黑屏下午还好好的,晚上就黑屏了能开机但是后面就一直黑了网上到处搜半天没搜到合理的解决办法,bios进了,长按电源键20s也试了,之前电脑有一段时间待机一段时间后就会没有wifi,连wifi的设置都没有,后来解决办法是把设备适配器里有一个黄色感叹号的设备删除后,拔掉......
  • 一次请求从浏览器进入到Sping框架的服务,生命周期是什么?
    ......
  • 记一次 .NET某实验室自动进样系统 崩溃分析
    一:背景1.讲故事前些天有位朋友在微信上联系到我,说他们的程序在客户那边崩掉了,让我帮忙看下怎么回事,dump也拿到了,那就上手分析吧。二:WinDbg分析1.哪里的崩溃既然是程序的崩溃,自然是有原因的,皮裤套棉裤,必定有缘故,不是皮裤太薄就是棉裤没毛,用!analyze-v观察下异常信息。0:107>!......
  • 记录一次被拒cnvd
    看这个各个大佬cnvd拿到手软,自己也想搞一个,记录一次被拒。信息收集访问网站地址通过页面观察信息收集发下登录入口查看登录界面js(app.bb916d00.js)进行js代码审计,发现对应代码继续向下审计,发现多个路径尝试拼接路径发现点击交投所示可以看见后台详细信息刚好后台......
  • 程序员为什么要一直写bug ,不能一次性写好吗?
    文章目录一、前言二、为什么要写bug1、程序员的疑问?2、bug产生的原因3、减少bug的措施4、程序员不是机器三、写代码的好习惯,减少80%的bug1、修改完代码,记得自测一下2、方法入参尽量都检验3、修改老接口的时候,思考接口的兼容性4、对于复杂的代码逻辑,添加清楚的注释5、使......
  • 事件总线EventBus实现邮件推送
    基于事件总线EventBus实现邮件推送功能  有时候,有人给我的网站留了言,但是我必须要打开我的网站(https://www.xiandanplay.com/)才知道,所以我便决定给网站增加一个邮件推送的功能,好让我第一时间知道。于是乎,按照我自己的思路,同时为了去学习了解rabbitmq以及EventBus概念,我便设计......
  • 记一次Hyperf定时任务内存异常问题
    背景最近时不时收到K8S告警提示项目POD出现OOM问题,只要触发了项目重新部署或者把POD删掉,内存就恢复了,过了一段时间才缓慢增长(基本上要隔几天,这也是这个问题比较难定位和复现的原因)分析起初以为是某一个SQL没有限制limit或者是程序有死循环把内存跑满了,后面从日志看到......
  • 【python学习】第一次学习编程的时候,我怀疑过自己是不是太笨了,还好后来发现
    你是如何克服编程学习中的挫折感的?面对今天的这个主题,我深有感触,我必须分享一个关于我自己的真实的故事,希望它能够给每一个初学者带来一些鼓励和启发。相信自己,其实,编程没什么困难的。第一次学习python的经历在我第一次学习python的时候,上的是python的基础课程,当时教室里......
  • 一次了解所有功能!超详细Stable Diffusion界面大揭秘!(附安装攻略整合包)
    对于AI绘画的初学者而言,一看到SD的UI界面肯定是一脸懵,因为有太多陌生词汇,什么大模型、什么提示词、什么什么采样迭代,和传统的画图方式完全不在一个层面上,学习起来就无从下手~今天老师就给大家详细做一个介绍,一起来学吧~01模型设定菜单栏①StableDiffusion模型:出图的基......