0x00 Referer
安全同学谈谈Maven依赖仲裁
0x01 Maven是什么?
依赖管理工具
0x01 通过什么手段管理依赖的?
通过一组GAV明确表示一个依赖,比如:
<groupId> : com.alibaba 一般是公司的名称
<artifactId> : fastjson 项目名称
<version> : 1.2.24 版本号
0x02 Maven是如何处理项目中的直接依赖和间接依赖的?
-
依赖结构树缓存 -
重复依赖舍弃 -
广度遍历算法
0x03 遇到相同依赖时,Maven是如何进行决策的?
依靠Maven的核心仲裁机制
-
越靠近主干越优先
-
单颗树在依赖在竞争时(
dependencies
)(注意:不是dependencyManagement
里的dependencies
): -
当 deep=1
,即直接依赖。同级是靠后优先。 -
当 deep>1
,即间接依赖。同级是靠前优先。
第二条用人话解释:间接依赖先引入优先
0x04 间接依赖漏洞治理
结论:
-
主POM的 dependencyManagent
可以管控到 间接依赖 和 不显示声明version
的直接依赖。 -
主POM的dependencies不能出现危险版本,否则子pom天然的继承了这个危险版本参与打包。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>2.1.13.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
后面会在写个基于maven的SCA建设与治理
原文始发于微信公众号(小宝的安全学习笔记):供应链SCA之Maven间接依赖
特别标注:
本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论