Skip to content

Commit baab7c2

Browse files
committed
Add log injection and cleartext logging tests for %T
1 parent 609c68a commit baab7c2

File tree

3 files changed

+40
-32
lines changed

3 files changed

+40
-32
lines changed

go/ql/test/query-tests/Security/CWE-117/LogInjection.go

+6
Original file line numberDiff line numberDiff line change
@@ -718,3 +718,9 @@ func handlerGood4(req *http.Request, ctx *goproxy.ProxyCtx) {
718718
sLogger.Warnf("user %#q logged in.\n", username) // $ hasTaintFlow="username"
719719
}
720720
}
721+
722+
// GOOD: User-provided values formatted using a %T directive, which prints the type of the argument
723+
func handlerGood5(req *http.Request) {
724+
object := req.URL.Query()["username"][0]
725+
log.Printf("found object of type %T.\n", object)
726+
}

go/ql/test/query-tests/Security/CWE-312/CleartextLogging.expected

+32-32
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@
1414
| main.go:26:13:26:20 | password | main.go:26:13:26:20 | password | main.go:26:13:26:20 | password | $@ flows to a logging call. | main.go:26:13:26:20 | password | Sensitive data returned by an access to password |
1515
| main.go:27:14:27:21 | password | main.go:27:14:27:21 | password | main.go:27:14:27:21 | password | $@ flows to a logging call. | main.go:27:14:27:21 | password | Sensitive data returned by an access to password |
1616
| main.go:28:16:28:23 | password | main.go:28:16:28:23 | password | main.go:28:16:28:23 | password | $@ flows to a logging call. | main.go:28:16:28:23 | password | Sensitive data returned by an access to password |
17-
| main.go:31:10:31:17 | password | main.go:31:10:31:17 | password | main.go:31:10:31:17 | password | $@ flows to a logging call. | main.go:31:10:31:17 | password | Sensitive data returned by an access to password |
18-
| main.go:32:17:32:24 | password | main.go:32:17:32:24 | password | main.go:32:17:32:24 | password | $@ flows to a logging call. | main.go:32:17:32:24 | password | Sensitive data returned by an access to password |
19-
| main.go:33:11:33:18 | password | main.go:33:11:33:18 | password | main.go:33:11:33:18 | password | $@ flows to a logging call. | main.go:33:11:33:18 | password | Sensitive data returned by an access to password |
20-
| main.go:34:12:34:19 | password | main.go:34:12:34:19 | password | main.go:34:12:34:19 | password | $@ flows to a logging call. | main.go:34:12:34:19 | password | Sensitive data returned by an access to password |
21-
| main.go:35:10:35:17 | password | main.go:35:10:35:17 | password | main.go:35:10:35:17 | password | $@ flows to a logging call. | main.go:35:10:35:17 | password | Sensitive data returned by an access to password |
22-
| main.go:36:17:36:24 | password | main.go:36:17:36:24 | password | main.go:36:17:36:24 | password | $@ flows to a logging call. | main.go:36:17:36:24 | password | Sensitive data returned by an access to password |
23-
| main.go:37:11:37:18 | password | main.go:37:11:37:18 | password | main.go:37:11:37:18 | password | $@ flows to a logging call. | main.go:37:11:37:18 | password | Sensitive data returned by an access to password |
24-
| main.go:38:12:38:19 | password | main.go:38:12:38:19 | password | main.go:38:12:38:19 | password | $@ flows to a logging call. | main.go:38:12:38:19 | password | Sensitive data returned by an access to password |
25-
| main.go:39:10:39:17 | password | main.go:39:10:39:17 | password | main.go:39:10:39:17 | password | $@ flows to a logging call. | main.go:39:10:39:17 | password | Sensitive data returned by an access to password |
26-
| main.go:40:17:40:24 | password | main.go:40:17:40:24 | password | main.go:40:17:40:24 | password | $@ flows to a logging call. | main.go:40:17:40:24 | password | Sensitive data returned by an access to password |
27-
| main.go:41:11:41:18 | password | main.go:41:11:41:18 | password | main.go:41:11:41:18 | password | $@ flows to a logging call. | main.go:41:11:41:18 | password | Sensitive data returned by an access to password |
28-
| main.go:42:12:42:19 | password | main.go:42:12:42:19 | password | main.go:42:12:42:19 | password | $@ flows to a logging call. | main.go:42:12:42:19 | password | Sensitive data returned by an access to password |
29-
| main.go:43:14:43:21 | password | main.go:43:14:43:21 | password | main.go:43:14:43:21 | password | $@ flows to a logging call. | main.go:43:14:43:21 | password | Sensitive data returned by an access to password |
30-
| main.go:45:12:45:19 | password | main.go:45:12:45:19 | password | main.go:45:12:45:19 | password | $@ flows to a logging call. | main.go:45:12:45:19 | password | Sensitive data returned by an access to password |
31-
| main.go:46:17:46:24 | password | main.go:46:17:46:24 | password | main.go:46:17:46:24 | password | $@ flows to a logging call. | main.go:46:17:46:24 | password | Sensitive data returned by an access to password |
32-
| main.go:53:35:53:42 | password | main.go:53:35:53:42 | password | main.go:53:35:53:42 | password | $@ flows to a logging call. | main.go:53:35:53:42 | password | Sensitive data returned by an access to password |
17+
| main.go:32:10:32:17 | password | main.go:32:10:32:17 | password | main.go:32:10:32:17 | password | $@ flows to a logging call. | main.go:32:10:32:17 | password | Sensitive data returned by an access to password |
18+
| main.go:33:17:33:24 | password | main.go:33:17:33:24 | password | main.go:33:17:33:24 | password | $@ flows to a logging call. | main.go:33:17:33:24 | password | Sensitive data returned by an access to password |
19+
| main.go:34:11:34:18 | password | main.go:34:11:34:18 | password | main.go:34:11:34:18 | password | $@ flows to a logging call. | main.go:34:11:34:18 | password | Sensitive data returned by an access to password |
20+
| main.go:35:12:35:19 | password | main.go:35:12:35:19 | password | main.go:35:12:35:19 | password | $@ flows to a logging call. | main.go:35:12:35:19 | password | Sensitive data returned by an access to password |
21+
| main.go:36:10:36:17 | password | main.go:36:10:36:17 | password | main.go:36:10:36:17 | password | $@ flows to a logging call. | main.go:36:10:36:17 | password | Sensitive data returned by an access to password |
22+
| main.go:37:17:37:24 | password | main.go:37:17:37:24 | password | main.go:37:17:37:24 | password | $@ flows to a logging call. | main.go:37:17:37:24 | password | Sensitive data returned by an access to password |
23+
| main.go:38:11:38:18 | password | main.go:38:11:38:18 | password | main.go:38:11:38:18 | password | $@ flows to a logging call. | main.go:38:11:38:18 | password | Sensitive data returned by an access to password |
24+
| main.go:39:12:39:19 | password | main.go:39:12:39:19 | password | main.go:39:12:39:19 | password | $@ flows to a logging call. | main.go:39:12:39:19 | password | Sensitive data returned by an access to password |
25+
| main.go:40:10:40:17 | password | main.go:40:10:40:17 | password | main.go:40:10:40:17 | password | $@ flows to a logging call. | main.go:40:10:40:17 | password | Sensitive data returned by an access to password |
26+
| main.go:41:17:41:24 | password | main.go:41:17:41:24 | password | main.go:41:17:41:24 | password | $@ flows to a logging call. | main.go:41:17:41:24 | password | Sensitive data returned by an access to password |
27+
| main.go:42:11:42:18 | password | main.go:42:11:42:18 | password | main.go:42:11:42:18 | password | $@ flows to a logging call. | main.go:42:11:42:18 | password | Sensitive data returned by an access to password |
28+
| main.go:43:12:43:19 | password | main.go:43:12:43:19 | password | main.go:43:12:43:19 | password | $@ flows to a logging call. | main.go:43:12:43:19 | password | Sensitive data returned by an access to password |
29+
| main.go:44:14:44:21 | password | main.go:44:14:44:21 | password | main.go:44:14:44:21 | password | $@ flows to a logging call. | main.go:44:14:44:21 | password | Sensitive data returned by an access to password |
30+
| main.go:47:12:47:19 | password | main.go:47:12:47:19 | password | main.go:47:12:47:19 | password | $@ flows to a logging call. | main.go:47:12:47:19 | password | Sensitive data returned by an access to password |
31+
| main.go:48:17:48:24 | password | main.go:48:17:48:24 | password | main.go:48:17:48:24 | password | $@ flows to a logging call. | main.go:48:17:48:24 | password | Sensitive data returned by an access to password |
32+
| main.go:55:35:55:42 | password | main.go:55:35:55:42 | password | main.go:55:35:55:42 | password | $@ flows to a logging call. | main.go:55:35:55:42 | password | Sensitive data returned by an access to password |
3333
| overrides.go:13:14:13:23 | call to String | overrides.go:9:9:9:16 | password | overrides.go:13:14:13:23 | call to String | $@ flows to a logging call. | overrides.go:9:9:9:16 | password | Sensitive data returned by an access to password |
3434
| passwords.go:9:14:9:14 | x | passwords.go:30:8:30:15 | password | passwords.go:9:14:9:14 | x | $@ flows to a logging call. | passwords.go:30:8:30:15 | password | Sensitive data returned by an access to password |
3535
| passwords.go:25:14:25:21 | password | passwords.go:25:14:25:21 | password | passwords.go:25:14:25:21 | password | $@ flows to a logging call. | passwords.go:25:14:25:21 | password | Sensitive data returned by an access to password |
@@ -121,22 +121,22 @@ nodes
121121
| main.go:26:13:26:20 | password | semmle.label | password |
122122
| main.go:27:14:27:21 | password | semmle.label | password |
123123
| main.go:28:16:28:23 | password | semmle.label | password |
124-
| main.go:31:10:31:17 | password | semmle.label | password |
125-
| main.go:32:17:32:24 | password | semmle.label | password |
126-
| main.go:33:11:33:18 | password | semmle.label | password |
127-
| main.go:34:12:34:19 | password | semmle.label | password |
128-
| main.go:35:10:35:17 | password | semmle.label | password |
129-
| main.go:36:17:36:24 | password | semmle.label | password |
130-
| main.go:37:11:37:18 | password | semmle.label | password |
131-
| main.go:38:12:38:19 | password | semmle.label | password |
132-
| main.go:39:10:39:17 | password | semmle.label | password |
133-
| main.go:40:17:40:24 | password | semmle.label | password |
134-
| main.go:41:11:41:18 | password | semmle.label | password |
135-
| main.go:42:12:42:19 | password | semmle.label | password |
136-
| main.go:43:14:43:21 | password | semmle.label | password |
137-
| main.go:45:12:45:19 | password | semmle.label | password |
138-
| main.go:46:17:46:24 | password | semmle.label | password |
139-
| main.go:53:35:53:42 | password | semmle.label | password |
124+
| main.go:32:10:32:17 | password | semmle.label | password |
125+
| main.go:33:17:33:24 | password | semmle.label | password |
126+
| main.go:34:11:34:18 | password | semmle.label | password |
127+
| main.go:35:12:35:19 | password | semmle.label | password |
128+
| main.go:36:10:36:17 | password | semmle.label | password |
129+
| main.go:37:17:37:24 | password | semmle.label | password |
130+
| main.go:38:11:38:18 | password | semmle.label | password |
131+
| main.go:39:12:39:19 | password | semmle.label | password |
132+
| main.go:40:10:40:17 | password | semmle.label | password |
133+
| main.go:41:17:41:24 | password | semmle.label | password |
134+
| main.go:42:11:42:18 | password | semmle.label | password |
135+
| main.go:43:12:43:19 | password | semmle.label | password |
136+
| main.go:44:14:44:21 | password | semmle.label | password |
137+
| main.go:47:12:47:19 | password | semmle.label | password |
138+
| main.go:48:17:48:24 | password | semmle.label | password |
139+
| main.go:55:35:55:42 | password | semmle.label | password |
140140
| overrides.go:9:9:9:16 | password | semmle.label | password |
141141
| overrides.go:13:14:13:23 | call to String | semmle.label | call to String |
142142
| passwords.go:8:12:8:12 | definition of x | semmle.label | definition of x |

go/ql/test/query-tests/Security/CWE-312/main.go

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ func main() {
2626
log.Panicf(password, "") // $ Alert
2727
log.Panicln(password) // $ Alert
2828
log.Output(0, password) // $ Alert
29+
log.Printf("%T", password)
2930

3031
l := log.Default()
3132
l.Print(password) // $ Alert
@@ -41,6 +42,7 @@ func main() {
4142
l.Panicf(password, "") // $ Alert
4243
l.Panicln(password) // $ Alert
4344
l.Output(0, password) // $ Alert
45+
l.Printf("%T", password)
4446

4547
glog.Info(password) // $ Alert
4648
logrus.Warning(password) // $ Alert

0 commit comments

Comments
 (0)