@@ -7,7 +7,6 @@ private import codeql.ruby.CFG
7
7
private import codeql.ruby.Concepts
8
8
private import codeql.ruby.ApiGraphs
9
9
private import codeql.ruby.DataFlow
10
- private import codeql.ruby.dataflow.internal.DataFlowImplForHttpClientLibraries as DataFlowImplForHttpClientLibraries
11
10
12
11
/**
13
12
* A call that makes an HTTP request using `RestClient`.
@@ -58,26 +57,23 @@ class RestClientHttpRequest extends Http::Client::Request::Range, DataFlow::Call
58
57
override predicate disablesCertificateValidation (
59
58
DataFlow:: Node disablingNode , DataFlow:: Node argumentOrigin
60
59
) {
61
- any ( RestClientDisablesCertificateValidationConfiguration config )
62
- .hasFlow ( argumentOrigin , disablingNode ) and
60
+ RestClientDisablesCertificateValidationFlow:: flow ( argumentOrigin , disablingNode ) and
63
61
disablingNode = this .getCertificateValidationControllingValue ( )
64
62
}
65
63
66
64
override string getFramework ( ) { result = "RestClient" }
67
65
}
68
66
69
67
/** A configuration to track values that can disable certificate validation for RestClient. */
70
- private class RestClientDisablesCertificateValidationConfiguration extends DataFlowImplForHttpClientLibraries:: Configuration
71
- {
72
- RestClientDisablesCertificateValidationConfiguration ( ) {
73
- this = "RestClientDisablesCertificateValidationConfiguration"
74
- }
75
-
76
- override predicate isSource ( DataFlow:: Node source ) {
68
+ private module RestClientDisablesCertificateValidationConfig implements DataFlow:: ConfigSig {
69
+ predicate isSource ( DataFlow:: Node source ) {
77
70
source = API:: getTopLevelMember ( "OpenSSL" ) .getMember ( "SSL" ) .getMember ( "VERIFY_NONE" ) .asSource ( )
78
71
}
79
72
80
- override predicate isSink ( DataFlow:: Node sink ) {
73
+ predicate isSink ( DataFlow:: Node sink ) {
81
74
sink = any ( RestClientHttpRequest req ) .getCertificateValidationControllingValue ( )
82
75
}
83
76
}
77
+
78
+ private module RestClientDisablesCertificateValidationFlow =
79
+ DataFlow:: Global< RestClientDisablesCertificateValidationConfig > ;
0 commit comments