Jar 组件自动化风险监测和升级实践

news2025/4/6 9:28:22

背景

以 Xstream、Jackson、Fasjson 等为代表的 Jar 组件高危漏洞层出不穷,安全组每年 N 次推动业务线进行第三方 Jar 组件升级,每次升级动辄涉及成百上千个应用服务,给双方都带来了沉重的负担。为了降低安全组在 Jar 组件升级期间的工作量,同时尽量给业务线减负,Qunar 安全组在 Jar 组件自动化风险监测和升级上进行了大量实践,并总结形成了一套相对完善的解决方案。本主主要聊一下 Qunar 安全组在 Jar 组件自动化风险监测和升级方面的探索和实践。

流程介绍

Jar 组件风险监测和升级本质是由风险情报驱动的一个工作流,主要包括外部安全通告监控、Jar 组件资产收集、受影响资产分析、通知业务线升级等流程。在之前一段时期,Jar 组件漏洞升级依靠安全运营人员人工的方式来串联每个流程,这样效率低下,甚至容易出错。随着 SOAR(安全编排自动化与响应)近年来的备受关注,Qunar 安全组也在 SOAR 项目上进行了建设,依托 SOAR 对事件的整合和安全服务串联能力,我们针对 Jar 组件风险监测和升级场景进行了合理编排,达到了自动化的效果,极大提升了安全运营效率。除此之外基础架构的同事,提供了 TCDEV 自动升级服务,为业务线升级操作提供了极大便利。事件流程如下图所示:

技术实现

本部分主要介绍 SOAR 串联的每部分安全工具、服务的技术实现。

1. 安全通告监控

安全运营人员第一时间获取漏洞通告,对漏洞的评估研判、迅速响应和有序推动至关重要。早在19年,安全组借助应届生项目,实现了“安全漏洞智能感知系统”。系统主要功能为:\

  • CVE、CNVD 以及知名厂商漏洞风险告警抓取
  • 漏洞信息去重整合
  • 对存在 POC 的漏洞抓取 POC
  • 漏洞信息模糊匹配关联 Jar 组件资产库(SecDB),IM 预警安全运营人员

该系统关键点在于会通过模糊匹配的方式关联 Jar 组件资产库,关联到资产后 IM 发送预警信息给安全运营人员,进行进一步的风险评估以及后续的 Jar 组件升级流程。系统流程图如下:

漏洞感知平台,以 Xstream 为例抓取效果图:

2. Jar资产收集

安全资产收集是安全运营的必备基础能力之一,Qunar 安全组历来都把资产收集做到了业内最好的水准。当前我们采用以 HIDS 为主要平台,通过在 Agent 端调度资产收集插件的方式,高效的对主机的资产进行定时、实时的采集。Agent 调度示意图:

  • 查找 cataline.base 列表
items=$(ps aux | grep catalina.base | grep -v grep) 
  • 获取 catalina.home、catalina.base 等路径信息
catalina_home=$(echo "$item" | tr ' ' '\n' | grep catalina.home | cut -d= -f2 | sort | uniq)
catalina_base=$(echo "$item" | tr ' ' '\n' | grep catalina.base | cut -d= -f2 | sort | uniq) 
  • 根据 server.xml 获取 以及 信息
  • 根据 appBase 或者 docBase 定位 WEB-INF/lib 路径
  • 枚举 WEB-INF/lib 路径下 Jar 包,提取每个 Jar 包的 pom.properties 信息,这样就可以进行资产收集了,例如:
jar_version=$(echo "$pom_properties" | grep -m 1 -E '^version=' | awk -F'=' '{print $NF}' | tr -d '\n\r')
jar_groupid=$(echo "$pom_properties" | grep -m 1 -E '^groupId=' | awk -F'=' '{print $NF}' | tr -d '\n\r')
jar_artifactid=$(echo "$pom_properties" | grep -m 1 -E '^artifactId=' | awk -F'=' '{print $NF}' | tr -d '\n\r') 

通过以上手段的就可以获取主机上存活 Java 项目依赖的 Jar 包信息,一旦爆发漏洞根据以上信息,关联应用以及 Owner 快速响应。以 Xstream 为例,收集的资产信息如下:

3. SOAR

SOAR 全称 Security Orchestration, Automation and Response,即安全编排自动化与响应,该技术主要聚焦于安全运营领域。Qunar 安全组基于 StackStorm 工作流引擎二次开发打造了 SOAR 项目,安全组件和剧本通过 python 和 yaml 实现。在 Jar 组件自动化风险监测和升级场景中流程如下图所示:

