Skip to content

Commit 569fad6

Browse files
authored
Merge pull request #10360 from atorralba/atorralba/fix-taint-implicit-reads
Dataflow: Fix implicit reads in taint tracking when FlowStates are used
2 parents 15db520 + 1078cf0 commit 569fad6

File tree

27 files changed

+163
-29
lines changed

27 files changed

+163
-29
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: fix
3+
---
4+
* Fixed an issue in the taint tracking analysis where implicit reads were not allowed by default in sinks or additional taint steps that used flow states.

cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,12 @@ abstract class Configuration extends DataFlow::Configuration {
172172
}
173173

174174
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
175-
(this.isSink(node) or this.isAdditionalTaintStep(node, _)) and
175+
(
176+
this.isSink(node) or
177+
this.isSink(node, _) or
178+
this.isAdditionalTaintStep(node, _) or
179+
this.isAdditionalTaintStep(node, _, _, _)
180+
) and
176181
defaultImplicitTaintRead(node, c)
177182
}
178183

cpp/ql/lib/semmle/code/cpp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,12 @@ abstract class Configuration extends DataFlow::Configuration {
172172
}
173173

174174
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
175-
(this.isSink(node) or this.isAdditionalTaintStep(node, _)) and
175+
(
176+
this.isSink(node) or
177+
this.isSink(node, _) or
178+
this.isAdditionalTaintStep(node, _) or
179+
this.isAdditionalTaintStep(node, _, _, _)
180+
) and
176181
defaultImplicitTaintRead(node, c)
177182
}
178183

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking1/TaintTrackingImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,12 @@ abstract class Configuration extends DataFlow::Configuration {
172172
}
173173

174174
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
175-
(this.isSink(node) or this.isAdditionalTaintStep(node, _)) and
175+
(
176+
this.isSink(node) or
177+
this.isSink(node, _) or
178+
this.isAdditionalTaintStep(node, _) or
179+
this.isAdditionalTaintStep(node, _, _, _)
180+
) and
176181
defaultImplicitTaintRead(node, c)
177182
}
178183

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking2/TaintTrackingImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,12 @@ abstract class Configuration extends DataFlow::Configuration {
172172
}
173173

174174
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
175-
(this.isSink(node) or this.isAdditionalTaintStep(node, _)) and
175+
(
176+
this.isSink(node) or
177+
this.isSink(node, _) or
178+
this.isAdditionalTaintStep(node, _) or
179+
this.isAdditionalTaintStep(node, _, _, _)
180+
) and
176181
defaultImplicitTaintRead(node, c)
177182
}
178183

cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/tainttracking3/TaintTrackingImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,12 @@ abstract class Configuration extends DataFlow::Configuration {
172172
}
173173

174174
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
175-
(this.isSink(node) or this.isAdditionalTaintStep(node, _)) and
175+
(
176+
this.isSink(node) or
177+
this.isSink(node, _) or
178+
this.isAdditionalTaintStep(node, _) or
179+
this.isAdditionalTaintStep(node, _, _, _)
180+
) and
176181
defaultImplicitTaintRead(node, c)
177182
}
178183

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
category: fix
3+
---
4+
* Fixed an issue in the taint tracking analysis where implicit reads were not allowed by default in sinks or additional taint steps that used flow states.

csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking1/TaintTrackingImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,12 @@ abstract class Configuration extends DataFlow::Configuration {
172172
}
173173

174174
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
175-
(this.isSink(node) or this.isAdditionalTaintStep(node, _)) and
175+
(
176+
this.isSink(node) or
177+
this.isSink(node, _) or
178+
this.isAdditionalTaintStep(node, _) or
179+
this.isAdditionalTaintStep(node, _, _, _)
180+
) and
176181
defaultImplicitTaintRead(node, c)
177182
}
178183

csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking2/TaintTrackingImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,12 @@ abstract class Configuration extends DataFlow::Configuration {
172172
}
173173

174174
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
175-
(this.isSink(node) or this.isAdditionalTaintStep(node, _)) and
175+
(
176+
this.isSink(node) or
177+
this.isSink(node, _) or
178+
this.isAdditionalTaintStep(node, _) or
179+
this.isAdditionalTaintStep(node, _, _, _)
180+
) and
176181
defaultImplicitTaintRead(node, c)
177182
}
178183

csharp/ql/lib/semmle/code/csharp/dataflow/internal/tainttracking3/TaintTrackingImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,12 @@ abstract class Configuration extends DataFlow::Configuration {
172172
}
173173

174174
override predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c) {
175-
(this.isSink(node) or this.isAdditionalTaintStep(node, _)) and
175+
(
176+
this.isSink(node) or
177+
this.isSink(node, _) or
178+
this.isAdditionalTaintStep(node, _) or
179+
this.isAdditionalTaintStep(node, _, _, _)
180+
) and
176181
defaultImplicitTaintRead(node, c)
177182
}
178183

0 commit comments

Comments
 (0)