Skip to content

Commit bdf1da3

Browse files
committed
C#: Re-factor TaintedPath to use the new API.
1 parent 52bc43b commit bdf1da3

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

csharp/ql/lib/semmle/code/csharp/security/dataflow/TaintedPathQuery.qll

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ abstract class Sink extends DataFlow::ExprNode { }
2626
abstract class Sanitizer extends DataFlow::ExprNode { }
2727

2828
/**
29+
* DEPRECATED: Use `TaintedPath` instead.
30+
*
2931
* A taint-tracking configuration for uncontrolled data in path expression vulnerabilities.
3032
*/
31-
class TaintTrackingConfiguration extends TaintTracking::Configuration {
33+
deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration {
3234
TaintTrackingConfiguration() { this = "TaintedPath" }
3335

3436
override predicate isSource(DataFlow::Node source) { source instanceof Source }
@@ -38,6 +40,22 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration {
3840
override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer }
3941
}
4042

43+
/**
44+
* A taint-tracking configuration for uncontrolled data in path expression vulnerabilities.
45+
*/
46+
private module TaintedPathConfig implements DataFlow::ConfigSig {
47+
predicate isSource(DataFlow::Node source) { source instanceof Source }
48+
49+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
50+
51+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
52+
}
53+
54+
/**
55+
* A taint-tracking module for uncontrolled data in path expression vulnerabilities.
56+
*/
57+
module TaintedPath = TaintTracking::Global<TaintedPathConfig>;
58+
4159
/** A source of remote user input. */
4260
class RemoteSource extends Source instanceof RemoteFlowSource { }
4361

csharp/ql/src/Security Features/CWE-022/TaintedPath.ql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
import csharp
1818
import semmle.code.csharp.security.dataflow.TaintedPathQuery
19-
import semmle.code.csharp.dataflow.DataFlow::DataFlow::PathGraph
19+
import TaintedPath::PathGraph
2020

21-
from TaintTrackingConfiguration c, DataFlow::PathNode source, DataFlow::PathNode sink
22-
where c.hasFlowPath(source, sink)
21+
from TaintedPath::PathNode source, TaintedPath::PathNode sink
22+
where TaintedPath::flowPath(source, sink)
2323
select sink.getNode(), source, sink, "This path depends on a $@.", source.getNode(),
2424
"user-provided value"

0 commit comments

Comments
 (0)