如何用一次推送,毁掉一个公司?

news2024/11/26 8:38:07

极狐GitLab 是 GitLab 在中国的发行版,可以私有化部署,对中文的支持非常友好,是专为中国程序员和企业推出的企业级一体化 DevOps 平台,一键就能安装成功。安装详情可以查看官网指南。

本文分享如何使用极狐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 进行测试体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这样的配置,才够格做“黑悟空”“天命人”

《黑神话:悟空》取材自中国古典名著《西游记》,玩家将扮演齐天大圣孙悟空,体验一段惊心动魄的冒险旅程,被媒体誉为中国首款“3A游戏”。 在《黑神话:悟空》发布并风靡全球之际,唯迈医疗的 Phoenix 210 亦同…

【渗透工具箱】灵兔宝盒-Rabbit_Treasure_Box_V1.0.1

Rabbit_Treasure_Box_V1.0.1 是一款基于Windows操作系统的渗透工具箱,旨在提供一个开箱即用的渗透测试工具集合。该工具箱通过 Dawn Launcher 进行管理,支持一键备份和更新。它包含了脚本类工具,在Windows中启动,集成了在线安全工…

Debug-026-el-upload照片上传-编辑页回显照片并且支持再上传的实现方案

前言: 在之前写的一篇文章《Debug-022-el-upload照片上传-整体实现回顾》中回顾了整体的借助el-upload实现了照片上传的功能。现在业务中增加了一项需求,我们的表单一般是分为“新增页”和“编辑页”的,这里新需求希望可以在编辑页中实现对“…

Java项目: 基于SpringBoot+mysql大学生入学审核系统(含源码+数据库+开题报告+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql大学生入学审核系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

PAT (Advanced Level) Practice——1008,1009

1008: 难度:简单 题意: 我们城市最高的建筑只有一部电梯。N个数字表示电梯将按指定顺序停在哪些楼层。电梯上一层需要 6 秒,下一层需要 4 秒。电梯将在每个站点停留 5 秒。对于给定的N个数字,您将计算完成这些请求所…

前后端分离项目遇到的跨域问题解决方案(后端为主)

文章目录 什么是跨域问题?第一种方式 ⇒ 注解解决方案:第二种方式 ⇒ 使用 CorsFilter 方法解决:第三种方式 ⇒ 实现 WebMvcConfigure 接口,添加映射(个人推荐) 什么是跨域问题? 先说问题&#…

【软件流程】项目开发管理制度(Doc文件)

项目开发管理总体流程 一、总则 二、阶段成果 三、岗位设置 四、项目立项 五、项目计划与监控 六、需求分析 七、总体设计 八、详细设计 九、项目实现 十、项目测试 十一、用户培训 十二、系统上线 十三、系统验收 十四、产品维护 十五、源码和文档 十六、质量检…

Gitee镜像关联GitHub仓库

申请 GitHub 私人令牌 GitHub 私人令牌用于授予 Gitee 读写 Github 仓库的权限。 1)登录GitHub,通过 个人头像 > Settings > 下拉左侧菜单栏进入 Developer settings。 2)Personal access tokens > Tokens(classic) > Generate …

[数据集][目标检测]街道乱堆垃圾检测数据集VOC+YOLO格式94张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):94 标注数量(xml文件个数):94 标注数量(txt文件个数):94 标注类别数…

Spring Security 原理、源码解析及进阶

文章目录 参考文献 1、信息安全基础1. CIA 三要素2. Authentication Vs. Authorization3. RBAC模型 2、Spring Security1. Spring Security 简介2. Spring Security 架构核心2.1 FilterChain (Servlet)2.2 [DelegatingFilterProxy](https://docs.spring.io/spring-security/ref…

基于DPU与SmartNIC的K8s Service解决方案

1. 方案背景 1.1. Kubernetes Service介绍 Kubernetes Service是Kubernetes中的一个核心概念,它定义了一种抽象,用于表示一组提供相同功能的Pods(容器组)的逻辑集合,并提供了一种方式让这些Pods能够被系统内的其他组…

5、Django Admin后台移除“删除所选”操作

默认情况下,Django Admin后台的listview模型列表页,会有一个Delete Selected删除所选操作。假设你需要再从Hero管理模型中移除该删除操作。 ModelAdmin.get_actions方法可以返回所有的操作方法。通过覆盖此方法,移除其中delete_selected方法…

uni-app 获取当前位置的经纬度以及地址信息

文章目录 uni.getLocation(objc)获取经纬度和地址调试结果问题 uni-app 获取当前位置的经纬度以及地址信息 uni.getLocation(objc) uni-app官方文档定位API: uni.getLocation(OBJECT) uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度&…

Easy-Paas 功能演示

1.登录 http://192.168.11.10:8100/web 账号:admin 密码:admin 2.主页

阿里巴巴商品搜索API返回值中的图片与详情链接

在使用阿里巴巴(Alibaba)的商品搜索API时,通常返回的JSON或其他格式的数据中会包含商品的相关信息,如标题、价格、图片链接、详情页链接等。这些链接(特别是图片和详情页的链接)通常设计为直接可用的URL&am…

buildroot构建根文件系统

目录 嵌入式系统1. Bootloader(引导程序,如U-Boot)2. Linux内核3. 根文件系统 根文件系统使用buildroot编译文件系统Buildroot目录简介选择配置文件Buildroot其他分析 嵌入式系统 嵌入式系统的三大部分:bootloader(如…

Ceph RBD使用

CephRBD使用 一、RBD架构说明二、RBD相关操作1、创建存储池2、创建img镜像2.1 创建镜像2.1.2 查看镜像详细信息2.1.3 镜像其他特性2.1.4 镜像特性的启用和禁用 3、配置客户端使用RBD3.1 客户端配置yum源3.2 客户端使用admin用户挂载并使用RBD3.2.1 同步admin账号认证文件3.2.2 …

安数云助力某省移动部署全省云安全资源池

随着云计算技术的拓展,安全运维的兴起以及5G新技术的试点应用,传统烟囱式产品堆砌的安全解决方案已难以满足各新兴业务的安全保障需求。用户大部分业务逐步迁移到了云上,所有资源都以虚拟化的形态存在,以达到集中式的管理。 云安全…

MIT6.S081最详解析与归纳——lab11:network driver

Lab11主题:network driver (一)xv6网络协议栈(二)networking(1)e1000_transmit(2)e1000_recv (三)完结感想 (一)xv6网络协…

股指期货交割手续费怎么算?

股指期货交割手续费是投资者在股指期货合约到期进行交割时必须支付的费用,主要用于覆盖交易所和期货公司的运营成本。其计算方式与开仓、平仓手续费相似,但标准有所不同。#股指期货# 要熟悉股指期货的保证金和手续费计算,可以遵循以下公式&a…