github / github/codeql

Go: go/log-injection produces false positives for logrus when sanitising formatters are used

未關閉
#11,657 4 則留言 1 個 reaction 已指派 1 人 已被 @mbg 認領 在 GitHub 檢視
false-positive Go
主要語言
CodeQL
星號
10.1k
分支
2.1k
平均合併
2 天 15 小時
30 天內合併 PR
141

描述

**Description of the false positive**

The `go/log-injection` ([CWE-117](https://cwe.mitre.org/data/definitions/117.html)) 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:

```go
func example(req *http.Request, ctx *goproxy.ProxyCtx) {
username := req.URL.Query()["username"][0]
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.WithFields(logrus.Fields{
"USERNAME": username,
})
}
```

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。