背景
在安全管理的工作中常常遇到互联网上新发布了一个包的漏洞,此时部门需要立刻知道这个包的引用情况。遇到这种情况,安全管理部门往往是采用发邮件让开发人员进行自查,并要求停止引用。
要求每个研发自查,并不是一个有效的管控方式,首先是开发人员要有足够的自觉性,其次时间上也不可控,并没有一个有效的手段来约束。还会造成没有引用的项目组,自行排查而浪费时间。
Xray工具介绍
Xray可以根据包的情况来检测到依赖的项目。当出现上述问题的时候,可以针对某一个包来反向排查,实现依赖项目的精准定位,从而准确通知到使用者。可以大大提升排查问题的效率,降低企业安全管控的成本。同时,可以设置包安全质量门限,阻断高危漏洞的包进行引用。
Xray使用的经验分享
使用了Xray虽然可能帮我们节省很多工作,但是工具还是要配合良好的管理手段以及正确的使用方法。不然也会带来一些问题。
比如一个包到发现漏洞,漏洞数据发布到公网源,同时漏洞数据源再去爬取数据,再同步到我们本地漏洞库,这个过程也是需要一定的时间的,所以这个期间可能有一个空档期。如果这个漏洞十分紧急,需要立刻封锁,那么这个空档期的时间需要由我们安全团队来进行严格管控。如果完全依赖漏洞数据库源,这个时间上做不到一个严格的可控性。
再就是我们如果设置了一个相对宽泛的质量门限,比如安全级别为高的依赖包不允许下载,那么随着漏洞库的更新,每天可能都会有一些新的高危漏洞被引入,有可能出现昨天开发的时候这个包还没有问题,今天就不能引用了,这样对于开发团队的也是非常不友好的。我们在安全管理上要对漏洞的风险进行分级:
风险极高,要求开发人员立刻整改并且24小时后阻断下载。
风险较高,给开发团队预留一周的时间进行整改。
风险较低,阻断生效可以由安全管控的团队每个月或者每个季度进行定期自动更新。
那么此时我们就需要对漏洞组件进行一个精准的管理策略,将我们需要屏蔽的漏洞组件进行定期更新,并不是单纯的利用漏洞库的规则进行组件的屏蔽。
Xray精准规则配置方法
那么利用Xray精准的配置屏蔽规则配置呢?
1. 首先,定义一条规则(Policies),比如高危漏洞不许下载。
其次,在创建watches的时候指定filter,通过filter来限制组件的监测范围。
最后,如果这个范围内的组件本身就有高危漏洞,则这个组件则会被屏蔽下载,如果这个在当前没有漏洞,我们还可以通过自定义一条高危的漏洞数据。
具体操作如下:
1. 创建一个Policies
在Xray首页Policies菜单页面中进行新建如下图:
(注:policies在Xray中起到设定规则的作用)
![1.png](https://static.studygolang.com/200824/50f2d405249bb242cc35459c6749d78e.png)
填写名字,选择类型Security,增加规则,
![2.png](https://static.studygolang.com/200824/ed90e47033c1bb67b127400a336248c7.png)
填写规则信息,名字,选择级别High,向下滚动页面选择阻断下载 “block download”。
![3.png](https://static.studygolang.com/200824/81e536b147df4acec5a8499be6ad432f.png)
![3,1.png](https://static.studygolang.com/200824/0f722675fe2fde1adb04c19093705daf.png)
向下滚动页面选择阻断下载“block download”。如果要在CI构建中也要监控,那么勾选“ail Build”。
2. 然后,创建Watches
在Xray首页Policy菜单页面中进行新建如下图:
(注:Watches在Xray中起到规则与Artifactory中资源关联的作用,也就是设定上面Policies的作用域)
![4.png](https://static.studygolang.com/200824/c1fc3417acdc6e8ca63ded113fa13c33.png)
填写名字,勾选Enabled启动,增加需要监管资源(构建或者仓库)
![5.png](https://static.studygolang.com/200824/4ddb46038dde669fa60df17364affcaf.png)
选择需要阻断的组件包存在的仓库
![6.png](https://static.studygolang.com/200824/40da2664b6c354a3255fe0e17784f577.png)
在添加资源界面选择仓库之后使用,Filters指定漏洞组件的全路径,或者组件包名,添加完成资源的同时选择刚才的新增的policies。
![7.png](https://static.studygolang.com/200824/416c05b50165d10366303e17c234a1ab.png)
以上配置完成之后,那么这个仓库的只会针对这个包进行规则的监控,当这个包存在漏洞时,会被阻断下载。
3. 创建自定义漏洞
根据上面设置的规则,如果我们监控的这个组件包存在漏洞,则会被阻断下载。那么如果这个组件没有漏洞需要怎么做呢?
此时需要使用Xray自定义漏洞的功能,针对这个包我们自行添加一个漏洞。
在Xray的Components菜单中搜索我们组要阻断的组件名,
![8.png](https://static.studygolang.com/200824/e2b5cceff372870161d11d3073960fb2.png)
进入组件列表,找到我们需要阻断的组件版本,在右上角Action ,选择Assign Custom issue
![9.png](https://static.studygolang.com/200824/49794ce4e51a393be5fdb5d6197db297.png)
弹出如下窗口,填写名称与描述后,将安全级别设置为High,通过这个级别来适配我们上面创建的Policies,触发我们Policies的阻断规则。填写完之后,点击保存,之后就可以看到我们自定义的漏洞了。
![10.png](https://static.studygolang.com/200824/49a08a68fbc87daf3d2cd305acd9f86d.png)
![11.png](https://static.studygolang.com/200824/46a147e0cb773bbd62e69dc47ddd984e.png)
欢迎观看JFrog杰蛙每周二在线课堂,点击报名: https://www.bagevent.com/event/6643470
有疑问加站长微信联系(非本文作者)