Last active
November 12, 2021 14:26
-
-
Save solo-yolo/b134100dea70faf34a05e4f7f544246f to your computer and use it in GitHub Desktop.
blackbox-exporter-gosec-scan-results.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<title>Golang Security Checker</title> | |
<link rel="shortcut icon" type="image/png" href="https://securego.io/img/favicon.png"> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.9.2/css/bulma.min.css" integrity="sha512-byErQdWdTqREz6DLAA9pCnLbdoGGhXfU6gm1c8bkf7F51JVmUBlayGe2A31VpXWQP+eiJ3ilTAZHCR3vmMyybA==" crossorigin="anonymous"/> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/styles/default.min.css" integrity="sha512-kZqGbhf9JTB4bVJ0G8HCkqmaPcRgo88F0dneK30yku5Y/dep7CZfCnNml2Je/sY4lBoqoksXz4PtVXS4GHSUzQ==" crossorigin="anonymous"/> | |
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/highlight.min.js" integrity="sha512-s+tOYYcC3Jybgr9mVsdAxsRYlGNq4mlAurOrfNuGMQ/SCofNPu92tjE7YRZCsdEtWL1yGkqk15fU/ark206YTg==" crossorigin="anonymous"></script> | |
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/languages/go.min.js" integrity="sha512-+UYV2NyyynWEQcZ4sMTKmeppyV331gqvMOGZ61/dqc89Tn1H40lF05ACd03RSD9EWwGutNwKj256mIR8waEJBQ==" crossorigin="anonymous"></script> | |
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.min.js" integrity="sha256-cLWs9L+cjZg8CjGHMpJqUgKKouPlmoMP/0wIdPtaPGs=" crossorigin="anonymous"></script> | |
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.min.js" integrity="sha256-JIW8lNqN2EtqC6ggNZYnAdKMJXRQfkPMvdRt+b0/Jxc=" crossorigin="anonymous"></script> | |
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.17.0/babel.min.js" integrity="sha256-1IWWLlCKFGFj/cjryvC7GDF5wRYnf9tSvNVVEj8Bm+o=" crossorigin="anonymous"></script> | |
<style> | |
.field-label { | |
min-width: 80px; | |
} | |
.break-word { | |
word-wrap: break-word; | |
} | |
.help { | |
white-space: pre-wrap; | |
} | |
.tag { | |
width: 80px; | |
} | |
.summary-first { | |
padding: .75rem .75rem .1rem .75rem; | |
} | |
.summary-last { | |
padding: .1rem .75rem .75rem .75rem; | |
} | |
.summary { | |
padding: .1rem .75rem ; | |
} | |
</style> | |
</head> | |
<body> | |
<section class="section"> | |
<div class="container"> | |
<div id="content"></div> | |
</div> | |
</section> | |
<script> | |
var data = {"Golang errors":{},"Issues":[{"severity":"HIGH","confidence":"MEDIUM","cwe":{"id":"338","url":"https://cwe.mitre.org/data/definitions/338.html"},"rule_id":"G404","details":"Use of weak random number generator (math/rand instead of crypto/rand)","file":"blackbox_exporter/prober/icmp.go","code":"42: func init() {\n43: \tr := rand.New(rand.NewSource(time.Now().UnixNano()))\n44: \t// PID is typically 1 when running in a container; in that case, set\n","line":"43","column":"7","nosec":false},{"severity":"HIGH","confidence":"HIGH","cwe":{"id":"200","url":"https://cwe.mitre.org/data/definitions/200.html"},"rule_id":"G108","details":"Profiling endpoint is automatically exposed on /debug/pprof","file":"blackbox_exporter/main.go","code":"22: \t\"net/http\"\n23: \t_ \"net/http/pprof\"\n24: \t\"net/url\"\n","line":"23","column":"2","nosec":false},{"severity":"MEDIUM","confidence":"HIGH","cwe":{"id":"22","url":"https://cwe.mitre.org/data/definitions/22.html"},"rule_id":"G304","details":"Potential file inclusion via variable","file":"blackbox_exporter/config/config.go","code":"106: \n107: \tyamlReader, err := os.Open(confFile)\n108: \tif err != nil {\n","line":"107","column":"21","nosec":false},{"severity":"MEDIUM","confidence":"MEDIUM","cwe":{"id":"118","url":"https://cwe.mitre.org/data/definitions/118.html"},"rule_id":"G601","details":"Implicit memory aliasing in for loop.","file":"blackbox_exporter/prober/utils.go","code":"115: \t\t\t// ip6 as fallback\n116: \t\t\tfallback = \u0026ip\n117: \t\t}\n","line":"116","column":"15","nosec":false},{"severity":"MEDIUM","confidence":"MEDIUM","cwe":{"id":"118","url":"https://cwe.mitre.org/data/definitions/118.html"},"rule_id":"G601","details":"Implicit memory aliasing in for loop.","file":"blackbox_exporter/prober/utils.go","code":"104: \t\t\t// ip4 as fallback\n105: \t\t\tfallback = \u0026ip\n106: \n","line":"105","column":"15","nosec":false},{"severity":"MEDIUM","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G307","details":"Deferring unsafe method \"Close\" on type \"*os.File\"","file":"blackbox_exporter/config/config.go","code":"110: \t}\n111: \tdefer yamlReader.Close()\n112: \tdecoder := yaml.NewDecoder(yamlReader)\n","line":"111","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/utils.go","code":"137: \th := fnv.New32a()\n138: \th.Write(ip)\n139: \treturn float64(h.Sum32())\n","line":"138","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/utils.go","code":"131: \tprobeIPAddrHash.Set(ipHash(fallback.IP))\n132: \tlevel.Info(logger).Log(\"msg\", \"Resolved target address\", \"ip\", fallback.String())\n133: \treturn fallback, lookupTime, nil\n","line":"132","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/utils.go","code":"108: \t\t\tif ip.IP.To4() == nil {\n109: \t\t\t\tlevel.Info(logger).Log(\"msg\", \"Resolved target address\", \"ip\", ip.String())\n110: \t\t\t\tprobeIPProtocolGauge.Set(6)\n","line":"109","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/utils.go","code":"97: \t\t\tif ip.IP.To4() != nil {\n98: \t\t\t\tlevel.Info(logger).Log(\"msg\", \"Resolved target address\", \"ip\", ip.String())\n99: \t\t\t\tprobeIPProtocolGauge.Set(4)\n","line":"98","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/utils.go","code":"87: \tif err != nil {\n88: \t\tlevel.Error(logger).Log(\"msg\", \"Resolution with IP protocol failed\", \"err\", err)\n89: \t\treturn nil, 0.0, err\n","line":"88","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/utils.go","code":"81: \t\t}\n82: \t\tlevel.Error(logger).Log(\"msg\", \"Resolution with IP protocol failed\", \"err\", err)\n83: \t\treturn nil, 0.0, err\n","line":"82","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/utils.go","code":"75: \t\t\tfor _, ip := range ips {\n76: \t\t\t\tlevel.Info(logger).Log(\"msg\", \"Resolved target address\", \"ip\", ip.String())\n77: \t\t\t\tprobeIPProtocolGauge.Set(protocolToGauge[IPProtocol])\n","line":"76","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/utils.go","code":"62: \n63: \tlevel.Info(logger).Log(\"msg\", \"Resolving target address\", \"ip_protocol\", IPProtocol)\n64: \tresolveStart := time.Now()\n","line":"63","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"197: \t\t\t}\n198: \t\t\tlevel.Info(logger).Log(\"msg\", \"TLS Handshake (client) succeeded.\")\n199: \t\t\tconn = net.Conn(tlsConn)\n","line":"198","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"194: \t\t\tif err := tlsConn.Handshake(); err != nil {\n195: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"TLS Handshake (client) failed\", \"err\", err)\n196: \t\t\t\treturn false\n","line":"195","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"181: \t\t\tif err != nil {\n182: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Failed to create TLS configuration\", \"err\", err)\n183: \t\t\t\treturn false\n","line":"182","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"173: \t\t\tif _, err := fmt.Fprintf(conn, \"%s\\n\", send); err != nil {\n174: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Failed to send\", \"err\", err)\n175: \t\t\t\treturn false\n","line":"174","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"171: \t\tif send != \"\" {\n172: \t\t\tlevel.Debug(logger).Log(\"msg\", \"Sending line\", \"line\", send)\n173: \t\t\tif _, err := fmt.Fprintf(conn, \"%s\\n\", send); err != nil {\n","line":"172","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"164: \t\t\t\tprobeFailedDueToRegex.Set(1)\n165: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Regexp did not match\", \"regexp\", qr.Expect.Regexp, \"line\", scanner.Text())\n166: \t\t\t\treturn false\n","line":"165","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"159: \t\t\tif scanner.Err() != nil {\n160: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error reading from connection\", \"err\", scanner.Err().Error())\n161: \t\t\t\treturn false\n","line":"160","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"154: \t\t\t\tif match != nil {\n155: \t\t\t\t\tlevel.Info(logger).Log(\"msg\", \"Regexp matched\", \"regexp\", qr.Expect.Regexp, \"line\", scanner.Text())\n156: \t\t\t\t\tbreak\n","line":"155","column":"6","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"151: \t\t\tfor scanner.Scan() {\n152: \t\t\t\tlevel.Debug(logger).Log(\"msg\", \"Read line\", \"line\", scanner.Text())\n153: \t\t\t\tmatch = qr.Expect.Regexp.FindSubmatchIndex(scanner.Bytes())\n","line":"152","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"145: \tfor i, qr := range module.TCP.QueryResponse {\n146: \t\tlevel.Info(logger).Log(\"msg\", \"Processing query response entry\", \"entry_number\", i)\n147: \t\tsend := qr.Send\n","line":"146","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"132: \tif err := conn.SetDeadline(deadline); err != nil {\n133: \t\tlevel.Error(logger).Log(\"msg\", \"Error setting deadline\", \"err\", err)\n134: \t\treturn false\n","line":"133","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"126: \tdefer conn.Close()\n127: \tlevel.Info(logger).Log(\"msg\", \"Successfully dialed\")\n128: \n","line":"127","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"122: \tif err != nil {\n123: \t\tlevel.Error(logger).Log(\"msg\", \"Error dialing TCP\", \"err\", err)\n124: \t\treturn false\n","line":"123","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"86: \n87: \tlevel.Info(logger).Log(\"msg\", \"Dialing TCP with TLS\")\n88: \treturn tls.DialWithDialer(dialer, dialProtocol, dialTarget, tlsConfig)\n","line":"87","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"69: \tif err != nil {\n70: \t\tlevel.Error(logger).Log(\"msg\", \"Error creating TLS configuration\", \"err\", err)\n71: \t\treturn nil, err\n","line":"70","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"64: \tif !module.TCP.TLS {\n65: \t\tlevel.Info(logger).Log(\"msg\", \"Dialing TCP without TLS\")\n66: \t\treturn dialer.DialContext(ctx, dialProtocol, dialTarget)\n","line":"65","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"57: \t\t}\n58: \t\tlevel.Info(logger).Log(\"msg\", \"Using local address\", \"srcIP\", srcIP)\n59: \t\tdialer.LocalAddr = \u0026net.TCPAddr{IP: srcIP}\n","line":"58","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"54: \t\tif srcIP == nil {\n55: \t\t\tlevel.Error(logger).Log(\"msg\", \"Error parsing source ip address\", \"srcIP\", module.TCP.SourceIPAddress)\n56: \t\t\treturn nil, fmt.Errorf(\"error parsing source ip address: %s\", module.TCP.SourceIPAddress)\n","line":"55","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"41: \tif err != nil {\n42: \t\tlevel.Error(logger).Log(\"msg\", \"Error resolving address\", \"err\", err)\n43: \t\treturn nil, err\n","line":"42","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/tcp.go","code":"35: \tif err != nil {\n36: \t\tlevel.Error(logger).Log(\"msg\", \"Error splitting target address and port\", \"err\", err)\n37: \t\treturn nil, err\n","line":"36","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"355: \t\t\t}\n356: \t\t\tlevel.Info(logger).Log(\"msg\", \"Found matching reply packet\")\n357: \t\t\treturn true\n","line":"356","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"332: \t\t\t}\n333: \t\t\tlevel.Error(logger).Log(\"msg\", \"Error reading from socket\", \"err\", err)\n334: \t\t\tcontinue\n","line":"333","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"329: \t\t\tif nerr, ok := err.(net.Error); ok \u0026\u0026 nerr.Timeout() {\n330: \t\t\t\tlevel.Warn(logger).Log(\"msg\", \"Timeout reading from socket\", \"err\", err)\n331: \t\t\t\treturn\n","line":"330","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"324: \t\t\t} else {\n325: \t\t\t\tlevel.Debug(logger).Log(\"msg\", \"Cannot get TTL from the received packet. 'probe_icmp_reply_hop_limit' will be missing.\")\n326: \t\t\t}\n","line":"325","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"304: \t\t\t} else {\n305: \t\t\t\tlevel.Debug(logger).Log(\"msg\", \"Cannot get Hop Limit from the received packet. 'probe_icmp_reply_hop_limit' will be missing.\")\n306: \t\t\t}\n","line":"305","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"290: \t}\n291: \tlevel.Info(logger).Log(\"msg\", \"Waiting for reply packets\")\n292: \tfor {\n","line":"291","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"287: \tif err != nil {\n288: \t\tlevel.Error(logger).Log(\"msg\", \"Error setting socket deadline\", \"err\", err)\n289: \t\treturn\n","line":"288","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"268: \tif err != nil {\n269: \t\tlevel.Error(logger).Log(\"msg\", \"Error marshalling packet\", \"err\", err)\n270: \t\treturn\n","line":"269","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"254: \tif err != nil {\n255: \t\tlevel.Warn(logger).Log(\"msg\", \"Error writing to socket\", \"err\", err)\n256: \t\treturn\n","line":"255","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"232: \tdurationGaugeVec.WithLabelValues(\"setup\").Add(time.Since(setupStart).Seconds())\n233: \tlevel.Info(logger).Log(\"msg\", \"Writing out packet\")\n234: \trttStart := time.Now()\n","line":"233","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"227: \tif err != nil {\n228: \t\tlevel.Error(logger).Log(\"msg\", \"Error marshalling packet\", \"err\", err)\n229: \t\treturn\n","line":"228","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"218: \t}\n219: \tlevel.Info(logger).Log(\"msg\", \"Creating ICMP packet\", \"seq\", body.Seq, \"id\", body.ID)\n220: \twm := icmp.Message{\n","line":"219","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"194: \t\t\tif err := icmpConn.IPv4PacketConn().SetControlMessage(ipv4.FlagTTL, true); err != nil {\n195: \t\t\t\tlevel.Debug(logger).Log(\"msg\", \"Failed to set Control Message for retrieving TTL\", \"err\", err)\n196: \t\t\t\thopLimitFlagSet = false\n","line":"195","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"187: \t\t\t\tif err != nil {\n188: \t\t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error listening to socket\", \"err\", err)\n189: \t\t\t\t\treturn\n","line":"188","column":"6","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"178: \t\t\t\tif err != nil {\n179: \t\t\t\t\tlevel.Debug(logger).Log(\"msg\", \"Unable to do unprivileged listen on socket, will attempt privileged\", \"err\", err)\n180: \t\t\t\t} else {\n","line":"179","column":"6","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"171: \t\t\tif err := v4RawConn.SetControlMessage(ipv4.FlagTTL, true); err != nil {\n172: \t\t\t\tlevel.Debug(logger).Log(\"msg\", \"Failed to set Control Message for retrieving TTL\", \"err\", err)\n173: \t\t\t\thopLimitFlagSet = false\n","line":"172","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"165: \t\t\tif err != nil {\n166: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error creating raw connection\", \"err\", err)\n167: \t\t\t\treturn\n","line":"166","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"158: \t\t\tif err != nil {\n159: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error listening to socket\", \"err\", err)\n160: \t\t\t\treturn\n","line":"159","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"142: \t\tif err := icmpConn.IPv6PacketConn().SetControlMessage(ipv6.FlagHopLimit, true); err != nil {\n143: \t\t\tlevel.Debug(logger).Log(\"msg\", \"Failed to set Control Message for retrieving Hop Limit\", \"err\", err)\n144: \t\t\thopLimitFlagSet = false\n","line":"143","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"135: \t\t\tif err != nil {\n136: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error listening to socket\", \"err\", err)\n137: \t\t\t\treturn\n","line":"136","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"126: \t\t\tif err != nil {\n127: \t\t\t\tlevel.Debug(logger).Log(\"msg\", \"Unable to do unprivileged listen on socket, will attempt privileged\", \"err\", err)\n128: \t\t\t} else {\n","line":"127","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"108: \tsetupStart := time.Now()\n109: \tlevel.Info(logger).Log(\"msg\", \"Creating socket\")\n110: \n","line":"109","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"104: \t\t}\n105: \t\tlevel.Info(logger).Log(\"msg\", \"Using source address\", \"srcIP\", srcIP)\n106: \t}\n","line":"105","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"101: \t\tif srcIP = net.ParseIP(module.ICMP.SourceIPAddress); srcIP == nil {\n102: \t\t\tlevel.Error(logger).Log(\"msg\", \"Error parsing source ip address\", \"srcIP\", module.ICMP.SourceIPAddress)\n103: \t\t\treturn false\n","line":"102","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/icmp.go","code":"93: \tif err != nil {\n94: \t\tlevel.Warn(logger).Log(\"msg\", \"Error resolving address\", \"err\", err)\n95: \t\treturn false\n","line":"94","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"625: \t} else if httpConfig.FailIfNotSSL {\n626: \t\tlevel.Error(logger).Log(\"msg\", \"Final request was not over SSL\")\n627: \t\tsuccess = false\n","line":"626","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"621: \t\tif httpConfig.FailIfSSL {\n622: \t\t\tlevel.Error(logger).Log(\"msg\", \"Final request was over SSL\")\n623: \t\t\tsuccess = false\n","line":"622","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"571: \tfor i, trace := range tt.traces {\n572: \t\tlevel.Info(logger).Log(\n573: \t\t\t\"msg\", \"Response timings for roundtrip\",\n574: \t\t\t\"roundtrip\", i,\n575: \t\t\t\"start\", trace.start,\n576: \t\t\t\"dnsDone\", trace.dnsDone,\n577: \t\t\t\"connectDone\", trace.connectDone,\n578: \t\t\t\"gotConn\", trace.gotConn,\n579: \t\t\t\"responseStart\", trace.responseStart,\n580: \t\t\t\"tlsStart\", trace.tlsStart,\n581: \t\t\t\"tlsDone\", trace.tlsDone,\n582: \t\t\t\"end\", trace.end,\n583: \t\t)\n584: \t\t// We get the duration for the first request from chooseProtocol.\n","line":"572-583","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"562: \t\t\tif !found {\n563: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Invalid HTTP version number\", \"version\", resp.Proto)\n564: \t\t\t\tsuccess = false\n","line":"563","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"549: \t\tif err != nil {\n550: \t\t\tlevel.Error(logger).Log(\"msg\", \"Error parsing version number from HTTP version\", \"err\", err)\n551: \t\t}\n","line":"550","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"533: \t\t\t\t// case it contains useful information as to what's the problem.\n534: \t\t\t\tlevel.Info(logger).Log(\"msg\", \"Error while closing response from server\", \"error\", err.Error())\n535: \t\t\t}\n","line":"534","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"523: \t\t\tif err != nil {\n524: \t\t\t\tlevel.Info(logger).Log(\"msg\", \"Failed to read HTTP response body\", \"err\", err)\n525: \t\t\t\tsuccess = false\n","line":"524","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"493: \t\t\t\t\t\t// it in case it contains useful information as to what's the problem.\n494: \t\t\t\t\t\tlevel.Info(logger).Log(\"msg\", \"Error while closing response from server\", \"err\", err)\n495: \t\t\t\t\t}\n","line":"494","column":"7","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"482: \t\t\tif err != nil {\n483: \t\t\t\tlevel.Info(logger).Log(\"msg\", \"Failed to get decompressor for HTTP response body\", \"err\", err)\n484: \t\t\t\tsuccess = false\n","line":"483","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"464: \t\t} else {\n465: \t\t\tlevel.Info(logger).Log(\"msg\", \"Invalid HTTP response status code, wanted 2xx\", \"status_code\", resp.StatusCode)\n466: \t\t}\n","line":"465","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"458: \t\t\tif !success {\n459: \t\t\t\tlevel.Info(logger).Log(\"msg\", \"Invalid HTTP response status code\", \"status_code\", resp.StatusCode,\n460: \t\t\t\t\t\"valid_status_codes\", fmt.Sprintf(\"%v\", httpConfig.ValidStatusCodes))\n461: \t\t\t}\n","line":"459-460","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"449: \n450: \t\tlevel.Info(logger).Log(\"msg\", \"Received HTTP response\", \"status_code\", resp.StatusCode)\n451: \t\tif len(httpConfig.ValidStatusCodes) != 0 {\n","line":"450","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"444: \t\tif err != nil {\n445: \t\t\tlevel.Error(logger).Log(\"msg\", \"Error for HTTP request\", \"err\", err)\n446: \t\t}\n","line":"445","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"408: \tif err != nil {\n409: \t\tlevel.Error(logger).Log(\"msg\", \"Error creating request\", \"err\", err)\n410: \t\treturn\n","line":"409","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"376: \t\tif redirects \u003e 10 || !httpConfig.HTTPClientConfig.FollowRedirects {\n377: \t\t\tlevel.Info(logger).Log(\"msg\", \"Not following redirect\")\n378: \t\t\treturn errors.New(\"don't follow redirects\")\n","line":"377","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"373: \tclient.CheckRedirect = func(r *http.Request, via []*http.Request) error {\n374: \t\tlevel.Info(logger).Log(\"msg\", \"Received redirect\", \"location\", r.Response.Header.Get(\"Location\"))\n375: \t\tredirects = len(via)\n","line":"374","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"362: \tif err != nil {\n363: \t\tlevel.Error(logger).Log(\"msg\", \"Error generating cookiejar\", \"err\", err)\n364: \t\treturn false\n","line":"363","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"356: \tif err != nil {\n357: \t\tlevel.Error(logger).Log(\"msg\", \"Error generating HTTP client without ServerName\", \"err\", err)\n358: \t\treturn false\n","line":"357","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"349: \tif err != nil {\n350: \t\tlevel.Error(logger).Log(\"msg\", \"Error generating HTTP client\", \"err\", err)\n351: \t\treturn false\n","line":"350","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"336: \tif err != nil {\n337: \t\tlevel.Error(logger).Log(\"msg\", \"Error resolving address\", \"err\", err)\n338: \t\treturn false\n","line":"337","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"327: \tif err != nil {\n328: \t\tlevel.Error(logger).Log(\"msg\", \"Could not parse target URL\", \"err\", err)\n329: \t\treturn false\n","line":"328","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"168: \t\t// so TLS ServerName should not be set.\n169: \t\tlevel.Info(t.logger).Log(\"msg\", \"Address does not match first address, not sending TLS ServerName\", \"first\", t.firstHost, \"address\", req.URL.Host)\n170: \t\treturn t.NoServerNameTransport.RoundTrip(req)\n","line":"169","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"152: func (t *transport) RoundTrip(req *http.Request) (*http.Response, error) {\n153: \tlevel.Info(t.logger).Log(\"msg\", \"Making HTTP request\", \"url\", req.URL.String(), \"host\", req.Host)\n154: \n","line":"153","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"107: \t\tif !anyHeaderValueMatched {\n108: \t\t\tlevel.Error(logger).Log(\"msg\", \"Header did not match regular expression\", \"header\", headerMatchSpec.Header,\n109: \t\t\t\t\"regexp\", headerMatchSpec.Regexp, \"value_count\", len(values))\n110: \t\t\treturn false\n","line":"108-109","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"90: \t\t\tif !headerMatchSpec.AllowMissing {\n91: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Missing required header\", \"header\", headerMatchSpec.Header)\n92: \t\t\t\treturn false\n","line":"91","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"80: \t\t\tif headerMatchSpec.Regexp.MatchString(val) {\n81: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Header matched regular expression\", \"header\", headerMatchSpec.Header,\n82: \t\t\t\t\t\"regexp\", headerMatchSpec.Regexp, \"value_count\", len(values))\n83: \t\t\t\treturn false\n","line":"81-82","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"71: \t\t\tif !headerMatchSpec.AllowMissing {\n72: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Missing required header\", \"header\", headerMatchSpec.Header)\n73: \t\t\t\treturn false\n","line":"72","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"59: \t\tif !expression.Regexp.Match(body) {\n60: \t\t\tlevel.Error(logger).Log(\"msg\", \"Body did not match regular expression\", \"regexp\", expression)\n61: \t\t\treturn false\n","line":"60","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"53: \t\tif expression.Regexp.Match(body) {\n54: \t\t\tlevel.Error(logger).Log(\"msg\", \"Body matched regular expression\", \"regexp\", expression)\n55: \t\t\treturn false\n","line":"54","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/http.go","code":"48: \tif err != nil {\n49: \t\tlevel.Error(logger).Log(\"msg\", \"Error reading HTTP body\", \"err\", err)\n50: \t\treturn false\n","line":"49","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"306: \tif !validRRs(\u0026response.Extra, \u0026module.DNS.ValidateAdditional, logger) {\n307: \t\tlevel.Error(logger).Log(\"msg\", \"Additional RRs validation failed\")\n308: \t\treturn false\n","line":"307","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"304: \t}\n305: \tlevel.Info(logger).Log(\"msg\", \"Validating Additional RRs\")\n306: \tif !validRRs(\u0026response.Extra, \u0026module.DNS.ValidateAdditional, logger) {\n","line":"305","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"301: \tif !validRRs(\u0026response.Ns, \u0026module.DNS.ValidateAuthority, logger) {\n302: \t\tlevel.Error(logger).Log(\"msg\", \"Authority RRs validation failed\")\n303: \t\treturn false\n","line":"302","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"299: \t}\n300: \tlevel.Info(logger).Log(\"msg\", \"Validating Authority RRs\")\n301: \tif !validRRs(\u0026response.Ns, \u0026module.DNS.ValidateAuthority, logger) {\n","line":"300","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"296: \tif !validRRs(\u0026response.Answer, \u0026module.DNS.ValidateAnswer, logger) {\n297: \t\tlevel.Error(logger).Log(\"msg\", \"Answer RRs validation failed\")\n298: \t\treturn false\n","line":"297","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"294: \t}\n295: \tlevel.Info(logger).Log(\"msg\", \"Validating Answer RRs\")\n296: \tif !validRRs(\u0026response.Answer, \u0026module.DNS.ValidateAnswer, logger) {\n","line":"295","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"271: \t}\n272: \tlevel.Info(logger).Log(\"msg\", \"Got response\", \"response\", response)\n273: \n","line":"272","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"268: \tif err != nil {\n269: \t\tlevel.Error(logger).Log(\"msg\", \"Error while sending a DNS query\", \"err\", err)\n270: \t\treturn false\n","line":"269","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"256: \n257: \tlevel.Info(logger).Log(\"msg\", \"Making DNS query\", \"target\", targetIP, \"dial_protocol\", dialProtocol, \"query\", module.DNS.QueryName, \"type\", qt, \"class\", qc)\n258: \ttimeoutDeadline, _ := ctx.Deadline()\n","line":"257","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"241: \t\t}\n242: \t\tlevel.Info(logger).Log(\"msg\", \"Using local address\", \"srcIP\", srcIP)\n243: \t\tclient.Dialer = \u0026net.Dialer{}\n","line":"242","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"238: \t\tif srcIP == nil {\n239: \t\t\tlevel.Error(logger).Log(\"msg\", \"Error parsing source ip address\", \"srcIP\", module.DNS.SourceIPAddress)\n240: \t\t\treturn false\n","line":"239","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"223: \t\tif err != nil {\n224: \t\t\tlevel.Error(logger).Log(\"msg\", \"Failed to create TLS configuration\", \"err\", err)\n225: \t\t\treturn false\n","line":"224","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"212: \t\t} else {\n213: \t\t\tlevel.Error(logger).Log(\"msg\", \"Configuration error: Expected transport protocol tcp for DoT\", \"protocol\", module.DNS.TransportProtocol)\n214: \t\t\treturn false\n","line":"213","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"196: \tif err != nil {\n197: \t\tlevel.Error(logger).Log(\"msg\", \"Error resolving address\", \"err\", err)\n198: \t\treturn false\n","line":"197","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"180: \tif !(module.DNS.TransportProtocol == \"udp\" || module.DNS.TransportProtocol == \"tcp\") {\n181: \t\tlevel.Error(logger).Log(\"msg\", \"Configuration error: Expected transport protocol udp or tcp\", \"protocol\", module.DNS.TransportProtocol)\n182: \t\treturn false\n","line":"181","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"169: \t\tif !ok {\n170: \t\t\tlevel.Error(logger).Log(\"msg\", \"Invalid query type\", \"Type seen\", module.DNS.QueryType, \"Existing types\", dns.TypeToString)\n171: \t\t\treturn false\n","line":"170","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"159: \t\tif !ok {\n160: \t\t\tlevel.Error(logger).Log(\"msg\", \"Invalid query class\", \"Class seen\", module.DNS.QueryClass, \"Existing classes\", dns.ClassToString)\n161: \t\t\treturn false\n","line":"160","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"122: \t}\n123: \tlevel.Error(logger).Log(\"msg\", \"Rcode is not one of the valid rcodes\", \"rcode\", rcode, \"string_rcode\", dns.RcodeToString[rcode], \"valid_rcodes\", validRcodes)\n124: \treturn false\n","line":"123","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"118: \t\tif rcode == rc {\n119: \t\t\tlevel.Info(logger).Log(\"msg\", \"Rcode is valid\", \"rcode\", rcode, \"string_rcode\", dns.RcodeToString[rcode])\n120: \t\t\treturn true\n","line":"119","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"110: \t\t\tif !ok {\n111: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Invalid rcode\", \"rcode\", rcode, \"known_rcode\", dns.RcodeToString)\n112: \t\t\t\treturn false\n","line":"111","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"94: \tif len(v.FailIfNoneMatchesRegexp) \u003e 0 \u0026\u0026 !anyMatch {\n95: \t\tlevel.Error(logger).Log(\"msg\", \"None of the RRs did matched any regexp\")\n96: \t\treturn false\n","line":"95","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"90: \tif len(v.FailIfAllMatchRegexp) \u003e 0 \u0026\u0026 !allMatch {\n91: \t\tlevel.Error(logger).Log(\"msg\", \"Not all RRs matched regexp\")\n92: \t\treturn false\n","line":"91","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"81: \t\t\tif err != nil {\n82: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error matching regexp\", \"regexp\", re, \"err\", err)\n83: \t\t\t\treturn false\n","line":"82","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"74: \t\t\tif !match {\n75: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"At least one RR did not match regexp\", \"regexp\", re, \"rr\", rr)\n76: \t\t\t\treturn false\n","line":"75","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"70: \t\t\tif err != nil {\n71: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error matching regexp\", \"regexp\", re, \"err\", err)\n72: \t\t\t\treturn false\n","line":"71","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"60: \t\t\tif err != nil {\n61: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error matching regexp\", \"regexp\", re, \"err\", err)\n62: \t\t\t\treturn false\n","line":"61","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"53: \t\t\tif match {\n54: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"At least one RR matched regexp\", \"regexp\", re, \"rr\", rr)\n55: \t\t\t\treturn false\n","line":"54","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"49: \t\t\tif err != nil {\n50: \t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error matching regexp\", \"regexp\", re, \"err\", err)\n51: \t\t\t\treturn false\n","line":"50","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"45: \tfor _, rr := range *rrs {\n46: \t\tlevel.Info(logger).Log(\"msg\", \"Validating RR\", \"rr\", rr)\n47: \t\tfor _, re := range v.FailIfMatchesRegexp {\n","line":"46","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"41: \tif len(*rrs) == 0 \u0026\u0026 len(v.FailIfNoneMatchesRegexp) \u003e 0 {\n42: \t\tlevel.Error(logger).Log(\"msg\", \"fail_if_none_matches_regexp specified but no RRs returned\")\n43: \t\treturn false\n","line":"42","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/prober/dns.go","code":"37: \tif len(*rrs) == 0 \u0026\u0026 len(v.FailIfNotMatchesRegexp) \u003e 0 {\n38: \t\tlevel.Error(logger).Log(\"msg\", \"fail_if_not_matches_regexp specified but no RRs returned\")\n39: \t\treturn false\n","line":"38","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"394: \t\tcase \u003c-term:\n395: \t\t\tlevel.Info(logger).Log(\"msg\", \"Received SIGTERM, exiting gracefully...\")\n396: \t\t\treturn 0\n","line":"395","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"386: \t\tif err := web.ListenAndServe(srv, *webConfig, logger); err != http.ErrServerClosed {\n387: \t\t\tlevel.Error(logger).Log(\"msg\", \"Error starting HTTP server\", \"err\", err)\n388: \t\t\tclose(srvc)\n","line":"387","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"384: \tgo func() {\n385: \t\tlevel.Info(logger).Log(\"msg\", \"Listening on address\", \"address\", *listenAddress)\n386: \t\tif err := web.ListenAndServe(srv, *webConfig, logger); err != http.ErrServerClosed {\n","line":"385","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"375: \t\tw.Header().Set(\"Content-Type\", \"text/plain\")\n376: \t\tw.Write(c)\n377: \t})\n","line":"376","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"370: \t\tif err != nil {\n371: \t\t\tlevel.Warn(logger).Log(\"msg\", \"Error marshalling configuration\", \"err\", err)\n372: \t\t\thttp.Error(w, err.Error(), 500)\n","line":"371","column":"4","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"362: \t\tw.Header().Set(\"Content-Type\", \"text/plain\")\n363: \t\tw.Write([]byte(result.debugOutput))\n364: \t})\n","line":"363","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"346: \n347: \t\tw.Write([]byte(`\u003c/table\u003e\u003c/body\u003e\n348: \u003c/html\u003e`))\n349: \t})\n","line":"347-348","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"323: \t\tw.Header().Set(\"Content-Type\", \"text/html\")\n324: \t\tw.Write([]byte(`\u003chtml\u003e\n325: \u003chead\u003e\u003ctitle\u003eBlackbox Exporter\u003c/title\u003e\u003c/head\u003e\n326: \u003cbody\u003e\n327: \u003ch1\u003eBlackbox Exporter\u003c/h1\u003e\n328: \u003cp\u003e\u003ca href=\"probe?target=prometheus.io\u0026module=http_2xx\"\u003eProbe prometheus.io for http_2xx\u003c/a\u003e\u003c/p\u003e\n329: \u003cp\u003e\u003ca href=\"probe?target=prometheus.io\u0026module=http_2xx\u0026debug=true\"\u003eDebug probe prometheus.io for http_2xx\u003c/a\u003e\u003c/p\u003e\n330: \u003cp\u003e\u003ca href=\"metrics\"\u003eMetrics\u003c/a\u003e\u003c/p\u003e\n331: \u003cp\u003e\u003ca href=\"config\"\u003eConfiguration\u003c/a\u003e\u003c/p\u003e\n332: \u003ch2\u003eRecent Probes\u003c/h2\u003e\n333: \u003ctable border='1'\u003e\u003ctr\u003e\u003cth\u003eModule\u003c/th\u003e\u003cth\u003eTarget\u003c/th\u003e\u003cth\u003eResult\u003c/th\u003e\u003cth\u003eDebug\u003c/th\u003e`))\n334: \n","line":"324-333","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"313: \t\tw.WriteHeader(http.StatusOK)\n314: \t\tw.Write([]byte(\"Healthy\"))\n315: \t})\n","line":"314","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"277: \t\t\t\t} else {\n278: \t\t\t\t\tlevel.Info(logger).Log(\"msg\", \"Reloaded config file\")\n279: \t\t\t\t\trc \u003c- nil\n","line":"278","column":"6","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"274: \t\t\t\tif err := sc.ReloadConfig(*configFile, logger); err != nil {\n275: \t\t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error reloading config\", \"err\", err)\n276: \t\t\t\t\trc \u003c- err\n","line":"275","column":"6","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"271: \t\t\t\t}\n272: \t\t\t\tlevel.Info(logger).Log(\"msg\", \"Reloaded config file\")\n273: \t\t\tcase rc := \u003c-reloadCh:\n","line":"272","column":"5","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"268: \t\t\t\tif err := sc.ReloadConfig(*configFile, logger); err != nil {\n269: \t\t\t\t\tlevel.Error(logger).Log(\"msg\", \"Error reloading config\", \"err\", err)\n270: \t\t\t\t\tcontinue\n","line":"269","column":"6","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"258: \t}\n259: \tlevel.Debug(logger).Log(\"routePrefix\", *routePrefix)\n260: \n","line":"259","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"244: \t}\n245: \tlevel.Debug(logger).Log(\"externalURL\", beURL.String())\n246: \n","line":"245","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"241: \tif err != nil {\n242: \t\tlevel.Error(logger).Log(\"msg\", \"failed to determine external URL\", \"err\", err)\n243: \t\treturn 1\n","line":"242","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"236: \n237: \tlevel.Info(logger).Log(\"msg\", \"Loaded config file\")\n238: \n","line":"237","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"232: \tif *configCheck {\n233: \t\tlevel.Info(logger).Log(\"msg\", \"Config file is ok exiting...\")\n234: \t\treturn 0\n","line":"233","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"227: \tif err := sc.ReloadConfig(*configFile, logger); err != nil {\n228: \t\tlevel.Error(logger).Log(\"msg\", \"Error loading config\", \"err\", err)\n229: \t\treturn 1\n","line":"228","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"224: \tlevel.Info(logger).Log(\"msg\", \"Starting blackbox_exporter\", \"version\", version.Info())\n225: \tlevel.Info(logger).Log(\"build_context\", version.BuildContext())\n226: \n","line":"225","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"223: \n224: \tlevel.Info(logger).Log(\"msg\", \"Starting blackbox_exporter\", \"version\", version.Info())\n225: \tlevel.Info(logger).Log(\"build_context\", version.BuildContext())\n","line":"224","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"193: \tfor _, mf := range mfs {\n194: \t\texpfmt.MetricFamilyToText(buf, mf)\n195: \t}\n","line":"194","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"186: \tfmt.Fprintf(buf, \"Logs for the probe:\\n\")\n187: \tlogBuffer.WriteTo(buf)\n188: \tfmt.Fprintf(buf, \"\\n\\n\\nMetrics that would have been returned:\\n\")\n","line":"187","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"170: func (sl scrapeLogger) Log(keyvals ...interface{}) error {\n171: \tsl.bufferLogger.Log(keyvals...)\n172: \tkvs := make([]interface{}, len(keyvals))\n","line":"171","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"144: \t\tw.Header().Set(\"Content-Type\", \"text/plain\")\n145: \t\tw.Write([]byte(debugOutput))\n146: \t\treturn\n","line":"145","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"136: \t} else {\n137: \t\tlevel.Error(sl).Log(\"msg\", \"Probe failed\", \"duration_seconds\", duration)\n138: \t}\n","line":"137","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"134: \t\tprobeSuccessGauge.Set(1)\n135: \t\tlevel.Info(sl).Log(\"msg\", \"Probe succeeded\", \"duration_seconds\", duration)\n136: \t} else {\n","line":"135","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"123: \tsl := newScrapeLogger(logger, moduleName, target)\n124: \tlevel.Info(sl).Log(\"msg\", \"Beginning probe\", \"probe\", module.Prober, \"timeout_seconds\", timeoutSeconds)\n125: \n","line":"124","column":"2","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/main.go","code":"85: \t\thttp.Error(w, fmt.Sprintf(\"Unknown module %q\", moduleName), http.StatusBadRequest)\n86: \t\tlevel.Debug(logger).Log(\"msg\", \"Unknown module\", \"module\", moduleName)\n87: \t\tmoduleUnknownCounter.Add(1)\n","line":"86","column":"3","nosec":false},{"severity":"LOW","confidence":"HIGH","cwe":{"id":"703","url":"https://cwe.mitre.org/data/definitions/703.html"},"rule_id":"G104","details":"Errors unhandled.","file":"blackbox_exporter/config/config.go","code":"124: \t\t\tif logger != nil {\n125: \t\t\t\tlevel.Warn(logger).Log(\"msg\", \"no_follow_redirects is deprecated and will be removed in the next release. It is replaced by follow_redirects.\", \"module\", name)\n126: \t\t\t}\n","line":"125","column":"5","nosec":false}],"Stats":{"files":10,"lines":2804,"nosec":0,"found":150},"GosecVersion":"dev"}; | |
</script> | |
<script type="text/babel"> | |
var IssueTag = React.createClass({ | |
render: function() { | |
var level = "tag" | |
if (this.props.level === "HIGH") { | |
level += " is-danger"; | |
} else if (this.props.level === "MEDIUM") { | |
level += " is-warning"; | |
} else if (this.props.level === "LOW") { | |
level += " is-info"; | |
} else if (this.props.level === "WAIVED") { | |
level += " is-success"; | |
} | |
level +=" is-rounded"; | |
return ( | |
<div className="control"> | |
<div className="tags has-addons"> | |
<span className="tag is-dark is-rounded">{ this.props.label }</span> | |
<span className={ level }>{ this.props.level }</span> | |
</div> | |
</div> | |
); | |
} | |
}); | |
var Highlight = React.createClass({ | |
componentDidMount: function(){ | |
var current = ReactDOM.findDOMNode(this); | |
hljs.highlightElement(current); | |
}, | |
render: function() { | |
return ( | |
<pre className="go"><code >{ this.props.code }</code></pre> | |
); | |
} | |
}); | |
var Issue = React.createClass({ | |
render: function() { | |
return ( | |
<div className="issue box"> | |
<div className="columns"> | |
<div className="column is-three-quarters"> | |
<strong className="break-word">{ this.props.data.file } (line { this.props.data.line })</strong> | |
<p>{this.props.data.rule_id} (CWE-{this.props.data.cwe.id}): { this.props.data.details }</p> | |
</div> | |
<div className="column is-one-quarter"> | |
<div className="field is-grouped is-grouped-multiline"> | |
{this.props.data.nosec && <IssueTag label="NoSec" level="WAIVED"/>} | |
<IssueTag label="Severity" level={ this.props.data.severity }/> | |
<IssueTag label="Confidence" level={ this.props.data.confidence }/> | |
</div> | |
</div> | |
</div> | |
<div className="highlight"> | |
<Highlight key={ this.props.data.file + this.props.data.line } code={ this.props.data.code }/> | |
</div> | |
</div> | |
); | |
} | |
}); | |
var Stats = React.createClass({ | |
render: function() { | |
return ( | |
<p className="help is-pulled-right"> | |
Gosec {this.props.data.GosecVersion} scanned { this.props.data.Stats.files.toLocaleString() } files | |
with { this.props.data.Stats.lines.toLocaleString() } lines of code. | |
{ this.props.data.Stats.nosec ? '\n' + this.props.data.Stats.nosec.toLocaleString() + ' false positives (nosec) have been waived.' : ''} | |
</p> | |
); | |
} | |
}); | |
var Issues = React.createClass({ | |
render: function() { | |
if (this.props.data.Stats.files === 0) { | |
return ( | |
<div className="notification"> | |
No source files found. Do you even Go? | |
</div> | |
); | |
} | |
if (this.props.data.Issues.length === 0) { | |
return ( | |
<div> | |
<div className="notification"> | |
Awesome! No issues found! | |
</div> | |
<Stats data={ this.props.data } /> | |
</div> | |
); | |
} | |
var issues = this.props.data.Issues | |
.filter(function(issue) { | |
return this.props.severity.includes(issue.severity); | |
}.bind(this)) | |
.filter(function(issue) { | |
return this.props.confidence.includes(issue.confidence); | |
}.bind(this)) | |
.filter(function(issue) { | |
if (this.props.issueType) { | |
return issue.details.toLowerCase().startsWith(this.props.issueType.toLowerCase()); | |
} else { | |
return true | |
} | |
}.bind(this)) | |
.map(function(issue) { | |
return (<Issue data={issue} />); | |
}.bind(this)); | |
if (issues.length === 0) { | |
return ( | |
<div> | |
<div className="notification"> | |
No issues matched given filters | |
(of total { this.props.data.Issues.length } issues). | |
</div> | |
<Stats data={ this.props.data } /> | |
</div> | |
); | |
} | |
return ( | |
<div className="issues"> | |
{ issues } | |
<Stats data={ this.props.data } /> | |
</div> | |
); | |
} | |
}); | |
var LevelSelector = React.createClass({ | |
handleChange: function(level) { | |
return function(e) { | |
var updated = this.props.selected | |
.filter(function(item) { return item != level; }); | |
if (e.target.checked) { | |
updated.push(level); | |
} | |
this.props.onChange(updated); | |
}.bind(this); | |
}, | |
render: function() { | |
var HIGH = "HIGH", MEDIUM = "MEDIUM", LOW = "LOW"; | |
var highDisabled = !this.props.available.includes(HIGH); | |
var mediumDisabled = !this.props.available.includes(MEDIUM); | |
var lowDisabled = !this.props.available.includes(LOW); | |
return ( | |
<div className="field"> | |
<div className="control"> | |
<label className="checkbox" disabled={ highDisabled }> | |
<input | |
type="checkbox" | |
checked={ this.props.selected.includes(HIGH) } | |
disabled={ highDisabled } | |
onChange={ this.handleChange(HIGH) }/> High | |
</label> | |
</div> | |
<div className="control"> | |
<label className="checkbox" disabled={ mediumDisabled }> | |
<input | |
type="checkbox" | |
checked={ this.props.selected.includes(MEDIUM) } | |
disabled={ mediumDisabled } | |
onChange={ this.handleChange(MEDIUM) }/> Medium | |
</label> | |
</div> | |
<div className="control"> | |
<label className="checkbox" disabled={ lowDisabled }> | |
<input | |
type="checkbox" | |
checked={ this.props.selected.includes(LOW) } | |
disabled={ lowDisabled } | |
onChange={ this.handleChange(LOW) }/> Low | |
</label> | |
</div> | |
</div> | |
); | |
} | |
}); | |
var Navigation = React.createClass({ | |
updateSeverity: function(vals) { | |
this.props.onSeverity(vals); | |
}, | |
updateConfidence: function(vals) { | |
this.props.onConfidence(vals); | |
}, | |
updateIssueType: function(e) { | |
if (e.target.value == "all") { | |
this.props.onIssueType(null); | |
} else { | |
this.props.onIssueType(e.target.value); | |
} | |
}, | |
render: function() { | |
var issueTypes = this.props.allIssueTypes | |
.map(function(it) { | |
var matches = this.props.issueType == it | |
return ( | |
<option value={ it } selected={ matches }> | |
{ it } | |
</option> | |
); | |
}.bind(this)); | |
return ( | |
<div> | |
<nav className="panel"> | |
<div className="panel-heading">Filters</div> | |
<div className="panel-block"> | |
<div className="field is-horizontal"> | |
<div className="field-label is-normal"> | |
<label className="label is-pulled-left">Severity</label> | |
</div> | |
<div className="field-body"> | |
<LevelSelector selected={ this.props.severity } available={ this.props.allSeverities } onChange={ this.updateSeverity } /> | |
</div> | |
</div> | |
</div> | |
<div className="panel-block"> | |
<div className="field is-horizontal"> | |
<div className="field-label is-normal"> | |
<label className="label is-pulled-left">Confidence</label> | |
</div> | |
<div className="field-body"> | |
<LevelSelector selected={ this.props.confidence } available={ this.props.allConfidences } onChange={ this.updateConfidence } /> | |
</div> | |
</div> | |
</div> | |
<div className="panel-block"> | |
<div className="field is-horizontal"> | |
<div className="field-label is-normal"> | |
<label className="label is-pulled-left">Issue type</label> | |
</div> | |
<div className="field-body"> | |
<div className="field"> | |
<div className="control"> | |
<div className="select is-fullwidth"> | |
<select onChange={ this.updateIssueType }> | |
<option value="all" selected={ !this.props.issueType }> | |
(all) | |
</option> | |
{ issueTypes } | |
</select> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</nav> | |
<nav className="panel"> | |
<div className="panel-heading">Summary</div> | |
<div className="panel-block"> | |
<div className="columns is-multiline"> | |
<div className="column is-half summary-first"> | |
<label className="label is-pulled-left">Gosec: </label> | |
</div> | |
<div className="column is-half summary-first"> | |
{this.props.data.GosecVersion} | |
</div> | |
<div className="column is-half summary"> | |
<label className="label is-pulled-left">Files: </label> | |
</div> | |
<div className="column is-half summary"> | |
{this.props.data.Stats.files.toLocaleString()} | |
</div> | |
<div className="column is-half summary"> | |
<label className="label is-pulled-left">Lines: </label> | |
</div> | |
<div className="column is-half summary"> | |
{this.props.data.Stats.lines.toLocaleString()} | |
</div> | |
<div className="column is-half summary"> | |
<label className="label is-pulled-left">Nosec: </label> | |
</div> | |
<div className="column is-half summary"> | |
{this.props.data.Stats.nosec.toLocaleString()} | |
</div> | |
<div className="column is-half summary-last"> | |
<label className="label is-pulled-left">Issues: </label> | |
</div> | |
<div className="column is-half summary-last"> | |
{this.props.data.Stats.found.toLocaleString()} | |
</div> | |
</div> | |
</div> | |
</nav> | |
</div> | |
); | |
} | |
}); | |
var IssueBrowser = React.createClass({ | |
getInitialState: function() { | |
return {}; | |
}, | |
componentWillMount: function() { | |
this.updateIssues(this.props.data); | |
}, | |
handleSeverity: function(val) { | |
this.updateIssueTypes(this.props.data.Issues, val, this.state.confidence); | |
this.setState({severity: val}); | |
}, | |
handleConfidence: function(val) { | |
this.updateIssueTypes(this.props.data.Issues, this.state.severity, val); | |
this.setState({confidence: val}); | |
}, | |
handleIssueType: function(val) { | |
this.setState({issueType: val}); | |
}, | |
updateIssues: function(data) { | |
if (!data) { | |
this.setState({data: data}); | |
return; | |
} | |
var allSeverities = data.Issues | |
.map(function(issue) { | |
return issue.severity | |
}) | |
.sort() | |
.filter(function(item, pos, ary) { | |
return !pos || item != ary[pos - 1]; | |
}); | |
var allConfidences = data.Issues | |
.map(function(issue) { | |
return issue.confidence | |
}) | |
.sort() | |
.filter(function(item, pos, ary) { | |
return !pos || item != ary[pos - 1]; | |
}); | |
var selectedSeverities = allSeverities; | |
var selectedConfidences = allConfidences; | |
this.updateIssueTypes(data.Issues, selectedSeverities, selectedConfidences); | |
this.setState({ | |
data: data, | |
severity: selectedSeverities, | |
allSeverities: allSeverities, | |
confidence: selectedConfidences, | |
allConfidences: allConfidences, | |
issueType: null | |
}); | |
}, | |
updateIssueTypes: function(issues, severities, confidences) { | |
var allTypes = issues | |
.filter(function(issue) { | |
return severities.includes(issue.severity); | |
}) | |
.filter(function(issue) { | |
return confidences.includes(issue.confidence); | |
}) | |
.map(function(issue) { | |
return issue.details; | |
}) | |
.sort() | |
.filter(function(item, pos, ary) { | |
return !pos || item != ary[pos - 1]; | |
}); | |
if (this.state.issueType && !allTypes.includes(this.state.issueType)) { | |
this.setState({issueType: null}); | |
} | |
this.setState({allIssueTypes: allTypes}); | |
}, | |
render: function() { | |
return ( | |
<div className="content"> | |
<div className="columns"> | |
<div className="column is-one-quarter"> | |
<Navigation | |
data={ this.props.data } | |
severity={ this.state.severity } | |
confidence={ this.state.confidence } | |
issueType={ this.state.issueType } | |
allSeverities={ this.state.allSeverities } | |
allConfidences={ this.state.allConfidences } | |
allIssueTypes={ this.state.allIssueTypes } | |
onSeverity={ this.handleSeverity } | |
onConfidence={ this.handleConfidence } | |
onIssueType={ this.handleIssueType } | |
/> | |
</div> | |
<div className="column is-three-quarters"> | |
<Issues | |
data={ this.props.data } | |
severity={ this.state.severity } | |
confidence={ this.state.confidence } | |
issueType={ this.state.issueType } | |
/> | |
</div> | |
</div> | |
</div> | |
); | |
} | |
}); | |
ReactDOM.render( | |
<IssueBrowser data={ data } />, | |
document.getElementById("content") | |
); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment