Skip to content

Commit ac618e1

Browse files
committed
Expand FileNameSource for stored xss
1 parent 587f9c2 commit ac618e1

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

go/ql/lib/semmle/go/security/StoredXssCustomizations.qll

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ module StoredXss {
3333
walkFn.getACall().getArgument(1) = f.getASuccessor*()
3434
)
3535
or
36-
// A call to os.FileInfo.Name
37-
exists(Method m | m.implements("io/fs", "FileInfo", "Name") |
38-
m = this.(DataFlow::CallNode).getTarget()
36+
// The return value of a call to `os.DirEntry.Name`, `os.FileInfo.Name`
37+
// or `os.File.ReadDirNames`.
38+
exists(DataFlow::CallNode cn, Method m | m = cn.getTarget() and this = cn.getResult(0) |
39+
m.implements("io/fs", ["DirEntry", "FileInfo"], "Name") or
40+
m.hasQualifiedName("os", "File", "ReadDirNames")
3941
)
4042
}
4143
}

go/ql/test/query-tests/Security/CWE-079/StoredXss.expected

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
#select
2+
| StoredXss.go:13:21:13:36 | ...+... | StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | Stored cross-site scripting vulnerability due to $@. | StoredXss.go:13:21:13:31 | call to Name | stored value |
23
| stored.go:30:22:30:25 | name | stored.go:18:3:18:28 | ... := ...[0] | stored.go:30:22:30:25 | name | Stored cross-site scripting vulnerability due to $@. | stored.go:18:3:18:28 | ... := ...[0] | stored value |
34
| stored.go:61:22:61:25 | path | stored.go:59:30:59:33 | SSA def(path) | stored.go:61:22:61:25 | path | Stored cross-site scripting vulnerability due to $@. | stored.go:59:30:59:33 | SSA def(path) | stored value |
45
edges
6+
| StoredXss.go:13:21:13:31 | call to Name | StoredXss.go:13:21:13:36 | ...+... | provenance | |
57
| stored.go:18:3:18:28 | ... := ...[0] | stored.go:25:14:25:17 | rows | provenance | Src:MaD:1 |
68
| stored.go:25:14:25:17 | rows | stored.go:25:29:25:33 | &... [postupdate] | provenance | FunctionModel |
79
| stored.go:25:29:25:33 | &... [postupdate] | stored.go:30:22:30:25 | name | provenance | |
810
| stored.go:59:30:59:33 | SSA def(path) | stored.go:61:22:61:25 | path | provenance | |
911
models
1012
| 1 | Source: database/sql; DB; true; Query; ; ; ReturnValue[0]; database; manual |
1113
nodes
14+
| StoredXss.go:13:21:13:31 | call to Name | semmle.label | call to Name |
15+
| StoredXss.go:13:21:13:36 | ...+... | semmle.label | ...+... |
1216
| stored.go:18:3:18:28 | ... := ...[0] | semmle.label | ... := ...[0] |
1317
| stored.go:25:14:25:17 | rows | semmle.label | rows |
1418
| stored.go:25:29:25:33 | &... [postupdate] | semmle.label | &... [postupdate] |
1519
| stored.go:30:22:30:25 | name | semmle.label | name |
1620
| stored.go:59:30:59:33 | SSA def(path) | semmle.label | SSA def(path) |
1721
| stored.go:61:22:61:25 | path | semmle.label | path |
1822
subpaths
19-
testFailures
20-
| StoredXss.go:13:39:13:63 | comment | Missing result: Alert[go/stored-xss] |

0 commit comments

Comments
 (0)