Skip to content

Commit 375edf7

Browse files
author
Daniel Santos
committed
TokenAssignmentValueSink refactor
1 parent 3051903 commit 375edf7

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

javascript/ql/src/experimental/Security/CWE-340/TokenBuiltFromUUID.ql

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,12 @@ class PredictableResultSource extends DataFlow::Node {
2828

2929
class TokenAssignmentValueSink extends DataFlow::Node {
3030
TokenAssignmentValueSink() {
31-
exists(PropWrite pw | this = pw.getRhs() |
32-
pw.getPropertyName().toLowerCase().matches(["%token", "%code"])
33-
)
31+
exists(string name | name.toLowerCase().matches(["%token", "%code"]) |
32+
exists(PropWrite pw | this = pw.getRhs() | pw.getPropertyName().toLowerCase() = name)
3433
or
3534
exists(AssignExpr ae | this = ae.getRhs().flow() |
36-
ae.getLhs()
37-
.(VariableAccess)
38-
.getVariable()
39-
.getName()
40-
.toLowerCase()
41-
.matches(["%token", "%code"])
35+
ae.getLhs().(VariableAccess).getVariable().getName().toLowerCase() = name
36+
)
4237
)
4338
}
4439
}

python/ql/src/experimental/Security/CWE-340/TokenBuiltFromUUID.ql

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,10 @@ class PredictableResultSource extends DataFlow::Node {
3434

3535
class TokenAssignmentValueSink extends DataFlow::Node {
3636
TokenAssignmentValueSink() {
37-
exists(Assign a, Expr target | this = DataFlow::exprNode(a.getValue()) |
38-
target = a.getATarget() and
39-
(target instanceof Attribute or target instanceof Name) and
40-
(
41-
target.(Attribute).getName().toLowerCase().matches(["%token", "%code"])
37+
exists(string name | name.toLowerCase().matches(["%token", "%code"]) |
38+
exists(DefinitionNode n | n.getValue() = this.asCfgNode() | name = n.(NameNode).getId())
4239
or
43-
target.(Name).getId().toLowerCase().matches(["%token", "%code"])
44-
)
40+
exists(DataFlow::AttrWrite aw | aw.getValue() = this | name = aw.getAttributeName())
4541
)
4642
}
4743
}

0 commit comments

Comments
 (0)