代码泄漏无感知?代码安全审计构筑企业核心资产安全防线

news2024/12/27 12:06:29

目录

一个不眠之夜

源代码托管:最容易被从内部攻破的堡垒

审计事件,构建源代码安全防护的“最后一道防线”

源代码托管审计事件三要素

源代码托管审计事件的价值

极狐GitLab 审计事件功能

极狐GitLab 审计事件功能特点

极狐GitLab 审计事件功能使用

源代码托管的金丝雀:极狐GitLab 审计事件流


一个不眠之夜

“叮叮叮,叮叮叮”,一阵急促的微信消息声将正在熟睡中的小安吵醒,小安下意识的拿起枕边的手机一看,凌晨三点半,手机屏幕上满满的都是源代码托管服务器发来的告警,他赶紧查看告警详情,内容都是:用户:小蓝,IP:192.168.0.100,正在克隆xx仓库。

多条告警显示,小蓝正在大量克隆公司内部项目仓库。起初,小安以为是源代码仓库遭到了恶意攻击,但是仔细一看用户信息,明显是公司内部人员,而且只克隆与公司近期研发的 AI 医疗相关的仓库,其他产品线的并未克隆,小安认为公司内部人员不会在半夜三更还进行产品研发。

来不及多想,为了保证公司代码安全,小安将 IP 和用户名纳入了代码仓库管理的黑名单中,告警戛然而止,代码托管服务器日志也没有其他异常。小安悬着的心终于落地了,带着疑惑小安又眯了一会儿,等待上班。

第二天上班,小安将昨晚的事情告诉了 SRE 团队的其他成员,顺便说起了那个用户 ID,结果其中一位同事说,那个 ID 是一个核心研发的,他一直在负责公司创新项目 AI 医疗的研发工作,听说前段时间,有一家初创企业给了难以拒绝的待遇,所以近期已经在办理离职了。小安觉得事情不简单,于是立马将此情况向安全合规经理进行了汇报。安全合规经理非常重视这件事,立马和研发负责人进行沟通。

事后得知,小蓝即将加入一家初创公司,他想把自己曾经编写的一些算法代码带过去,而这也是他高薪待遇的一个条件,于是小蓝在晚上大家都进入梦乡的时候,用自己尚有权限的账号将过往的代码克隆下来,没想到克隆刚开始不久突然账号就被封锁,无法执行任何操作。

在月度安全合规复盘的时候,小安因为敏锐的安全感和及时采取的止损措施受到了安全合规经理的表扬,小安有些腼腆地说:都是源代码托管平台的安全审计帮了忙。

源代码托管:最容易被从内部攻破的堡垒

上面小安公司遇到的情况就是软件研发领域非常常见的源代码泄漏事件。现如今随着企业数字化转型的逐步深入,软件已经成为支撑企业数字化转型的重要支点,而作为软件原材料的源代码自然也成为了企业的核心资产,源代码的泄漏或者受损也就意味着企业核心资产的受损。

然而,企业源代码泄漏的事件却频繁发生,比如 2018 年,某国际知名电子产品消费厂商发生了源代码泄漏事件,起因是一名实习生在离职的时候带走了部分源代码,然后将其分享给了做安全研究的朋友,随后朋友将代码上传到了 GitHub 仓库上面,最终导致源代码泄漏,影响了大量使用该公司电子产品的用户;再比如 2022 年,某国际知名汽车厂商发生了严重的数据泄漏事故,多达 300,000 万的客户数据被泄漏,里面包含大量的个人敏感信息,事后分析得知,数据泄漏的原因是分包商不小心将代码上传到了公共仓库,而这些代码包含了重要的敏感信息,从而影响了 2017 - 2022 年间注册了厂商某 App 的所有客户。

源代码的安全防护是一个重要话题,需要采取多种手段来构建立体的防护机制,比如用户登陆认证授权(事前)、用户访问权限控制(事中)以及安全审计(事后)等。针对上面的几个代码泄漏事件,如果用好源代码托管的审计事件功能,是可以进行规避的。

审计事件,构建源代码安全防护的“最后一道防线”

所谓审计事件是对重要事件进行追踪,通过对事件操作行为的分析来及时阻止不合规的操作,最终保障事务主体的安全性

对于源代码托管来讲,审计事件主要是对于源代码托管平台的操作进行追踪,诸如用户增删、代码仓库权限及访问等,以便及时发现不合规的操作,避免源代码遭遇泄漏。

源代码托管审计事件三要素