① 安全通告监控服务发出预警信息后,需要人工干预。安全运营人员会研判是否启动升级流程,如果是,则填写配置漏洞信息,启动升级流程;否则,忽略该告警信息

② 启动升级流程后,首先需要关联信息生成受影响资产清单 a) 资产列表生成:根据配置的版本信息进行逻辑过滤,生成受影响资产的列表,同时标记内外网,以执行不同的优先级策略b) 关联 Appcode:通过 Portal API 获取受影响主机对应的 Appcodec) 关联 Owner:通过 Portal API 获取受影响主机对应的 Ownerd) 关联技术 TL:通过 ISAPI 员工信息关联 Owner 的技术 TL(技术 TL 充当安全对接人的角色,执行自上而下的漏洞升级推动工作)

③ 接下来会将资产清单提供给 tcdev,tcdev 会接管可自动化升级的应用,剩余部分继续由安全负责通知业务线技术 TL 升级

Xstream 漏洞升级示例,配置漏洞信息,启动自动关联信息升级通知流程:

Xstream 安全通知示例,通过内部 IM 通知技术 TL 执行升级任务:

4. TCDEV自动升级服务

一般的公司,将风险事件通知负责人后整个事件流程就结束了,然后执行周期性的通知升级。但是在 Qunar 内部,基于 TCDEV 开发的自动升级服务,可以极大解放业务线的风险组件升级压力。TCDEV 自动升级服务可以帮助业务线自动进行 Jar 组件升级,当前 50% 的应用可以自动化升级, 30% 的应用可以通过 TCDEV 提供的一键升级服务进行一键升级(需业务线开发评估风险),另外 20% 应用执行安全组传统的升级策略。TCDEV 自动升级详情如下:

  • 应用已经升级 tcdev 4.x,且已接入灭霸自动化测试的应用,tcdev 接管升级,届时会联系业务确认(应用占比 50%)* 应用已升级 tcdev 4.x,但自动化测试未覆盖的应用,可在 portal 上点击 “tcbom升级” 快速完成(应用占比30%)\* 尚未升级 tcdev 4.x 的应用,建议手动升级 tcdev 至 4.0.x (应用占比20%)总结

以上就是 Jar 组件自动化风险监测和升级实践中涉及的方方面面。整体流程还有优化提升的空间,比如在漏洞评估和 TCDEV 自动升级服务还需要人工介入等。另外,TCDEV 自动升级服务价值极大,由于资料较少,没有触及原理实现,希望基础架构的同学可以写一篇文章介绍一下。由于水平有限,文章多有纰漏不足,也恳请大家指正。

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

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

相关文章

JS 如何利用浏览器的 cookie 保存用户名

前言 浏览器的cookie可以用来存储一些少量的网站信息,比如登录的用户名,用于提高用户体验非常有帮助 有的一些网站在第一次登录后,在指定的时间范围内容,下次在打开网站,再次登录时,不用每次都重新输入用户名的 或在做一些购物车效果时,也可以使用cookie,保持一个状态持续多…

【数据结构与算法——C语言版】3. 二分查找

前言 本文将介绍在线性表查找中非常常用的一种查找算法——二分法,先介绍二分查找法的核心思路,然后进行代码讲解,最终给出二分查找法的时/空复杂度,并比较其和上篇文章【数据结构与算法——C语言版】2. 数组介绍的顺序查找的区别…

神经网络漫谈(一)

神经网络漫谈(一) 发表时间: 2023年1月6日创作地点:湖北省武汉市作者:ixy_com&Bill Kromydas封面图片来源:Towards Data Science 1、背景 基本概念:神经网络,也称为人工神经网络 (ANN) 或模拟神经…

基础数据结构——二叉树

