node-exporter被檢測出來pprof調(diào)試信息泄露漏洞問題
說在前面
慣例開篇吐槽,有些仔仔習(xí)慣搞點(diǎn)自研的安全掃描工具,然后加點(diǎn)DIY元素,他也不管掃的準(zhǔn)不準(zhǔn),就要給你報(bào)個(gè)高中危的漏洞,然后就要去修復(fù),這次遇到個(gè)其他的就是node-exporter默認(rèn)引入了pprof做一些性能指標(biāo)的采集,然后仔仔的漏洞掃描工具就給你掃出來這么一條奇葩漏洞:

先不說處理方法,去github看了一圈,確實(shí)有人提了issue:

看到是中文我就大概知道這些仔仔可能是從同一個(gè)貨源采購的安全掃描工具,對于這個(gè)問題官方在另一個(gè)issue中提了一下:

大概意思是開發(fā)者并沒有發(fā)現(xiàn)pprof會泄漏啥信息,issue提出者使用的是gosec工具做的靜態(tài)安全掃描,可能產(chǎn)生很多編譯期間的誤報(bào),然后社區(qū)達(dá)成一致的結(jié)論是和prometheus社區(qū)保持一致,轉(zhuǎn)而使用codeql工具。

解決方法
但是為了能過所謂的安全檢查還是要處理這個(gè)事情,處理之前,打開http://{node-exporter-ip}:{port}/debug/pprof的訪問鏈接會出現(xiàn)這樣的內(nèi)容;

原因也很簡單,就是因?yàn)樵趎ode-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" )

把二進(jìn)制包替換掉原來的,然后重啟一下,再訪問/debug/pprof就會直接跳到Metrics主頁了:

結(jié)語
這種操作就是關(guān)閉了pprof性能指標(biāo)的采集,適用于大部分版本的node-exporter,其他類似的go程序也可以這樣進(jìn)行操作。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
golang?run時(shí)報(bào)undefined錯(cuò)誤的解決
這篇文章主要介紹了golang?run時(shí)報(bào)undefined錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
golang?metrics各個(gè)指標(biāo)含義講解說明
這篇文章主要為大家介紹了golang?metrics各個(gè)指標(biāo)含義講解說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
關(guān)于Golang標(biāo)準(zhǔn)庫flag的全面講解
這篇文章主要介紹了關(guān)于Golang標(biāo)準(zhǔn)庫flag的全面講解,這個(gè)庫的代碼量只有1000行左右,卻提供了非常完善的命令行參數(shù)解析功能,更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-09-09

