Skip to content

Commit 60a0917

Browse files
committed
C#: Re-factor ResourceInjection to use the new API.
1 parent 80e8b69 commit 60a0917

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

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

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

2626
/**
27+
* DEPRECATED: Use `ResourceInjection` instead.
28+
*
2729
* A taint-tracking configuration for untrusted user input used in resource descriptors.
2830
*/
29-
class TaintTrackingConfiguration extends TaintTracking::Configuration {
31+
deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration {
3032
TaintTrackingConfiguration() { this = "ResourceInjection" }
3133

3234
override predicate isSource(DataFlow::Node source) { source instanceof Source }
@@ -36,6 +38,22 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration {
3638
override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer }
3739
}
3840

41+
/**
42+
* A taint-tracking configuration for untrusted user input used in resource descriptors.
43+
*/
44+
private module ResourceInjectionConfig implements DataFlow::ConfigSig {
45+
predicate isSource(DataFlow::Node source) { source instanceof Source }
46+
47+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
48+
49+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
50+
}
51+
52+
/**
53+
* A taint-tracking module for untrusted user input used in resource descriptors.
54+
*/
55+
module ResourceInjection = TaintTracking::Global<ResourceInjectionConfig>;
56+
3957
/** A source of remote user input. */
4058
class RemoteSource extends Source instanceof RemoteFlowSource { }
4159

csharp/ql/src/Security Features/CWE-099/ResourceInjection.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.ResourceInjectionQuery
16-
import semmle.code.csharp.dataflow.DataFlow::DataFlow::PathGraph
16+
import ResourceInjection::PathGraph
1717

18-
from TaintTrackingConfiguration c, DataFlow::PathNode source, DataFlow::PathNode sink
19-
where c.hasFlowPath(source, sink)
18+
from ResourceInjection::PathNode source, ResourceInjection::PathNode sink
19+
where ResourceInjection::flowPath(source, sink)
2020
select sink.getNode(), source, sink, "This resource descriptor depends on a $@.", source.getNode(),
2121
"user-provided value"

0 commit comments

Comments
 (0)