源代码托管的审计事件的关键要素是三个“W”:

  • Who:事件的操作主体。主要指对源代码进行操作的用户;

  • When:事件发生的时间。主要指用户对源代码托管平台执行某些操作时的具体时间;

  • What:操作主体做了什么具体操作。主要指对代码仓库的一些具体操作,诸如代码克隆、推送及拉取,仓库的可见性变更及用户添加和删除等。

源代码托管审计事件的价值

审计事件是构建源代码托管平台安全防护网的重要一环,完整的审计事件具备以下价值:

  • 防患于未然,及时止损:通过分析用户的行为,及时发现不合规的操作,比如短时间内大量克隆代码仓库、将私有仓库改为公共仓库等,然后采取对应的措施来阻止不合规操作对应源代码的进一步操作,避免造成源代码泄漏或受损;

  • 找事件真因,快速定位:如果发生了源代码泄漏或者受损的状态,可以借助审计事件进行事故回溯,在过往的审计事件中找到可疑的人员、可疑的操作,再通过快速排查来找到事故发生的真正原因;

  • 立安全警钟,避免后患:完整的安全审计流程可以告诉内部人员,任何不合规操作都会被发现,如果触碰公司安全合规红线,就会受到公司的相应处罚,让所有公司人员形成安全合规意识,共同保护公司核心资产安全。

极狐GitLab 审计事件功能

极狐GitLab 作为一体化的 DevSecOps 平台,具备完整的审计事件体系,包含从实例级到群组级再到项目级,而且覆盖用户管理、认证授权、项目管理、代码写作、CI/CD 等方面。截止到 16.2 版本,极狐GitLab 共有 132 项审计事件,而且还有部分审计事件在积极开发中。

图片

极狐GitLab 审计事件功能特点

极狐GitLab 审计事件功能是极狐GitLab 安全合规能力的重点功能之一,是付费功能(仅在专业及以上版本中可用),具备以下特点:

  • 开箱即用:极狐GitLab 审计事件功能开箱即用,用户无需进行额外配置,只需要导入付费版许可证即可开启使用,在对应的路径下即可查看针对实例、群组及项目相关的审计事件;

  • 事件丰富:极狐GitLab 审计事件涵盖的范围广,包含的审计事件类型丰富,如上图所示,截止 16.2 版,已有 132 项可用的审计事件,能够建立起一个很完善的审计防护体系;

  • 迭代更新:极狐GitLab 采取月度发版机制,能够对审计事件功能进行持续地迭代更新,据统计,在最近一年的发版(12 个版本)中,大约有 13+ 个与审计事件相关的重大改进发布,进一步改进了审计事件的功能;

极狐GitLab 审计事件功能使用

针对实例级别的审计事件,可以通过管理中心 → 监控 → 审计事件来查看。比如可以在实例级别的审计事件中看到 SSH key 添加、个人访问令牌创建、群组/项目创建、删除等事件。

图片

审计事件会明确记录事件的操作主体(Author)、操作内容(Action)、操作时间(Date)及操作源 IP 地址等信息。

同样地,可以通过群组 → 安全 → 审计事件查看与群组操作有关的事件:

图片

由于极狐GitLab 群组可以进行嵌套,因此可以用同样的方法查看子群组的审计事件信息。

通过项目 → 安全 → 审计事件查看与项目操作有关的事件:

图片

此外,还可以将审计事件报告进行导出,然后发送给审计人员,审计人员可以在报告中通过过滤去查看对应的审计事件详情。

图片

关于极狐GitLab 审计事件的所有类型(实例级、群组级、项目级、其他)可以查阅极狐GitLab 审计事件官方文档。

审计事件能够记录用户对于源代码托管平台的各种操作,但是不具备异常行为(可配置)的告警功能,以便在异常行为发生时,快速操作,及时止损。为此,极狐GitLab 提供安全审计事件流功能,将审计事件发送到第三方,配合第三方的事件分析 + 告警功能来实现异常行为的告警。

审计事件流(audit events streaming)为旗舰版功能。

源代码托管的金丝雀:极狐GitLab 审计事件流

极狐GitLab 审计事件流功能可以将审计事件流发送到外部的流数据系统(可以接受并处理 JSON 格式的数据),然后再由流数据系统对数据进行分析、存储、可视化及告警等操作

图片

可以为极狐GitLab 实例、群组、子群组设置外部流数据系统。针对实例、群组/子群组及项目的操作事件就会以事件流的方式发送到配置好的外部流数据系统。审计事件流中除了上述的审计事件外,还包括对于 Git 操作的信息,比如对于代码的克隆(SSH 或 HTTPS)/推送、仓库的 Fork、MR 的创建等,而且审计事件流的功能会跟随版本的更新而持续迭代。

