@@ -7,7 +7,6 @@ private import codeql.ruby.CFG
77private import codeql.ruby.Concepts
88private import codeql.ruby.ApiGraphs
99private import codeql.ruby.DataFlow
10- private import codeql.ruby.dataflow.internal.DataFlowImplForHttpClientLibraries as DataFlowImplForHttpClientLibraries
1110
1211/**
1312 * A call that makes an HTTP request using `RestClient`.
@@ -58,26 +57,23 @@ class RestClientHttpRequest extends Http::Client::Request::Range, DataFlow::Call
5857 override predicate disablesCertificateValidation (
5958 DataFlow:: Node disablingNode , DataFlow:: Node argumentOrigin
6059 ) {
61- any ( RestClientDisablesCertificateValidationConfiguration config )
62- .hasFlow ( argumentOrigin , disablingNode ) and
60+ RestClientDisablesCertificateValidationFlow:: flow ( argumentOrigin , disablingNode ) and
6361 disablingNode = this .getCertificateValidationControllingValue ( )
6462 }
6563
6664 override string getFramework ( ) { result = "RestClient" }
6765}
6866
6967/** 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 ) {
7770 source = API:: getTopLevelMember ( "OpenSSL" ) .getMember ( "SSL" ) .getMember ( "VERIFY_NONE" ) .asSource ( )
7871 }
7972
80- override predicate isSink ( DataFlow:: Node sink ) {
73+ predicate isSink ( DataFlow:: Node sink ) {
8174 sink = any ( RestClientHttpRequest req ) .getCertificateValidationControllingValue ( )
8275 }
8376}
77+
78+ private module RestClientDisablesCertificateValidationFlow =
79+ DataFlow:: Global< RestClientDisablesCertificateValidationConfig > ;
0 commit comments