Skip to content

Commit 96f9c40

Browse files
committed
C#: Re-factor TaintedWebClient to use the new API.
1 parent a96ad60 commit 96f9c40

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

csharp/ql/src/experimental/CWE-099/TaintedWebClient.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 TaintedWebClientLib
19-
import semmle.code.csharp.dataflow.DataFlow::DataFlow::PathGraph
19+
import TaintedWebClient::PathGraph
2020

21-
from TaintTrackingConfiguration c, DataFlow::PathNode source, DataFlow::PathNode sink
22-
where c.hasFlowPath(source, sink)
21+
from TaintedWebClient::PathNode source, TaintedWebClient::PathNode sink
22+
where TaintedWebClient::flowPath(source, sink)
2323
select sink.getNode(), source, sink, "A method of WebClient depepends on a $@.", source.getNode(),
2424
"user-provided value"

csharp/ql/src/experimental/CWE-099/TaintedWebClientLib.qll

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

4040
/**
41+
* DEPRECATED: Use `TaintedWebClient` instead.
42+
*
4143
* A taint-tracking configuration for uncontrolled data in path expression vulnerabilities.
4244
*/
43-
class TaintTrackingConfiguration extends TaintTracking::Configuration {
45+
deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration {
4446
TaintTrackingConfiguration() { this = "TaintedWebClientLib" }
4547

4648
override predicate isSource(DataFlow::Node source) { source instanceof Source }
@@ -50,6 +52,22 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration {
5052
override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer }
5153
}
5254

55+
/**
56+
* A taint-tracking configuration for uncontrolled data in path expression vulnerabilities.
57+
*/
58+
private module TaintedWebClientConfig implements DataFlow::ConfigSig {
59+
predicate isSource(DataFlow::Node source) { source instanceof Source }
60+
61+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
62+
63+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
64+
}
65+
66+
/**
67+
* A taint-tracking module for uncontrolled data in path expression vulnerabilities.
68+
*/
69+
module TaintedWebClient = TaintTracking::Global<TaintedWebClientConfig>;
70+
5371
/** A source of remote user input. */
5472
class RemoteSource extends Source instanceof RemoteFlowSource { }
5573

0 commit comments

Comments
 (0)