信息安全-应用安全-蚂蚁集团软件供应链安全实践

news2024/12/25 9:36:41

8月10日,由悬镜安全主办、以“开源的力量”为主题的DSS 2023数字供应链安全大会在北京·国家会议中心隆重召开。蚂蚁集团网络安全副总经理程岩出席并发表了《蚂蚁集团软件供应链安全实践》主题演讲。

图片

图1 蚂蚁集团网络安全副总经理程岩发表主题演讲

以下为演讲实录:

尊敬的各位领导,各位嘉宾,谢谢子芽给我们这样的宝贵机会来分享蚂蚁集团在软件供应链安全方面的实践。我叫程岩,花名“小哥”。这次我的主题分享会从四个方面展开。

一、软件供应链面临的风险与挑战

供应链面临哪些威胁?第一是代码漏洞,第二是供应链恶意投毒,第三是合规断供问题,这次重点讲前两者。代码漏洞和恶意投毒的问题犹如冰山,已经被曝露的漏洞或事件只是海面上的冰山一角,冰山之下还有多少?没有人能准确回答。同样为什么供应链安全话题如此火热和被大家所重视,也是因为这类威胁的攻击门槛低、攻击方式隐蔽、影响范围大而且危害大。

为了确保供应链安全风险可控,我们会面临怎样的挑战?

第一个挑战,生产源头不可控。无论我们自己的安全意识如何,任何一家企业、院校、监管单位、安全机构都无法百分之百保证开源软件的安全性。

第二个挑战,稳定性不可靠。由于生产源头不可控,而且开源是非常开放的形式,无法保证开发的软件新版本包括国内外其他开源软件百分之百向下兼容。

第三个挑战,复杂的实际场景。不同的应用对同一个组件的调用方法、传入参数是否外部可控等复杂多样,当爆发漏洞时,难以确定风险的真实影响面,无法确定真正需升级的应用系统,只能选择伤筋动骨地按版本号一刀切式的全部升级。

第四个挑战,爆炸式的依赖。直接依赖、间接依赖和次间接依赖的存在,导致某一组件爆发漏洞,往往随之引发放大效应,波及范围广,且非常隐秘。

上述风险和挑战的存在,使得不管是企业还是整个国家层面,对于供应链安全建设的要求和期待,不仅要面向合规,更要面向实战。

二、集团软件供应链安全目标思考

在如此严峻的安全形势下,面对众多不可控的情况和混沌状态,思考金融类企业安全建设前首先需要先明确安全目标,以终为始,确定安全建设终态的效果是什么。蚂蚁集团对供应链安全建设的终态分为两个方向:

2.1 让安全满意

先找准服务对象,即让安全满意,没有安全就没有用户放心把钱交给金融类企业。如何“让安全满意”,我们认为有四个方向或者称四种状态:

第一,第一时间获悉投毒、漏洞、断供、合规等方面的情报,并且在真正的攻击来临之前快速有效止血。

第二,止血只能解决当下问题,不能解决长期问题,对于高安全型企业而言,要求止血更要求彻底修复。与此同时,看不见、灯下黑、没人养的系统所存在的安全问题也能得到解决。

第三,已知问题不再重复发生。从实践来看,大多数企业往往在开发过程中仍会引入过去使用过且存在风险的镜像或者组件,大部分安全人员也并不清楚哪些组件是较为安全的。问题解决是可喜的,但相同问题再次出现,可能意味着“老树开新花”,存在巨大风险。

第四,无惧未知攻击。当0Day漏洞爆发时可以快速响应和修复,甚至做到提前免疫。

2.2 让业务爽