图片

更多关于极狐GitLab 审计事件流的内容可以查看极狐GitLab 官方文档。

极狐GitLab 审计事件流的使用需要首先配置外部流数据系统,以实例级别的配置来讲,可以通过管理中心 → 监控 → 审计事件 → 事件流 → 添加流目的地来完成:

图片

极狐GitLab 审计事件流服务会将审计事件信息推送到配置好的服务里面,以克隆仓库来讲,如果授权用户克隆了某个仓库,那么外部流数据系统会收到如下的 JSON 信息:

{
  "id": "5e194963-79bc-43ce-99f3-4190ff105b23",
  "author_id": 1,
  "entity_id": 6,
  "entity_type": "Project",
  "details": {
    "author_name": "Administrator",
    "author_class": "User",
    "target_id": 6,
    "target_type": "Project",
    "target_details": "jh-gitlab-audit-events",
    "custom_message": {
      "protocol": "ssh",
      "action": "git-upload-pack"
    },
    "ip_address": "127.0.0.1",
    "entity_path": "xiaomage/jh-gitlab-audit-events"
  },
  "ip_address": "127.0.0.1",
  "author_name": "Administrator",
  "entity_path": "xiaomage/jh-gitlab-audit-events",
  "target_details": "jh-gitlab-audit-events",
  "created_at": "2023-08-24T02:38:24.945Z",
  "target_type": "Project",
  "target_id": 6,
  "event_type": "repository_git_operation"
}

上面信息表明了操作人员信息(author_name)、执行动作(details.action)、操作仓库(details.entity_path 或 target_details)还有操作日期(created_at)、IP(details.ip_address 或 ip_address)等信息。可以将上述信息进行存储、分析、可视化及告警来事件审计事件闭环。下面以 EFK(elasticsearch、filebeat、kibana)为例来演示整个过程。

图片

将 filebeat 配置外部的流数据系统,直接接受来自极狐GitLab 的审计事件流信息,然后 filebeat 将数据处理之后存储到 elasticsearch 中,再利用 kibana 的可视化能力实现对于审计事件信息的可视化处理,最后借助 kibana 的 alert 功能实现对异常操作的告警(发送邮件、slack 消息或推送到其他系统)。

可以在 kibana 中看到的审计事件信息,诸如密码变更、仓库可见性变更(从公开到私有或者相反)、项目删除等:

图片

如果配置对应的 alert,当某项操作发生或者超过一定阈值时就触发告警,通知相关人员做进一步的处理。诸如当一个项目在一定时间内被某一个人频繁克隆,则可以触发告警,发送告警邮件到指定邮箱:

图片

或者发送到钉钉等 IM 系统上:

图片

源代码作为企业的核心资产,应该受到重视,需要打造全方位的安全防护体系,而安全审计是作为保障代码核心资产外泄的一个重要手段。极狐GitLab 审计事件和审计事件流能够形成代码安全审计的闭环,可以让用户对源代码仓库的操作都“活在阳光下”,及时发现违规、异常的操作来避免企业核心资产受损。

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

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

相关文章

什么牌子的led台灯质量好?热门的Led护眼台灯推荐

led台灯有环保无污染、耗能低、长寿命等优点,适合用在阅读、书写、批阅等办公或学习的场所。而挑选LED台灯时,分散光挡板做的比较好的优先选择,能分散大量蓝光,对眼睛危害较小。下面,小编为大家推荐五款质量好的led护眼…

几个步骤轻松把PDF转成Excel,你学会了吗

在工作和学习中,我们经常需要将PDF文档中的表格转换为Excel表格,以便进行进一步的编辑和分析。本文将介绍几个简单的步骤,帮助您快速将PDF转换为Excel,并提供一些需要注意的实现方法。 步骤一:选择合适的PDF转Excel工具…

基于SSM的教务管理

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 我们的系统是一个现代…

创新领航 | 竹云产品入选“年度优秀创新软件产品推广目录”

8月31日,由中国电子信息行业联合会主办的第二十五届中国国际软件博览会在天津拉开帷幕,本次大会以“塑造软件新生态 赋能发展新变革”为主题,为全国乃至全球软件行业高质量发展聚智聚“力”。 大会发布“2022-2023年度优秀创新软件产品推广目…

Alpha 测试与 Beta 测试

Alpha测试 Alpha测试 是由用户在 开发环境下 进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。开发者坐在用户旁边,这是在开发者受控的环境下进行的测试。由开发者随时记录下错误情况和使用中的问题。 Beta测试 Beta测试 是由…

