@@ -12,23 +12,48 @@ import UrlConcatenation
1212import RequestForgeryCustomizations:: RequestForgery
1313
1414/**
15- * A taint tracking configuration for request forgery.
15+ * A taint tracking configuration for server-side request forgery.
1616 */
17- class Configuration extends TaintTracking:: Configuration {
17+ module RequestForgeryConfig implements DataFlow:: ConfigSig {
18+ predicate isSource ( DataFlow:: Node source ) { source .( Source ) .isServerSide ( ) }
19+
20+ predicate isSink ( DataFlow:: Node sink ) { sink instanceof Sink }
21+
22+ predicate isBarrier ( DataFlow:: Node node ) { node instanceof Sanitizer }
23+
24+ predicate isBarrierOut ( DataFlow:: Node node ) { sanitizingPrefixEdge ( node , _) }
25+
26+ predicate isAdditionalFlowStep ( DataFlow:: Node pred , DataFlow:: Node succ ) {
27+ isAdditionalRequestForgeryStep ( pred , succ )
28+ }
29+ }
30+
31+ /**
32+ * Taint tracking for server-side request forgery.
33+ */
34+ module RequestForgeryFlow = TaintTracking:: Global< RequestForgeryConfig > ;
35+
36+ /**
37+ * DEPRECATED. Use the `RequestForgeryFlow` module instead.
38+ */
39+ deprecated class Configuration extends TaintTracking:: Configuration {
1840 Configuration ( ) { this = "RequestForgery" }
1941
20- override predicate isSource ( DataFlow:: Node source ) { source . ( Source ) . isServerSide ( ) }
42+ override predicate isSource ( DataFlow:: Node source ) { RequestForgeryConfig :: isSource ( source ) }
2143
22- override predicate isSink ( DataFlow:: Node sink ) { sink instanceof Sink }
44+ override predicate isSink ( DataFlow:: Node sink ) { RequestForgeryConfig :: isSink ( sink ) }
2345
2446 override predicate isSanitizer ( DataFlow:: Node node ) {
25- super .isSanitizer ( node ) or
47+ super .isSanitizer ( node )
48+ or
2649 node instanceof Sanitizer
2750 }
2851
29- override predicate isSanitizerOut ( DataFlow:: Node node ) { sanitizingPrefixEdge ( node , _) }
52+ override predicate isSanitizerOut ( DataFlow:: Node node ) {
53+ RequestForgeryConfig:: isBarrierOut ( node )
54+ }
3055
3156 override predicate isAdditionalTaintStep ( DataFlow:: Node pred , DataFlow:: Node succ ) {
32- isAdditionalRequestForgeryStep ( pred , succ )
57+ RequestForgeryConfig :: isAdditionalFlowStep ( pred , succ )
3358 }
3459}
0 commit comments