Skip to content

Commit 8d17a45

Browse files
committed
C#: Re-factor MissingXmlValidation to use the new API.
1 parent 8e3bfda commit 8d17a45

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

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

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ abstract class Sink extends DataFlow::ExprNode {
2929
abstract class Sanitizer extends DataFlow::ExprNode { }
3030

3131
/**
32+
* DEPRECATED: Use `MissingXxmlValidation` instead.
33+
*
3234
* A taint-tracking configuration for untrusted user input processed as XML without validation against a
3335
* known schema.
3436
*/
35-
class TaintTrackingConfiguration extends TaintTracking::Configuration {
37+
deprecated class TaintTrackingConfiguration extends TaintTracking::Configuration {
3638
TaintTrackingConfiguration() { this = "MissingXMLValidation" }
3739

3840
override predicate isSource(DataFlow::Node source) { source instanceof Source }
@@ -42,6 +44,24 @@ class TaintTrackingConfiguration extends TaintTracking::Configuration {
4244
override predicate isSanitizer(DataFlow::Node node) { node instanceof Sanitizer }
4345
}
4446

47+
/**
48+
* A taint-tracking configuration for untrusted user input processed as XML without validation against a
49+
* known schema.
50+
*/
51+
private module MissingXmlValidationConfig implements DataFlow::ConfigSig {
52+
predicate isSource(DataFlow::Node source) { source instanceof Source }
53+
54+
predicate isSink(DataFlow::Node sink) { sink instanceof Sink }
55+
56+
predicate isBarrier(DataFlow::Node node) { node instanceof Sanitizer }
57+
}
58+
59+
/**
60+
* A taint-tracking module for untrusted user input processed as XML without validation against a
61+
* known schema.
62+
*/
63+
module MissingXmlValidation = TaintTracking::Global<MissingXmlValidationConfig>;
64+
4565
/** A source of remote user input. */
4666
class RemoteSource extends Source instanceof RemoteFlowSource { }
4767

csharp/ql/src/Security Features/CWE-112/MissingXMLValidation.ql

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

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

18-
from TaintTrackingConfiguration c, DataFlow::PathNode source, DataFlow::PathNode sink
19-
where c.hasFlowPath(source, sink)
18+
from MissingXmlValidation::PathNode source, MissingXmlValidation::PathNode sink
19+
where MissingXmlValidation::flowPath(source, sink)
2020
select sink.getNode(), source, sink,
2121
"This XML processing depends on a $@ without validation because " +
2222
sink.getNode().(Sink).getReason(), source.getNode(), "user-provided value"

0 commit comments

Comments
 (0)