安全不能只是在管理和指挥业务。在一家企业里,如果业务出现问题无法发展,安全就没有生存余地,安全目的其实是帮助业务成功,让业务安全稳定地发展壮大。所以当安全的核心诉求得到一定满足以后,接下来要思考的问题是如何让业务满意或者让业务爽。怎么理解“爽”?有以下几点:

  1. 安全要给业务足够长的修复时间。业务不希望熬夜加班来修复漏洞,此外,因为金融系统较为复杂,一旦出现问题会影响支付行为,需要较长的修复发布时间。
  2. 安全要让业务低成本完成修复升级发布。发布工作要经历非常重要和稳定的周期,尤其是非常关键核心系统,往往需要2-3天才能保证全链路无损发布。如果每次漏洞修复要投入2-3天的时间精力,这对于业务而言,修复成本是不可理解的。
  3. 安全要帮助修复。研发往往会有诉求,希望安全帮助修复他代码中存在的漏洞。
  4. 安全要保姆式推荐。业务往往希望安全能如保姆一般在旁指导,在开发过程中就推荐或者直接帮助选择安全版本的组件。

图片

图2 程岩分享蚂蚁集团的供应链安全实践经验和成果

三、蚂蚁集团软件供应链安全体系发展

为了达到上述终态效果,蚂蚁经历了三个阶段来推进相关建设。

1.0阶段:十万火急

基于我多年来在甲方工作的经历,我发现每个甲方在遇到安全问题时都认为是十万火急的。在这个阶段,我们将安全活动分为应急态、研发态、运营态。

应急态包含止血策略WAF、排查策略SAST和DAST以及修复策略手工修复和紧急发布。

研发态&运行态是为了防止0Day复现,包含利用SAST和DAST工具进行巡检查漏补缺以及通过SAST和IAST工具进行安全卡点避免再犯。

图片

图3 蚂蚁集团软件供应链安全体系建设1.0阶段

2.0阶段:游刃有余

1.0阶段必然无法实现“让安全满意”“让业务爽”的效果,所以我们进入2.0阶段:让安全和研发可以放心、不着急地将安全漏洞解决,所以称为“游刃有余”。在这个阶段,我们同样将安全活动分为应急态、研发态、运营态。

相较于1.0阶段,2.0阶段的应急态补充了大量工作,比如在止血策略中补充了RASP和miniRASP,其中miniRASP是针对短期运行的计算任务所采取的轻量级注入方式;同时在排查策略中补充了SCA,用于梳理间接依赖和链路画像。我们认为只有支持间接依赖检测的SCA才是真正的SCA。所以1.0阶段,我们SCA这个方块里标注的只是SAST。

值得一提的是,2.0阶段,我们在应急修复层面实现了无痛升级。无痛修复首先需要知道不受到漏洞威胁的组件版本,以及为了防止兼容性问题,需要确认安全修复版本与存在漏洞版本相比,在组件代码层面有哪些修改,是否夹带“私货”或大幅修改原有组件代码逻辑,且这个“不兼容”修改是否影响业务系统的代码链路。一旦发现安全修复版本的代码会影响业务系统链路,便可判断系统不能自动升级,需要研发人工介入来观察修复稳定性。当通过上述方式确保漏洞修复不会影响业务系统链路时,便可以帮助业务部门进行自动升级,会帮助研发人员修改代码,会进行自动化发布和回归测试以及线上监控系统观察,研发人员只需要接收报警信息后快速响应和处置即可,所以称为无痛升级。

图片

图4 蚂蚁集团软件供应链安全体系建设2.0阶段

3.0阶段:持续可信

相较于2.0阶段,3.0阶段是为了实现对未知威胁的免疫。何谓可信?是明确应用系统可执行的进程和行为,即便应用本身存在漏洞或被投毒。目前我们仍在对3.0阶段进行持续打磨,争取实现真正意义上的完全可信。

图片

图5 蚂蚁集团软件供应链安全体系建设3.0阶段

四、蚂蚁集团软件供应链安全实践分享

接下来分享我们在软件供应链安全实践方面的三个有意思的经验和成果,希望能给大家启发。

  • 1.蚂蚁集团软件供应链组件全生命周期管控流程

我们公司基本都是通过自研的方式来开发系统,所以面临的安全问题主要集中在组件的供应链安全威胁上。在整个管控流程中,有个重要的环节我们称之为“版本保鲜”,即当研发人员尝试引入了一个低版本或者存在安全问题的组件时,因在制品库层面进行组件版本的保鲜控制,这个低版本根本无法被构建时候引入成功,如此从源头管控组件的安全。

