Description
Description of the false positive
The go/log-injection
(CWE-117) query identifies log entries that are created from user input without proper sanitisation. The logrus
library is vulnerable to this when the default output formatter is used. However, different output formatters, such as JSONFormatter
, may sanitise log entries themselves. The go/log-injection
query is not currently aware of this behaviour and will report false positives whenever logrus
is used for logging and log entries are based on unsanitised user data, even if a sanitising output formatter is used.
Code samples or links to source code
In the following example, go/log-injection
will report that the log entry constructed using logrus.Fields
depends on a user-provided value that has not been sanitised:
func example(req *http.Request, ctx *goproxy.ProxyCtx) {
username := req.URL.Query()["username"][0]
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.WithFields(logrus.Fields{
"USERNAME": username,
})
}