@@ -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 `HTTParty`.
@@ -57,26 +56,21 @@ class HttpartyRequest extends Http::Client::Request::Range, DataFlow::CallNode {
5756 override predicate disablesCertificateValidation (
5857 DataFlow:: Node disablingNode , DataFlow:: Node argumentOrigin
5958 ) {
60- any ( HttpartyDisablesCertificateValidationConfiguration config )
61- .hasFlow ( argumentOrigin , disablingNode ) and
59+ HttpartyDisablesCertificateValidationFlow:: flow ( argumentOrigin , disablingNode ) and
6260 disablingNode = this .getCertificateValidationControllingValue ( )
6361 }
6462
6563 override string getFramework ( ) { result = "HTTParty" }
6664}
6765
6866/** A configuration to track values that can disable certificate validation for Httparty. */
69- private class HttpartyDisablesCertificateValidationConfiguration extends DataFlowImplForHttpClientLibraries:: Configuration
70- {
71- HttpartyDisablesCertificateValidationConfiguration ( ) {
72- this = "HttpartyDisablesCertificateValidationConfiguration"
73- }
74-
75- override predicate isSource ( DataFlow:: Node source ) {
76- source .asExpr ( ) .getExpr ( ) .( BooleanLiteral ) .isFalse ( )
77- }
67+ private module HttpartyDisablesCertificateValidationConfig implements DataFlow:: ConfigSig {
68+ predicate isSource ( DataFlow:: Node source ) { source .asExpr ( ) .getExpr ( ) .( BooleanLiteral ) .isFalse ( ) }
7869
79- override predicate isSink ( DataFlow:: Node sink ) {
70+ predicate isSink ( DataFlow:: Node sink ) {
8071 sink = any ( HttpartyRequest req ) .getCertificateValidationControllingValue ( )
8172 }
8273}
74+
75+ private module HttpartyDisablesCertificateValidationFlow =
76+ DataFlow:: Global< HttpartyDisablesCertificateValidationConfig > ;
0 commit comments