图片

图6 蚂蚁集团软件供应链组件全生命周期管控流程

  • 2.软件供应链组件辅助修复技术

业务系统在安全卡点之后,自动辅助研发人员进行修复,其核心在于对蚂蚁集团常用的组件进行扫描检测和修改引入的版本,并通过PR的方式告知相关研发人员,由他们来审查该安全修复是否对业务产生影响,从而实现业务稳定性和安全性的平衡。

图片

图7 蚂蚁集团软件供应链组件辅助修复技术应用流程

3.应用可信解决方案

我们认为当下真正可信的解决方案应该是可以在企业内部实现大规模、可持续落地的安全解决方案,而非华丽的银弹。如图所示,首先在我们推出的安全平行切面底座上配置的各类行为规则,然后应用可信解决方案的核心是可信策略运营,即通过持续轻量级的运营,让应用、容器、网络行为能够被持续地监测和风险收敛,并且不影响其正常的功能。

图片

图8 蚂蚁集团应用可信解决方案

时间关系,最后用一句话来结束本次分享,同样也是我非常喜欢的我们蚂蚁集团愿景中的一句话,“为世界带来微小而美好的改变”。希望今天我的分享能够给大家带来一些启发。谢谢!

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

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

相关文章

css实现文字翻转效果

csss实现文字翻转效果 主要实现核心属性 direction: rtl; unicode-bidi: bidi-override; direction: rtl; 这个属性用于指定文本的方向为从右到左(Right-to-Left)。它常用于处理阿拉伯语、希伯来语等从右向左书写的文字样式。当设置了 direction: rtl; …

Java队列有哪些?8大常用Java队列总结

什么是队列? 队列是一种操作受限的线性表,只允许在表的前端(front)进行删除操作又称作出队,在表的后端进行插入操作,称为入队,符合先进先出(First in First out)的特性。在队尾插入…

Rstudio开不开了怎么办?R is taking longer to start than usual

Rstudio Server 启动时卡死 在使用 linux 服务器版 RstudioServer 的过程中,发现出现了一个问题,导致没有办法正常载入工作页面,网页提示信息是“R is taking longer to start than usual”,直接翻译过来就是“这次启动 R 会比平常…

Unity RenderStreaming 云渲染-黑屏

🥪云渲染-黑屏 网页加载出来了,点击播放黑屏 ,关闭防火墙即可!!!!

$attrs,$listeners

vue实现组件通信的方式有: 父子通信 父组件向子组件传递通过props定义各个属性来传递,子组件向父组件传递通过$emit触发事件 ref也可以访问组件实例跨级通信 vuex bus provide / inject $attrs / $listeners解释 $attrs / $listeners $attrs 将父组件中…

Django实现音乐网站 ⒂

使用Python Django框架制作一个音乐网站, 本篇主要是歌手详情页-基本信息、单曲列表功能开发实现内容。 目录 歌手基本信息 增加路由 显示视图 模板显示 推荐歌手跳转详情 歌手增加基本信息 表模型增加字段 数据表更新 基本信息增加内容渲染 歌手单曲列表…

Watermark 是怎么生成和传递的?

分析&回答 Watermark 介绍 Watermark 本质是时间戳,与业务数据一样无差别地传递下去,目的是衡量事件时间的进度(通知 Flink 触发事件时间相关的操作,例如窗口)。 Watermark 是一个时间戳, 它表示小于该时间戳的…

SpringBoot进阶使用

参考自 4.Web开发进阶.pptx[1] 静态资源访问 默认将静态资源放到src/main/resources/static目录下,这种情况直接通过ip:port/静态资源名称即可访问(默认做了映射) 也可以在application.properties中通过spring.web.resources.static-locations进行设置 例如[2]&…

