@@ -24,9 +24,11 @@ module RequestForgery {
2424 abstract private class Barrier extends DataFlow:: Node { }
2525
2626 /**
27+ * DEPRECATED: Use `RequestForgeryFlow` instead.
28+ *
2729 * A data flow configuration for detecting server side request forgery vulnerabilities.
2830 */
29- class RequestForgeryConfiguration extends DataFlow:: Configuration {
31+ deprecated class RequestForgeryConfiguration extends DataFlow:: Configuration {
3032 RequestForgeryConfiguration ( ) { this = "Server Side Request forgery" }
3133
3234 override predicate isSource ( DataFlow:: Node source ) { source instanceof Source }
@@ -54,6 +56,40 @@ module RequestForgery {
5456 override predicate isBarrier ( DataFlow:: Node node ) { node instanceof Barrier }
5557 }
5658
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+
5793 /**
5894 * A remote data flow source taken as a source
5995 * for Server Side Request Forgery(SSRF) Vulnerabilities.
0 commit comments