背景:
公司最近对生产环境进行漏洞扫描工作,其中扫出节点上边的node_exporter有/debug/vars信息泄露漏洞,一时很懵,心中🐎娘,事情好多啊,和前几天的的pprof漏洞很像,还被定级为中危,真的服了,通过浏览器访问漏洞的接口发现可以看到一些运行时的信息,下面开始漏洞修复工作,下边附图。
因为个人不太懂golang语言,所以在网上查了好多的资料,看着好像是说node_exporter本身是没有这个接口的是因为导入了expvar包,会自动产生这个接口
。
修复步骤:
看了一下node-exporter引用了github.com/prometheus/client_golang/prometheus
这个包,这个包中的expvar_collector.go又引了expvar所以我们需要去把这个删除掉。
1. 我们需要先把依赖拉下来
#先进到项目的目录中
cd node_exporter
go mod vendor
#执行完会出现一个vendor的依赖包目录,如下图黄框中。
2. 然后需要把有漏洞的依赖包删除掉
#现在我们需要将目录中的两个包删除掉,上方红框中的。
rm -rf vendor/github.com/prometheus/client_golang/prometheus/expvar_collector.go
rm -rf vendor/github.com/prometheus/client_golang/prometheus/collectors/expvar_collector.go
3.重新编译
make build
漏洞解决,哦耶!!!