Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8a3bd84

Browse files
committed
Fix test expectations for Cleartext Logging
One spurious alert was removed, one missing alert was added, and some source locations changed.
1 parent 3229630 commit 8a3bd84

5 files changed

Lines changed: 45 additions & 68 deletions

File tree

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

Lines changed: 28 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
| passwords.go:34:14:34:35 | ...+... | passwords.go:21:2:21:9 | definition of password | passwords.go:34:14:34:35 | ...+... | $@ flows to a logging call. | passwords.go:21:2:21:9 | definition of password | Sensitive data returned by an access to password |
4242
| passwords.go:39:14:39:17 | obj1 | passwords.go:37:13:37:13 | x | passwords.go:39:14:39:17 | obj1 | $@ flows to a logging call. | passwords.go:37:13:37:13 | x | Sensitive data returned by an access to password |
4343
| passwords.go:44:14:44:17 | obj2 | passwords.go:21:2:21:9 | definition of password | passwords.go:44:14:44:17 | obj2 | $@ flows to a logging call. | passwords.go:21:2:21:9 | definition of password | Sensitive data returned by an access to password |
44-
| passwords.go:47:14:47:17 | obj3 | passwords.go:21:2:21:9 | definition of password | passwords.go:47:14:47:17 | obj3 | $@ flows to a logging call. | passwords.go:21:2:21:9 | definition of password | Sensitive data returned by an access to password |
4544
| passwords.go:51:14:51:27 | fixed_password | passwords.go:50:2:50:15 | definition of fixed_password | passwords.go:51:14:51:27 | fixed_password | $@ flows to a logging call. | passwords.go:50:2:50:15 | definition of fixed_password | Sensitive data returned by an access to fixed_password |
4645
| passwords.go:89:14:89:26 | utilityObject | passwords.go:87:16:87:36 | call to make | passwords.go:89:14:89:26 | utilityObject | $@ flows to a logging call. | passwords.go:87:16:87:36 | call to make | Sensitive data returned by an access to passwordSet |
4746
| passwords.go:92:23:92:28 | secret | passwords.go:21:2:21:9 | definition of password | passwords.go:92:23:92:28 | secret | $@ flows to a logging call. | passwords.go:21:2:21:9 | definition of password | Sensitive data returned by an access to password |
@@ -175,8 +174,8 @@ edges
175174
| main.go:80:17:80:24 | password | main.go:82:12:82:19 | password | provenance | |
176175
| main.go:80:17:80:24 | password | main.go:83:17:83:24 | password | provenance | |
177176
| main.go:80:17:80:24 | password | main.go:86:19:86:26 | password | provenance | |
178-
| main.go:85:2:85:7 | definition of fields | main.go:87:29:87:34 | fields | provenance | Sink:MaD:2 |
179-
| main.go:86:19:86:26 | password | main.go:85:2:85:7 | definition of fields | provenance | Config |
177+
| main.go:86:2:86:7 | fields [postupdate] | main.go:87:29:87:34 | fields | provenance | Sink:MaD:2 |
178+
| main.go:86:19:86:26 | password | main.go:86:2:86:7 | fields [postupdate] | provenance | Config |
180179
| main.go:86:19:86:26 | password | main.go:90:35:90:42 | password | provenance | Sink:MaD:1 |
181180
| overrides.go:8:2:8:9 | definition of password | overrides.go:9:9:9:16 | password | provenance | |
182181
| overrides.go:9:9:9:16 | password | overrides.go:13:14:13:23 | call to String | provenance | |
@@ -188,21 +187,19 @@ edges
188187
| passwords.go:30:8:30:15 | password | passwords.go:8:12:8:12 | definition of x | provenance | |
189188
| passwords.go:34:28:34:35 | password | passwords.go:34:14:34:35 | ...+... | provenance | Config |
190189
| passwords.go:34:28:34:35 | password | passwords.go:42:6:42:13 | password | provenance | |
191-
| passwords.go:36:10:38:2 | struct literal | passwords.go:39:14:39:17 | obj1 | provenance | |
192-
| passwords.go:37:13:37:13 | x | passwords.go:36:10:38:2 | struct literal | provenance | Config |
193-
| passwords.go:41:10:43:2 | struct literal | passwords.go:44:14:44:17 | obj2 | provenance | |
194-
| passwords.go:42:6:42:13 | password | passwords.go:41:10:43:2 | struct literal | provenance | Config |
190+
| passwords.go:36:10:38:2 | struct literal [postupdate] | passwords.go:39:14:39:17 | obj1 | provenance | |
191+
| passwords.go:37:13:37:13 | x | passwords.go:36:10:38:2 | struct literal [postupdate] | provenance | Config |
192+
| passwords.go:41:10:43:2 | struct literal [postupdate] | passwords.go:44:14:44:17 | obj2 | provenance | |
193+
| passwords.go:42:6:42:13 | password | passwords.go:41:10:43:2 | struct literal [postupdate] | provenance | Config |
195194
| passwords.go:42:6:42:13 | password | passwords.go:48:11:48:18 | password | provenance | |
196-
| passwords.go:46:6:46:9 | definition of obj3 | passwords.go:47:14:47:17 | obj3 | provenance | |
197-
| passwords.go:48:11:48:18 | password | passwords.go:46:6:46:9 | definition of obj3 | provenance | Config |
198195
| passwords.go:48:11:48:18 | password | passwords.go:92:23:92:28 | secret | provenance | |
199196
| passwords.go:48:11:48:18 | password | passwords.go:102:33:102:40 | password | provenance | |
200197
| passwords.go:48:11:48:18 | password | passwords.go:108:34:108:41 | password | provenance | |
201198
| passwords.go:48:11:48:18 | password | passwords.go:113:33:113:40 | password | provenance | |
202199
| passwords.go:48:11:48:18 | password | passwords.go:123:13:123:20 | password | provenance | |
203200
| passwords.go:50:2:50:15 | definition of fixed_password | passwords.go:51:14:51:27 | fixed_password | provenance | |
204-
| passwords.go:86:19:88:2 | struct literal | passwords.go:89:14:89:26 | utilityObject | provenance | |
205-
| passwords.go:87:16:87:36 | call to make | passwords.go:86:19:88:2 | struct literal | provenance | Config |
201+
| passwords.go:86:19:88:2 | struct literal [postupdate] | passwords.go:89:14:89:26 | utilityObject | provenance | |
202+
| passwords.go:87:16:87:36 | call to make | passwords.go:86:19:88:2 | struct literal [postupdate] | provenance | Config |
206203
| passwords.go:102:33:102:40 | password | passwords.go:102:15:102:40 | ...+... | provenance | Config |
207204
| passwords.go:102:33:102:40 | password | passwords.go:108:34:108:41 | password | provenance | |
208205
| passwords.go:102:33:102:40 | password | passwords.go:113:33:113:40 | password | provenance | |
@@ -215,22 +212,20 @@ edges
215212
| passwords.go:116:6:116:14 | definition of password1 | passwords.go:117:28:117:36 | password1 | provenance | |
216213
| passwords.go:117:28:117:36 | password1 | passwords.go:117:28:117:45 | call to String | provenance | Config |
217214
| passwords.go:117:28:117:45 | call to String | passwords.go:117:14:117:45 | ...+... | provenance | Config |
218-
| passwords.go:120:12:125:2 | struct literal | passwords.go:127:14:127:19 | config | provenance | |
219-
| passwords.go:120:12:125:2 | struct literal [x] | passwords.go:128:14:128:19 | config [x] | provenance | |
220-
| passwords.go:120:12:125:2 | struct literal [y] | passwords.go:129:14:129:19 | config [y] | provenance | |
221-
| passwords.go:121:13:121:14 | x3 | passwords.go:120:12:125:2 | struct literal | provenance | Config |
222-
| passwords.go:123:13:123:20 | password | passwords.go:120:12:125:2 | struct literal | provenance | Config |
223-
| passwords.go:123:13:123:20 | password | passwords.go:120:12:125:2 | struct literal [x] | provenance | |
224-
| passwords.go:124:13:124:25 | call to getPassword | passwords.go:120:12:125:2 | struct literal | provenance | Config |
225-
| passwords.go:124:13:124:25 | call to getPassword | passwords.go:120:12:125:2 | struct literal [y] | provenance | |
215+
| passwords.go:120:12:125:2 | struct literal [postupdate] | passwords.go:127:14:127:19 | config | provenance | |
216+
| passwords.go:120:12:125:2 | struct literal [postupdate] [x] | passwords.go:128:14:128:19 | config [x] | provenance | |
217+
| passwords.go:120:12:125:2 | struct literal [postupdate] [y] | passwords.go:129:14:129:19 | config [y] | provenance | |
218+
| passwords.go:121:13:121:14 | x3 | passwords.go:120:12:125:2 | struct literal [postupdate] | provenance | Config |
219+
| passwords.go:123:13:123:20 | password | passwords.go:120:12:125:2 | struct literal [postupdate] | provenance | Config |
220+
| passwords.go:123:13:123:20 | password | passwords.go:120:12:125:2 | struct literal [postupdate] [x] | provenance | |
221+
| passwords.go:124:13:124:25 | call to getPassword | passwords.go:120:12:125:2 | struct literal [postupdate] | provenance | Config |
222+
| passwords.go:124:13:124:25 | call to getPassword | passwords.go:120:12:125:2 | struct literal [postupdate] [y] | provenance | |
226223
| passwords.go:128:14:128:19 | config [x] | passwords.go:128:14:128:21 | selection of x | provenance | |
227224
| passwords.go:129:14:129:19 | config [y] | passwords.go:129:14:129:21 | selection of y | provenance | |
228225
| protobuf.go:9:2:9:9 | definition of password | protobuf.go:12:22:12:29 | password | provenance | |
229-
| protobuf.go:11:2:11:6 | definition of query [pointer, Description] | protobuf.go:12:2:12:6 | query [pointer, Description] | provenance | |
230-
| protobuf.go:12:2:12:6 | implicit dereference [Description] | protobuf.go:11:2:11:6 | definition of query [pointer, Description] | provenance | |
231-
| protobuf.go:12:2:12:6 | query [pointer, Description] | protobuf.go:12:2:12:6 | implicit dereference [Description] | provenance | |
232-
| protobuf.go:12:2:12:6 | query [pointer, Description] | protobuf.go:14:14:14:18 | query [pointer, Description] | provenance | |
233-
| protobuf.go:12:22:12:29 | password | protobuf.go:12:2:12:6 | implicit dereference [Description] | provenance | |
226+
| protobuf.go:12:2:12:6 | implicit dereference [postupdate] [Description] | protobuf.go:12:2:12:6 | query [postupdate] [pointer, Description] | provenance | |
227+
| protobuf.go:12:2:12:6 | query [postupdate] [pointer, Description] | protobuf.go:14:14:14:18 | query [pointer, Description] | provenance | |
228+
| protobuf.go:12:22:12:29 | password | protobuf.go:12:2:12:6 | implicit dereference [postupdate] [Description] | provenance | |
234229
| protobuf.go:14:14:14:18 | query [pointer, Description] | protobuf.go:14:14:14:35 | call to GetDescription | provenance | |
235230
| protobuf.go:14:14:14:18 | query [pointer, Description] | protos/query/query.pb.go:117:7:117:7 | definition of x [pointer, Description] | provenance | |
236231
| protos/query/query.pb.go:117:7:117:7 | definition of x [pointer, Description] | protos/query/query.pb.go:119:10:119:10 | x [pointer, Description] | provenance | |
@@ -298,7 +293,7 @@ nodes
298293
| main.go:80:17:80:24 | password | semmle.label | password |
299294
| main.go:82:12:82:19 | password | semmle.label | password |
300295
| main.go:83:17:83:24 | password | semmle.label | password |
301-
| main.go:85:2:85:7 | definition of fields | semmle.label | definition of fields |
296+
| main.go:86:2:86:7 | fields [postupdate] | semmle.label | fields [postupdate] |
302297
| main.go:86:19:86:26 | password | semmle.label | password |
303298
| main.go:87:29:87:34 | fields | semmle.label | fields |
304299
| main.go:90:35:90:42 | password | semmle.label | password |
@@ -316,18 +311,16 @@ nodes
316311
| passwords.go:32:12:32:19 | password | semmle.label | password |
317312
| passwords.go:34:14:34:35 | ...+... | semmle.label | ...+... |
318313
| passwords.go:34:28:34:35 | password | semmle.label | password |
319-
| passwords.go:36:10:38:2 | struct literal | semmle.label | struct literal |
314+
| passwords.go:36:10:38:2 | struct literal [postupdate] | semmle.label | struct literal [postupdate] |
320315
| passwords.go:37:13:37:13 | x | semmle.label | x |
321316
| passwords.go:39:14:39:17 | obj1 | semmle.label | obj1 |
322-
| passwords.go:41:10:43:2 | struct literal | semmle.label | struct literal |
317+
| passwords.go:41:10:43:2 | struct literal [postupdate] | semmle.label | struct literal [postupdate] |
323318
| passwords.go:42:6:42:13 | password | semmle.label | password |
324319
| passwords.go:44:14:44:17 | obj2 | semmle.label | obj2 |
325-
| passwords.go:46:6:46:9 | definition of obj3 | semmle.label | definition of obj3 |
326-
| passwords.go:47:14:47:17 | obj3 | semmle.label | obj3 |
327320
| passwords.go:48:11:48:18 | password | semmle.label | password |
328321
| passwords.go:50:2:50:15 | definition of fixed_password | semmle.label | definition of fixed_password |
329322
| passwords.go:51:14:51:27 | fixed_password | semmle.label | fixed_password |
330-
| passwords.go:86:19:88:2 | struct literal | semmle.label | struct literal |
323+
| passwords.go:86:19:88:2 | struct literal [postupdate] | semmle.label | struct literal [postupdate] |
331324
| passwords.go:87:16:87:36 | call to make | semmle.label | call to make |
332325
| passwords.go:89:14:89:26 | utilityObject | semmle.label | utilityObject |
333326
| passwords.go:92:23:92:28 | secret | semmle.label | secret |
@@ -341,9 +334,9 @@ nodes
341334
| passwords.go:117:14:117:45 | ...+... | semmle.label | ...+... |
342335
| passwords.go:117:28:117:36 | password1 | semmle.label | password1 |
343336
| passwords.go:117:28:117:45 | call to String | semmle.label | call to String |
344-
| passwords.go:120:12:125:2 | struct literal | semmle.label | struct literal |
345-
| passwords.go:120:12:125:2 | struct literal [x] | semmle.label | struct literal [x] |
346-
| passwords.go:120:12:125:2 | struct literal [y] | semmle.label | struct literal [y] |
337+
| passwords.go:120:12:125:2 | struct literal [postupdate] | semmle.label | struct literal [postupdate] |
338+
| passwords.go:120:12:125:2 | struct literal [postupdate] [x] | semmle.label | struct literal [postupdate] [x] |
339+
| passwords.go:120:12:125:2 | struct literal [postupdate] [y] | semmle.label | struct literal [postupdate] [y] |
347340
| passwords.go:121:13:121:14 | x3 | semmle.label | x3 |
348341
| passwords.go:123:13:123:20 | password | semmle.label | password |
349342
| passwords.go:124:13:124:25 | call to getPassword | semmle.label | call to getPassword |
@@ -353,9 +346,8 @@ nodes
353346
| passwords.go:129:14:129:19 | config [y] | semmle.label | config [y] |
354347
| passwords.go:129:14:129:21 | selection of y | semmle.label | selection of y |
355348
| protobuf.go:9:2:9:9 | definition of password | semmle.label | definition of password |
356-
| protobuf.go:11:2:11:6 | definition of query [pointer, Description] | semmle.label | definition of query [pointer, Description] |
357-
| protobuf.go:12:2:12:6 | implicit dereference [Description] | semmle.label | implicit dereference [Description] |
358-
| protobuf.go:12:2:12:6 | query [pointer, Description] | semmle.label | query [pointer, Description] |
349+
| protobuf.go:12:2:12:6 | implicit dereference [postupdate] [Description] | semmle.label | implicit dereference [postupdate] [Description] |
350+
| protobuf.go:12:2:12:6 | query [postupdate] [pointer, Description] | semmle.label | query [postupdate] [pointer, Description] |
359351
| protobuf.go:12:22:12:29 | password | semmle.label | password |
360352
| protobuf.go:14:14:14:18 | query [pointer, Description] | semmle.label | query [pointer, Description] |
361353
| protobuf.go:14:14:14:35 | call to GetDescription | semmle.label | call to GetDescription |
@@ -365,18 +357,3 @@ nodes
365357
| protos/query/query.pb.go:119:10:119:22 | selection of Description | semmle.label | selection of Description |
366358
subpaths
367359
| protobuf.go:14:14:14:18 | query [pointer, Description] | protos/query/query.pb.go:117:7:117:7 | definition of x [pointer, Description] | protos/query/query.pb.go:119:10:119:22 | selection of Description | protobuf.go:14:14:14:35 | call to GetDescription |
368-
testFailures
369-
| main.go:17:2:17:9 | definition of password | Unexpected result: Source |
370-
| main.go:87:29:87:34 | fields | Unexpected result: Alert |
371-
| overrides.go:8:2:8:9 | definition of password | Unexpected result: Source |
372-
| overrides.go:9:18:9:28 | comment | Missing result: Source |
373-
| passwords.go:21:2:21:9 | definition of password | Unexpected result: Source |
374-
| passwords.go:30:18:30:28 | comment | Missing result: Source |
375-
| passwords.go:42:16:42:26 | comment | Missing result: Source |
376-
| passwords.go:48:20:48:30 | comment | Missing result: Source |
377-
| passwords.go:50:2:50:15 | definition of fixed_password | Unexpected result: Source |
378-
| passwords.go:91:31:91:41 | comment | Missing result: Source |
379-
| passwords.go:116:6:116:14 | definition of password1 | Unexpected result: Source |
380-
| passwords.go:123:28:123:38 | comment | Missing result: Source |
381-
| protobuf.go:9:2:9:9 | definition of password | Unexpected result: Source |
382-
| protobuf.go:12:31:12:41 | comment | Missing result: Source |

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
var i int = rand.Int()
1515

