node-exporter被檢測出來pprof調試信息泄露漏洞問題
說在前面
慣例開篇吐槽,有些仔仔習慣搞點自研的安全掃描工具,然后加點DIY元素,他也不管掃的準不準,就要給你報個高中危的漏洞,然后就要去修復,這次遇到個其他的就是node-exporter默認引入了pprof做一些性能指標的采集,然后仔仔的漏洞掃描工具就給你掃出來這么一條奇葩漏洞:
先不說處理方法,去github看了一圈,確實有人提了issue:
看到是中文我就大概知道這些仔仔可能是從同一個貨源采購的安全掃描工具,對于這個問題官方在另一個issue中提了一下:
大概意思是開發(fā)者并沒有發(fā)現(xiàn)pprof會泄漏啥信息,issue提出者使用的是gosec工具做的靜態(tài)安全掃描,可能產生很多編譯期間的誤報,然后社區(qū)達成一致的結論是和prometheus社區(qū)保持一致,轉而使用codeql工具。
解決方法
但是為了能過所謂的安全檢查還是要處理這個事情,處理之前,打開http://{node-exporter-ip}:{port}/debug/pprof
的訪問鏈接會出現(xiàn)這樣的內容;
原因也很簡單,就是因為在node-exporter.go中引用了pprof包,我們要做的就是把引用刪除,重新編譯:
import ( "fmt" stdlog "log" "net/http" _ "net/http/pprof" // 刪除這一行 "os" "os/user" "runtime" "sort" "github.com/prometheus/common/promlog" "github.com/prometheus/common/promlog/flag" "github.com/go-kit/log" "github.com/go-kit/log/level" "github.com/prometheus/client_golang/prometheus" promcollectors "github.com/prometheus/client_golang/prometheus/collectors" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/prometheus/common/version" "github.com/prometheus/exporter-toolkit/web" "github.com/prometheus/exporter-toolkit/web/kingpinflag" "github.com/prometheus/node_exporter/collector" kingpin "gopkg.in/alecthomas/kingpin.v2" )
把二進制包替換掉原來的,然后重啟一下,再訪問/debug/pprof就會直接跳到Metrics主頁了:
結語
這種操作就是關閉了pprof性能指標的采集,適用于大部分版本的node-exporter,其他類似的go程序也可以這樣進行操作。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。