Python实现SSA智能麻雀搜索算法优化LightGBM分类模型(LGBMClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出&a…

MybatisPlus框架教程:入门、条件构造器、接口操作、代码生成器

MybatisPlus框架 文章目录 MybatisPlus框架快速上手条件构造器接口基本操作新版代码生成器 前面我们体验了JPA带来的快速开发体验,但是我们发现,面对一些复杂查询时,JPA似乎有点力不从心,反观稍微麻烦一点的Mybatis却能够手动编写…

嵌入式Linux驱动开发(LCD屏幕专题)(二)

一、结合APP分析LCD驱动程序 1、open app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0 -------------------------------------------------------------- kernel:fb_open // fbmem.cstruct fb_info *info;info get_fb_info(fbidx);if (info->fbop…

保留网络[02/3]:大型语言模型转换器的继任者”

一、说明 在这项工作中,我们提出保留网络(RETNET)作为基础架构大型语言模型的结构,同时实现训练并行, 推理成本低,性能好。我们从理论上推导出这种联系 复发与关注之间。然后我们提出保留机制 序列建模&…

NeRF项目LLFF 解决新场景pose生成的问题

​​​​​​最近一直在做NeRF相关的项目,其中LLFF前向数据集,是NeRF常用数据集,本文讲下怎么对NeRF数据进行处理 几个重要的链接地址 github-llff : GitHub - Fyusion/LLFF: Code release for Local Light Field Fusion at SIGGRAPH 2019g…

0基础学习VR全景平台篇 第97篇:VR步进式漫游

蛙色VR步进式漫游正式上线! 为全行业室内场景提供三维空间重建能力,基于真实场景复刻,多维展示打破线下时空限制,提供高性价比的VR空间应用解决方案。 一、什么是步进式漫游? VR步进式漫游,基于AI特征点提…

QT 第五天 TCP通信与数据库

一、数据库增删改查 QT core gui sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your comp…

第4章 【MySQL】InnoDB记录结构

4.1 准备工作 MySQL 服务器上负责对表中数据的读取和写入工作的部分是 存储引擎 ,而服务器又支持不同类型的存储引擎,比如 InnoDB 、 MyISAM 、 Memory 啥的,不同的存储引擎一般是由不同的人为实现不同的特性而开发的,真实数据在…

go-zerogo web集成redis实战

前言 上一篇:go-zero&go web集成JWT和cobra命令行工具实战 从零开始基于go-zero搭建go web项目实战-03集成redis实战 源码仓库地址 源码 https://gitee.com/li_zheng/treasure-box golang redis 客户端 Go-Redis 地址: GitHub: https://github.…

酒店常见十大突发事件应急处置方案

文章目录 1.处理客房门未关的程序2.客房内异常声响的处理程序3.酗酒客人应对程序4.预防打架斗殴、流氓滋事5.停电紧急处理6.客人差欠、拒付酒店费用的处理程序7.客人意外受伤、病危、身亡的处理程序8.防风、防汛等自然灾害应急处理9.发生盗窃案处理程序10.客人报告的“丢失/盗窃…

链表例题小总结:

链表: 第一种题型:双指针 力扣203:移除链表元素 力扣题目链接 题意:删除链表中等于给定值 val 的所有节点。示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2&#xff1…

浏览器窗口间的通信

一、汇总 二、同源策略 三、webSocket (无跨域限制) 优点:无跨域限制 缺点:成本高 四、客户端存储 1、localStorage onStorage 例子: 2、定时器 客户端存储 例子: 缺点: 五、postMessage (无跨域…

TypeScript类型判断

快速认知 TS允许我们为变量设置类型限制并进行检测判断 // 常见的类型判断 let age: number 20; let isDead: boolean true; let name: string abc; 但是上面的写法太啰嗦了。ts有一个类型推断机制,ts会根据为变量赋的值自动给该变量设置一个类型。上面可以写为…

SpringMvc--综合案例

目录 1.SpringMvc的常用注解 2.参数传递 基础类型(String) 创建一个paramController类: 创建一个index.jsp 测试结果 复杂方式 ​编辑 测试结果 RequestParam 测试结果 PathVariable 测试结果 RequestBody pom.xml依赖导入 输…

软件测试之登录测试详解-功能性

功能测试 一、功能测试–登录 功能性测试用例包括: 1.什么都不输入,点击提交按钮,看提示信息。(非空检查) 2.输入已注册的用户名和正确的密码,验证是否登录成功; 3.输入已注册的用户名和不…