github / github/codeql

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

Abierto
#11,657 4 comentarios 1 reacción 1 asignado Reclamado por @mbg Ver en GitHub
false-positive Go
Lenguaje dominante
CodeQL
Estrellas
10.1k
Forks
2.1k
Merge medio
2 d 15 h
PR fusionados (30 d)
141

Descripción

**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,
})
}
```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.