Skip to content

Commit 60544c6

Browse files
committed
C#: Re-factor UrlRedirect to use the new API.
1 parent bdf1da3 commit 60544c6

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ abstract class Sanitizer extends DataFlow::ExprNode { }
3333
abstract deprecated class SanitizerGuard extends DataFlow::BarrierGuard { }
3434

3535
/**
36+
* DEPRECATED: Use `UrlRedirect` instead.
37+
*
3638
* A taint-tracking configuration for reasoning about unvalidated URL redirect vulnerabilities.
3739
*/
38-
class TaintTrackingConfiguration extends TaintTracking::Configuration {
40+
deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration {
3941
TaintTrackingConfiguration() { this = "UrlRedirect" }
4042

4143
override predicate isSource(DataFlow::Node source) { source instanceof Source }
@@ -49,6 +51,22 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration {
4951
}
5052
}
5153

54+
/**
55+
* A taint-tracking configuration for reasoning about unvalidated URL redirect vulnerabilities.
56+
*/
57+
private module UrlRedirectConfig implements DataFlow::ConfigSig {
58+
predicate isSource(DataFlow::Node source) { source instanceof Source }
59+
60+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
61+
62+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
63+
}
64+
65+
/**
66+
* A taint-tracking module for reasoning about unvalidated URL redirect vulnerabilities.
67+
*/
68+
module UrlRedirect = TaintTracking::Global<UrlRedirectConfig>;
69+
5270
/** A source of remote user input. */
5371
class RemoteSource extends Source instanceof RemoteFlowSource { }
5472

csharp/ql/src/Security Features/CWE-601/UrlRedirect.ql

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

1414
import csharp
1515
import semmle.code.csharp.security.dataflow.UrlRedirectQuery
16-
import semmle.code.csharp.dataflow.DataFlow::DataFlow::PathGraph
16+
import UrlRedirect::PathGraph
1717

18-
from TaintTrackingConfiguration c, DataFlow::PathNode source, DataFlow::PathNode sink
19-
where c.hasFlowPath(source, sink)
18+
from UrlRedirect::PathNode source, UrlRedirect::PathNode sink
19+
where UrlRedirect::flowPath(source, sink)
2020
select sink.getNode(), source, sink, "Untrusted URL redirection due to $@.", source.getNode(),
2121
"user-provided value"

0 commit comments

Comments
 (0)