1616
func main() {
17-
password := "P4ssw0rd"
17+
password := "P4ssw0rd" // $ Source
1818

1919
log.Print(password) // $ Alert
2020
log.Printf("%s", password) // $ Alert
@@ -84,7 +84,7 @@ func main() {
8484

8585
fields := make(logrus.Fields)
8686
fields["pass"] = password
87-
entry := logrus.WithFields(fields)
87+
entry := logrus.WithFields(fields) // $ Alert
8888
entry.Errorf("")
8989

9090
entry = logrus.WithField("pass", password) // $ Alert

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import "fmt"
55
type s struct{}
66

77
func (_ s) String() string {
8-
password := "horsebatterystaplecorrect"
9-
return password // $ Source
8+
password := "horsebatterystaplecorrect" // $ Source
9+
return password
1010
}
1111

1212
func overrideTest(x s, y fmt.Stringer) {

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func redact(kind, value string) string {
1818

1919
func test() {
2020
name := "user"
21-
password := "P@ssw0rd"
21+
password := "P@ssw0rd" // $ Source
2222
x := "horsebatterystapleincorrect"
2323
var o passStruct
2424

@@ -27,7 +27,7 @@ func test() {
2727
log.Println(getPassword()) // $ Alert
2828
log.Println(o.getPassword()) // $ Alert
2929

30-
myLog(password) // $ Source
30+
myLog(password)
3131

3232
log.Panic(password) // $ Alert
3333

@@ -39,16 +39,16 @@ func test() {
3939
log.Println(obj1) // $ Alert
4040

4141
obj2 := xStruct{
42-
x: password, // $ Source
42+
x: password,
4343
}
4444
log.Println(obj2) // $ Alert
4545

4646
var obj3 xStruct
47-
log.Println(obj3) // $ SPURIOUS: Alert // caught because of the below line and def-use flow
48-
obj3.x = password // $ Source
47+
log.Println(obj3)
48+
obj3.x = password
4949

50-
fixed_password := "cowbatterystaplecorrect"
51-
log.Println(fixed_password) // $ Alert // Probably OK
50+
fixed_password := "cowbatterystaplecorrect" // $ Source
51+
log.Println(fixed_password) // $ Alert // Probably OK
5252

5353
log.Println(IncorrectPasswordError) // OK
5454

@@ -88,7 +88,7 @@ func test() {
8888
}
8989
log.Println(utilityObject) // $ Alert
9090

91-
secret := password // $ Source
91+
secret := password
9292
log.Printf("pw: %s", secret) // $ Alert
9393

9494
log.Println("Password is: " + redact("password", password))
@@ -113,14 +113,14 @@ func test() {
113113
log.Println("Password is: " + password) // $ SPURIOUS: Alert
114114
}
115115

116-
var password1 stringable = stringable{"arstneio"}
117-
log.Println(name + ", " + password1.String()) // $ Alert
116+
var password1 stringable = stringable{"arstneio"} // $ Source
117+
log.Println(name + ", " + password1.String()) // $ Alert
118118

119119
x3 := "sheepbatterystaplecorrect"
120120
config := Config{
121121
password: x3, // $ Source
122122
hostname: "tarski",
123-
x: password, // $ Source
123+
x: password,
124124
y: getPassword(), // $ Source
125125
}
126126
log.Println(config.hostname) // OK

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import (
66
)
77

88
func testProtobuf() {
9-
password := "P@ssw0rd"
9+
password := "P@ssw0rd" // $ Source
1010

1111
query := &query.Query{}
12-
query.Description = password // $ Source
12+
query.Description = password
1313

1414
log.Println(query.GetDescription()) // $ Alert
1515
log.Println(query.GetId()) // OK

0 commit comments

Comments
 (0)