@@ -24,9 +24,11 @@ module RequestForgery {
24
24
abstract private class Barrier extends DataFlow:: Node { }
25
25
26
26
/**
27
+ * DEPRECATED: Use `RequestForgeryFlow` instead.
28
+ *
27
29
* A data flow configuration for detecting server side request forgery vulnerabilities.
28
30
*/
29
- class RequestForgeryConfiguration extends DataFlow:: Configuration {
31
+ deprecated class RequestForgeryConfiguration extends DataFlow:: Configuration {
30
32
RequestForgeryConfiguration ( ) { this = "Server Side Request forgery" }
31
33
32
34
override predicate isSource ( DataFlow:: Node source ) { source instanceof Source }
@@ -54,6 +56,40 @@ module RequestForgery {
54
56
override predicate isBarrier ( DataFlow:: Node node ) { node instanceof Barrier }
55
57
}
56
58
59
+ /**
60
+ * A data flow configuration for detecting server side request forgery vulnerabilities.
61
+ */
62
+ private module RequestForgeryFlowConfig implements DataFlow:: ConfigSig {
63
+ predicate isSource ( DataFlow:: Node source ) { source instanceof Source }
64
+
65
+ predicate isSink ( DataFlow:: Node sink ) { sink instanceof Sink }
66
+
67
+ predicate isAdditionalFlowStep ( DataFlow:: Node prev , DataFlow:: Node succ ) {
68
+ interpolatedStringFlowStep ( prev , succ )
69
+ or
70
+ stringReplaceStep ( prev , succ )
71
+ or
72
+ uriCreationStep ( prev , succ )
73
+ or
74
+ formatConvertStep ( prev , succ )
75
+ or
76
+ toStringStep ( prev , succ )
77
+ or
78
+ stringConcatStep ( prev , succ )
79
+ or
80
+ stringFormatStep ( prev , succ )
81
+ or
82
+ pathCombineStep ( prev , succ )
83
+ }
84
+
85
+ predicate isBarrier ( DataFlow:: Node node ) { node instanceof Barrier }
86
+ }
87
+
88
+ /**
89
+ * A data flow module for detecting server side request forgery vulnerabilities.
90
+ */
91
+ module RequestForgeryFlow = DataFlow:: Global< RequestForgeryFlowConfig > ;
92
+
57
93
/**
58
94
* A remote data flow source taken as a source
59
95
* for Server Side Request Forgery(SSRF) Vulnerabilities.
0 commit comments