Skip to content

Instantly share code, notes, and snippets.

@solo-yolo
Last active November 12, 2021 14:26
Show Gist options
  • Save solo-yolo/b134100dea70faf34a05e4f7f544246f to your computer and use it in GitHub Desktop.
Save solo-yolo/b134100dea70faf34a05e4f7f544246f to your computer and use it in GitHub Desktop.
blackbox-exporter-gosec-scan-results.html
<!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