node-exporter被檢測(cè)出來(lái)pprof調(diào)試信息泄露漏洞問(wèn)題
說(shuō)在前面
慣例開(kāi)篇吐槽,有些仔仔習(xí)慣搞點(diǎn)自研的安全掃描工具,然后加點(diǎn)DIY元素,他也不管掃的準(zhǔn)不準(zhǔn),就要給你報(bào)個(gè)高中危的漏洞,然后就要去修復(fù),這次遇到個(gè)其他的就是node-exporter默認(rèn)引入了pprof做一些性能指標(biāo)的采集,然后仔仔的漏洞掃描工具就給你掃出來(lái)這么一條奇葩漏洞:
先不說(shuō)處理方法,去github看了一圈,確實(shí)有人提了issue:
看到是中文我就大概知道這些仔仔可能是從同一個(gè)貨源采購(gòu)的安全掃描工具,對(duì)于這個(gè)問(wèn)題官方在另一個(gè)issue中提了一下:
大概意思是開(kāi)發(fā)者并沒(méi)有發(fā)現(xiàn)pprof會(huì)泄漏啥信息,issue提出者使用的是gosec工具做的靜態(tài)安全掃描,可能產(chǎn)生很多編譯期間的誤報(bào),然后社區(qū)達(dá)成一致的結(jié)論是和prometheus社區(qū)保持一致,轉(zhuǎn)而使用codeql工具。
解決方法
但是為了能過(guò)所謂的安全檢查還是要處理這個(gè)事情,處理之前,打開(kāi)http://{node-exporter-ip}:{port}/debug/pprof
的訪問(wèn)鏈接會(huì)出現(xiàn)這樣的內(nèi)容;
原因也很簡(jiǎn)單,就是因?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)制包替換掉原來(lái)的,然后重啟一下,再訪問(wèn)/debug/pprof就會(huì)直接跳到Metrics主頁(yè)了:
結(jié)語(yǔ)
這種操作就是關(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à)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03golang?metrics各個(gè)指標(biāo)含義講解說(shuō)明
這篇文章主要為大家介紹了golang?metrics各個(gè)指標(biāo)含義講解說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05關(guān)于Golang標(biāo)準(zhǔn)庫(kù)flag的全面講解
這篇文章主要介紹了關(guān)于Golang標(biāo)準(zhǔn)庫(kù)flag的全面講解,這個(gè)庫(kù)的代碼量只有1000行左右,卻提供了非常完善的命令行參數(shù)解析功能,更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-09-09