目录 一、二叉树性质 1、满二叉树、完全二叉树 2、平衡二叉树 3、不平衡二叉树 二、二叉树的存储 1、普通做法 2、竞赛做法 三、二叉树的遍历 1、宽度优先遍历 2、深度优先遍历 (1)先(根)序遍历 (2&#x…

【java中的集合框架】学习接触java中的集合,走上学习数据结构道路

前言: 大家好,我是良辰呀🏫🏫🏫,从今天开始,我们一起来探索数据结构的知识海洋。期待与大家结伴同行,gogogo。🍬🍬🍬 🧑个人主页&…

【自学C++】C++命名空间

C命名空间 C命名空间教程 C 中的命名空间实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。 命名空间是 ANSI C 引入的可以由…

前端入门笔记 03 —— Web(html CSS)布局

常用布局 包含两个定义: 尺寸 定位 定义通过CSS拾取网页元素,控制他们控制普通文档流,周边元素,父容器,浏览器窗口 覆盖默认布局行为盒子模型普通文档流 (左到右,上到下) 块级元素…

2022年中国数字化十大转型趋势

推动数字化发展既是数字时代构筑竞争新优势的战略选择,也是加快构建“双循环”新发展格局和打造高质量发展新引擎的现实需要。我国高度重视数字化发展,不断完善政策措施,着力推动数字化转型。从行业发展看,构建以数据为驱动、以客…

Redis(一)

Nosql 即 Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充。 Nosql 作用:应对基于海量用户和海量数据前提下的数据处理问题。 特征 降低磁盘IO次数,越低越好 —— 内存存储 去除数据间关系&#xff…

网络技术基础

theme: qklhk-chocolate 网络技术基础 一、IP地址基础 IP地址是指在网络中用于标识发送或接收数据报文设备的唯一的逻辑地址。 IP地址的主要作用: 标识主机或网络设备(标识其网络接口,提供其在网络中的位置)网络寻址 •在IP网…

安装pytorch搭配cuda使用

问题 深度学习程序,在服务器运行,需要借助GPU加速。为了检测是否开启了GPU加速,采用以下代码: ~python >> import torch >> torch.cuda.is_available() >> false #说明没有使用GPU加速安装过程 安装老版本的…

如何做好美颜sdk与直播平台的适配?

美颜sdk作为目前社交视频拍摄平台用户的刚需,在近几年可谓是名声大噪,无论是强大的美颜功能还是多元化的趣味拍摄方案都让用户们“爱不释手”,平台自然也是看中了这一点,纷纷为自己平台接入美颜工具。但是,美颜sdk作为…

免费视频格式转换软件,6大免费视频转换器推荐

看到大多数人拥有电脑、智能电视,尤其是移动设备,这一代人并不奇怪。在线观看电影和视频是最常见的消磨时间的娱乐方式之一。能够通过网络观看视频是件好事。有些人还喜欢下载它以供离线观看,因为您并非一直都在使用 Wi-Fi。有时,…

C++——异常

文章目录1.C语言传统的处理错误的方式2. C异常概念3. 异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3异常安全3.4 异常规范4.自定义异常体系5.C标准库的异常体系6.异常的优缺点6.1 C异常的优点:6.2 C异常的缺点:1.C语言传统的处理错误的方式 传统…

Codeforces Round #842 (Div. 2)(A~D)

A. Greatest Convex给出数字k,输出最大的x,使得x满足大于等于1小于k,且x! (x - 1)!是k的倍数。思路:提取公因式得到,(x 1) * (x - 1)!,由题意知,x 1可以是k,故x最大是k - 1且一定…

如何制作网站?不知道这个诀窍你的网站等于白做

如何制作网站?不知道这个诀窍你的网站等于白做!#外贸 #独立站 #跨境电商 #网站优化 #网站建设 做每一个网页之前,先确定好网页里面的元素,你知道客户是谁,他目前生意做什么体量,主要做什么市场? 我在根据我拿到的这…

【实操篇】Linux的磁盘分区和挂载

目录 ●磁盘分区及挂载 ●典型案例实战 ●磁盘查询 1.查询系统整体磁盘使用情况 2.查询指定目录的磁盘占用情况 3.实用指令及其案例 ●树状目录展示 ●磁盘分区及挂载 简要介绍: 1.Linux无论有几个分区,还是分给哪个目录去使用。它归根结底也就只有…

C. Least Prefix Sum(优先队列)

传送门题意:给你一个长度为n的数组,你可以进行任意次操作(也可能是0),可以使,然后给你一个数m,问你要进行多少次操作,才能使长度为m的前缀和的值在所有的前缀和中最小。思路&#xf…

JS 的 9 种作用域,你能说出几种?

作用域想必大家都知道,就是变量生效的范围,比如函数就会生成一个作用域,声明的变量只在函数内生效。 而这样的作用域一共有 9 种,其中几种绝大多数前端都说不出来。 下面我们就一起过一遍这 9 种作用域吧,看看你知道…

具有自主、多鳍和仿生机器人的鱼类三维游泳(2021)

具有自主、多鳍和仿生机器人的鱼类三维游泳(2021) 原文链接:https://iopscience.iop.org/article/10.1088/1748-3190/abd013 这是一篇仿生机器鱼的设计,该论文从鱼的仿生结构到具体的一部分电路设计都有非常详细的介绍,鱼的尺寸大小仅有手掌…