第63步 深度学习图像识别:多分类建模误判病例分析(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 上两期我们基于TensorFlow和Pytorch环境做了图像识别的多分类任务建模。这一期我们做误判病例分析,分两节介绍,分别基于TensorFlow和Pytorch环境的建模和分析。 本期以健康组、肺结核组、COVID-19组、细菌性&am…

Pytorch中如何加载数据、Tensorboard、Transforms的使用

一、Pytorch中如何加载数据 在Pytorch中涉及到如何读取数据,主要是两个类一个类是Dataset、Dataloader Dataset 提供一种方式获取数据,及其对应的label。主要包含以下两个功能: 如何获取每一个数据以及label 告诉我们总共有多少的数据 Datal…

终端登录github两种方式

第一种方式 添加token,Setting->Developer Setting 第二种方式SSH 用下面命令查看远程仓库格式 git remote -v 用下面命令更改远程仓库格式 git remote set-url origin gitgithub.com:用户名/仓库名.git 然后用下面命令生成新的SSH秘钥 ssh-keygen -t ed2…

Matlab图像处理-线性变换

线性变换 空间域处理技术是直接对图像的像素进行操作。灰度变换不改变原图像中像素的位置,只改变像素点的灰度值,并逐点进行,和周围的其他像素点无关。 灰度线性变换即是对图像的灰度做线性拉伸、压缩,映射函数为一个直线方程。…

【大数据】数据湖:下一代大数据的发展趋势

数据湖:下一代大数据的发展趋势 1.数据湖技术产生的背景1.1 离线大数据平台(第一代)1.2 Lambda 架构1.3 Lambda 架构的痛点1.4 Kappa 架构1.5 Kappa 架构的痛点1.6 大数据架构痛点总结1.7 实时数仓建设需求 2.数据湖助力于解决数据仓库痛点问…

137.只出现一次的数字

目录 一、题目 二、代码 一、题目 137. 只出现一次的数字 II - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int singleNumber(vector<int>& nums) {int answer0;int count0;//用于计数for(int i0;i<32;i){count0;for(int j0;j&l…

Shell - 根据用户名查询该用户的相关信息

文章目录 #! /bin/bash # Function&#xff1a;根据用户名查询该用户的所有信息 read -p "请输入要查询的用户名&#xff1a;" A echo "------------------------------" ncat /etc/passwd | awk -F: $1~/^$A$/{print} | wc -l if [ $n -eq 0 ];then echo …

unity pivot and center

一般采用pivot即默认的模式 选中物体的轴心 Center中心 选中多个物体&#xff0c;两咱情况下旋转的效果也不一样 围绕各自中心旋转 Center 围绕中心旋转

K8s:一文认知 CRI,OCI,容器运行时,Pod 之间的关系

写在前面 博文内容整体结构为结合 华为云云原生课程 整理而来,部分内容做了补充课程是免费的&#xff0c;有华为云账户就可以看&#xff0c;适合理论认知&#xff0c;感觉很不错。有需要的小伙伴可以看看&#xff0c;链接在文末理解不足小伙伴帮忙指正 对每个人而言&#xff0c…

python 笔记(2)——文件、异常、面向对象、装饰器、json

目录 1、文件操作 1-1&#xff09;打开文件的两种方式&#xff1a; 1-2&#xff09;文件操作的简单示例&#xff1a; write方法: read方法&#xff1a; readline方法&#xff1a; readlines方法&#xff1a; 2、异常处理 2-1&#xff09;不会中断程序的异常捕获和处理…

在CentOS7中,安装并配置Redis【个人笔记】

一、拓展——Ubuntu上安装Redis 输入命令su --->切换到root用户【如果已经是&#xff0c;则不需要进行该操作】apt search redis --->使用apt命令来搜索redis相关的软件包【查询后&#xff0c;检查redis版本是否是你需要的&#xff0c;如果不是则需要看看其他资料~】ap…

QT可执行程序打包成安装程序

目录 1.将QT程序先放到一个文件中 2.下载QtInstallerFramework-win-x86.exe 3.将setup.exe单独拷贝出来&#xff0c;进行安装测试 4.测试安装后的程序是否可执行 1.将QT程序先放到一个文件中 &#xff08;1&#xff09;QT切换到release模式&#xff0c;编译后在构建目录生…