@@ -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 `Typhoeus`.
@@ -38,26 +37,21 @@ class TyphoeusHttpRequest extends Http::Client::Request::Range, DataFlow::CallNo
3837 override predicate disablesCertificateValidation (
3938 DataFlow:: Node disablingNode , DataFlow:: Node argumentOrigin
4039 ) {
41- any ( TyphoeusDisablesCertificateValidationConfiguration config )
42- .hasFlow ( argumentOrigin , disablingNode ) and
40+ TyphoeusDisablesCertificateValidationFlow:: flow ( argumentOrigin , disablingNode ) and
4341 disablingNode = this .getCertificateValidationControllingValue ( )
4442 }
4543
4644 override string getFramework ( ) { result = "Typhoeus" }
4745}
4846
4947/** A configuration to track values that can disable certificate validation for Typhoeus. */
50- private class TyphoeusDisablesCertificateValidationConfiguration extends DataFlowImplForHttpClientLibraries:: Configuration
51- {
52- TyphoeusDisablesCertificateValidationConfiguration ( ) {
53- this = "TyphoeusDisablesCertificateValidationConfiguration"
54- }
55-
56- override predicate isSource ( DataFlow:: Node source ) {
57- source .asExpr ( ) .getExpr ( ) .( BooleanLiteral ) .isFalse ( )
58- }
48+ private module TyphoeusDisablesCertificateValidationConfig implements DataFlow:: ConfigSig {
49+ predicate isSource ( DataFlow:: Node source ) { source .asExpr ( ) .getExpr ( ) .( BooleanLiteral ) .isFalse ( ) }
5950
60- override predicate isSink ( DataFlow:: Node sink ) {
51+ predicate isSink ( DataFlow:: Node sink ) {
6152 sink = any ( TyphoeusHttpRequest req ) .getCertificateValidationControllingValue ( )
6253 }
6354}
55+
56+ private module TyphoeusDisablesCertificateValidationFlow =
57+ DataFlow:: Global< TyphoeusDisablesCertificateValidationConfig > ;
0 commit comments