Skip to content

Commit 0707064

Browse files
committed
Constrain the save/path step
1 parent a4aaf0e commit 0707064

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

python/ql/src/experimental/Security/UnsafeUnpackQuery.qll

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -89,19 +89,17 @@ class UnsafeUnpackingConfig extends TaintTracking::Configuration {
8989
nodeTo.(MethodCallNode).calls(nodeFrom, ["getlist", "get", "chunks"])
9090
or
9191
// Considering the use of "fs"
92-
exists(API::CallNode fs, MethodCallNode mcn |
93-
fs =
94-
API::moduleImport("django")
95-
.getMember("core")
96-
.getMember("files")
97-
.getMember("storage")
98-
.getMember("FileSystemStorage")
99-
.getACall() and
100-
fs.flowsTo(mcn.getObject()) and
101-
mcn.getMethodName() = ["save", "path"] and
102-
nodeFrom = mcn.getArg(0) and
103-
nodeTo = mcn
104-
)
92+
// see fs: https://docs.djangoproject.com/en/4.1/ref/files/storage/#the-filesystemstorage-class
93+
nodeTo =
94+
API::moduleImport("django")
95+
.getMember("core")
96+
.getMember("files")
97+
.getMember("storage")
98+
.getMember("FileSystemStorage")
99+
.getReturn()
100+
.getMember(["save", "path"])
101+
.getACall() and
102+
nodeFrom = nodeTo.(MethodCallNode).getArg(0)
105103
or
106104
// Accessing the name or raw content
107105
nodeTo.(AttrRead).accesses(nodeFrom, ["name", "raw"])

0 commit comments

Comments
 (0)