Ruby: Do not expose AST layer through ruby.qll

This commit is contained in:
Tom Hvitved
2022-09-12 11:16:39 +02:00
parent 2739b9cfd8
commit 007ab2b7ce
174 changed files with 174 additions and 174 deletions

View File

@@ -197,7 +197,7 @@ jobs:
- name: Prepare test files
shell: bash
run: |
echo "import ruby select count(File f)" > "test.ql"
echo "import codeql.ruby.AST select count(File f)" > "test.ql"
echo "| 4 |" > "test.expected"
echo 'name: sample-tests
version: 0.0.0

View File

@@ -11,7 +11,7 @@
* statement
*/
import ruby
import codeql.ruby.AST
from IfExpr i
where not exists(i.getThen().getAChild())

View File

@@ -9,4 +9,3 @@
* to model frameworks that are not covered by the standard library.
*/
import ruby

View File

@@ -17,6 +17,7 @@ private import ast.internal.AST
private import ast.internal.Scope
private import ast.internal.Synthesis
private import ast.internal.TreeSitter
private import Customizations
cached
private module Cached {

View File

@@ -6,7 +6,7 @@
* directed and labeled; they specify how the components represented by nodes relate to each other.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.typetracking.TypeTracker
private import codeql.ruby.ast.internal.Module

View File

@@ -1,5 +1,6 @@
/** Provides classes representing the control flow graph. */
import codeql.Locations
import controlflow.ControlFlowGraph
import controlflow.CfgNodes as CfgNodes
import controlflow.BasicBlocks

View File

@@ -2,6 +2,9 @@
* Provides classes for performing local (intra-procedural) and
* global (inter-procedural) data flow analyses.
*/
import codeql.Locations
module DataFlow {
import codeql.ruby.dataflow.internal.DataFlowImpl
}

View File

@@ -2,7 +2,7 @@
* Contains classes for recognizing array and string inclusion tests.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.controlflow.CfgNodes

View File

@@ -2,7 +2,7 @@
* Provides classes and predicates for reasoning about string-manipulating expressions.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.controlflow.CfgNodes
private import InclusionTests

View File

@@ -1,4 +1,3 @@
private import codeql.Locations
private import codeql.ruby.AST
private import internal.Erb
private import internal.TreeSitter

View File

@@ -1,4 +1,3 @@
private import codeql.Locations
private import codeql.ruby.AST
// Names of built-in modules and classes

View File

@@ -1,5 +1,4 @@
private import TreeSitter
private import codeql.Locations
private import codeql.ruby.AST
private import codeql.ruby.ast.internal.AST
private import codeql.ruby.ast.internal.Parameter

View File

@@ -1,6 +1,5 @@
/** Provides classes representing basic blocks. */
private import codeql.Locations
private import codeql.ruby.AST
private import codeql.ruby.ast.internal.AST
private import codeql.ruby.ast.internal.TreeSitter

View File

@@ -1,6 +1,5 @@
/** Provides classes representing the control flow graph. */
private import codeql.Locations
private import codeql.ruby.AST
private import codeql.ruby.controlflow.BasicBlocks
private import SuccessorTypes

View File

@@ -1,4 +1,4 @@
private import ruby as RB
private import codeql.ruby.AST as RB
private import ControlFlowGraphImpl as Impl
private import Completion as Comp
private import codeql.ruby.ast.internal.Synthesis

View File

@@ -1,6 +1,6 @@
/** Provides commonly used barriers to dataflow. */
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.CFG
private import codeql.ruby.controlflow.CfgNodes

View File

@@ -1,6 +1,6 @@
/** Provides classes and predicates for defining flow summaries. */
import ruby
import codeql.ruby.AST
import codeql.ruby.DataFlow
private import codeql.ruby.frameworks.data.ModelsAsData
private import codeql.ruby.ApiGraphs

View File

@@ -6,7 +6,6 @@
* Provides classes for working with static single assignment (SSA) form.
*/
module Ssa {
private import codeql.Locations
private import codeql.ruby.CFG
private import codeql.ruby.ast.Variable
private import internal.SsaImpl as SsaImpl

View File

@@ -1,4 +1,4 @@
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.CFG
private import DataFlowPrivate
private import codeql.ruby.typetracking.TypeTracker

View File

@@ -1,4 +1,4 @@
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.ast.internal.Synthesis
private import codeql.ruby.CFG
private import codeql.ruby.dataflow.SSA

View File

@@ -1,4 +1,4 @@
private import ruby
private import codeql.ruby.AST
private import DataFlowDispatch
private import DataFlowPrivate
private import codeql.ruby.CFG

View File

@@ -2,7 +2,7 @@
* Provides Ruby specific classes and predicates for defining flow summaries.
*/
private import ruby
private import codeql.ruby.AST
private import DataFlowDispatch
private import DataFlowPrivate
private import DataFlowPublic

View File

@@ -1,4 +1,4 @@
private import ruby
private import codeql.ruby.AST
private import DataFlowPrivate
private import TaintTrackingPublic
private import codeql.ruby.CFG

View File

@@ -1,4 +1,4 @@
private import ruby
private import codeql.ruby.AST
private import TaintTrackingPrivate
private import codeql.ruby.CFG
private import codeql.ruby.DataFlow

View File

@@ -1,6 +1,6 @@
/** Provides classes for detecting generated code. */
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.ast.internal.TreeSitter
/** A source file that contains generated code. */

View File

@@ -3,7 +3,7 @@
* https://rubygems.org/gems/actioncable
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs
private import codeql.ruby.frameworks.stdlib.Logger::Logger as StdlibLogger

View File

@@ -3,7 +3,7 @@
* Version: 6.0.0.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.Concepts
private import codeql.ruby.controlflow.CfgNodes
private import codeql.ruby.ast.internal.Module

View File

@@ -3,7 +3,7 @@
* https://rubygems.org/gems/activesupport
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.Concepts
private import codeql.ruby.DataFlow
private import codeql.ruby.dataflow.FlowSummary

View File

@@ -2,7 +2,7 @@
* Provides classes for working with archive libraries.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.Concepts
private import codeql.ruby.DataFlow
private import codeql.ruby.ApiGraphs

View File

@@ -2,7 +2,7 @@
* Provides classes for working with file system libraries.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs
private import codeql.ruby.DataFlow

View File

@@ -2,7 +2,6 @@
* Provides classes for working with Rails.
*/
private import codeql.files.FileSystem
private import codeql.ruby.AST
private import codeql.ruby.Concepts
private import codeql.ruby.DataFlow

View File

@@ -3,7 +3,7 @@
* https://rubygems.org/gems/railties
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs
private import codeql.ruby.DataFlow

View File

@@ -2,7 +2,7 @@
* Provides modeling for concepts shared across `File` and `IO`.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.ApiGraphs
private import codeql.ruby.frameworks.Files

View File

@@ -14,7 +14,7 @@
* - the name of a type definition from `ModelInput::TypeModelCsv`
*/
private import ruby
private import codeql.ruby.AST
private import internal.ApiGraphModels as Shared
private import internal.ApiGraphModelsSpecific as Specific
import Shared::ModelInput as ModelInput

View File

@@ -19,7 +19,7 @@
* ```
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.dataflow.internal.DataFlowPrivate as DataFlowPrivate
private import ApiGraphModels

View File

@@ -2,7 +2,7 @@
* Provides modeling for the `Excon` library.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.CFG
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs

View File

@@ -2,7 +2,7 @@
* Provides modeling for the `Faraday` library.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.CFG
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs

View File

@@ -2,7 +2,7 @@
* Provides modeling for the `HTTPClient` library.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs
private import codeql.ruby.DataFlow

View File

@@ -2,7 +2,7 @@
* Provides modeling for the `HTTParty` library.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.CFG
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs

View File

@@ -2,7 +2,7 @@
* Provides modeling for the `OpenURI` library.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.CFG
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs

View File

@@ -2,7 +2,7 @@
* Provides modeling for the `RestClient` library.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.CFG
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs

View File

@@ -2,7 +2,7 @@
* Provides modeling for the `Typhoeus` library.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.CFG
private import codeql.ruby.Concepts
private import codeql.ruby.ApiGraphs

View File

@@ -4,7 +4,7 @@
* adding your own.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.Concepts
private import internal.CleartextSources

View File

@@ -6,7 +6,7 @@
* `CleartextLoggingCustomizations` should be imported instead.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.TaintTracking
import CleartextLoggingCustomizations::CleartextLogging

View File

@@ -4,7 +4,7 @@
* adding your own.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.Concepts
private import internal.CleartextSources

View File

@@ -6,7 +6,7 @@
* imported instead.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.TaintTracking
private import CleartextStorageCustomizations::CleartextStorage as CleartextStorage

View File

@@ -1,4 +1,4 @@
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.Concepts
private import codeql.ruby.Frameworks

View File

@@ -7,7 +7,7 @@
* `CommandInjectionCustomizations` should be imported instead.
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.TaintTracking
import CommandInjectionCustomizations::CommandInjection
import codeql.ruby.DataFlow

View File

@@ -2,7 +2,7 @@
* Provides imports and classes needed for `HttpToFileAccessQuery` and `HttpToFileAccessCustomizations`.
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.dataflow.RemoteFlowSources
import codeql.ruby.Concepts

View File

@@ -2,7 +2,7 @@
* Provides predicates for reasoning about improper memoization methods.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.dataflow.internal.DataFlowDispatch

View File

@@ -2,7 +2,7 @@
* Provides predicates for reasoning about insecure dependency configurations.
*/
private import ruby
private import codeql.ruby.AST
/**
* A method call in a Gemfile.

View File

@@ -4,7 +4,7 @@
* extension points for adding your own.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.Concepts
private import codeql.ruby.typetracking.TypeTracker

View File

@@ -6,7 +6,7 @@
* `InsecureDownloadCustomizations` should be imported instead.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
import InsecureDownloadCustomizations::InsecureDownload

View File

@@ -2,7 +2,7 @@
* Provides a taint-tracking configuration for reasoning about untrusted user input used in log entries.
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.Concepts
import codeql.ruby.DataFlow
import codeql.ruby.TaintTracking

View File

@@ -4,7 +4,7 @@
* adding your own.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.ApiGraphs
private import codeql.ruby.CFG
private import codeql.ruby.Concepts

View File

@@ -6,7 +6,7 @@
* `XSS::ReflectedXSS` should be imported instead.
*/
private import ruby
private import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.TaintTracking

View File

@@ -3,7 +3,7 @@
* server side request forgery, as well as extension points for adding your own.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.ApiGraphs
private import codeql.ruby.CFG
private import codeql.ruby.DataFlow

View File

@@ -7,7 +7,7 @@
* `XSS::StoredXSS` should be imported instead.
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.TaintTracking

View File

@@ -2,7 +2,7 @@
* Provides Ruby-specific imports and classes needed for `TaintedFormatStringQuery` and `TaintedFormatStringCustomizations`.
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.dataflow.RemoteFlowSources
import codeql.ruby.ApiGraphs

View File

@@ -3,7 +3,7 @@
* deserialization, as well as extension points for adding your own.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.ApiGraphs
private import codeql.ruby.CFG
private import codeql.ruby.DataFlow

View File

@@ -6,7 +6,7 @@
* `UnsafeDeserializationCustomizations` should be imported instead.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.TaintTracking
import UnsafeDeserializationCustomizations

View File

@@ -4,7 +4,7 @@
* own.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.Concepts
private import codeql.ruby.dataflow.RemoteFlowSources

View File

@@ -5,7 +5,7 @@
* otherwise `UrlRedirectCustomizations` should be imported instead.
*/
private import ruby
private import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.TaintTracking
import UrlRedirectCustomizations

View File

@@ -2,7 +2,7 @@
* Provides classes and predicates used by the XSS queries.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.DataFlow2
private import codeql.ruby.CFG

View File

@@ -4,7 +4,7 @@
* your own sources and sanitizers.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.TaintTracking::TaintTracking
private import codeql.ruby.dataflow.RemoteFlowSources

View File

@@ -3,7 +3,7 @@
* injection vulnerabilities, as well as extension points for adding your own.
*/
private import ruby
private import codeql.ruby.AST
private import codeql.ruby.DataFlow
private import codeql.ruby.Concepts
private import codeql.ruby.Frameworks

View File

@@ -1,6 +1,9 @@
/**
* Provides classes for working with Ruby programs.
* Kept for backwards compatibility with e.g. quick-queries.
*
* Instead, import the relevant abstraction layer:
* - `codeql.ruby.DataFlow` for data-flow queries.
* - `codeql.ruby.CFG` for control-flow queries.
* - `codeql.ruby.AST` for syntactic queries.
*/
private import Customizations
import codeql.ruby.AST

View File

@@ -5,7 +5,7 @@
* @id rb/alert-suppression
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.ast.internal.TreeSitter
/**

View File

@@ -11,7 +11,7 @@
* external/cwe/cwe-290
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.dataflow.internal.DataFlowPublic
import codeql.ruby.security.ConditionalBypassQuery

View File

@@ -9,7 +9,7 @@
* @tags security external/cwe/cwe-409
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.ApiGraphs
import codeql.ruby.DataFlow
import codeql.ruby.dataflow.RemoteFlowSources

View File

@@ -8,7 +8,7 @@
* @id rb/improper-memoization
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.ImproperMemoizationQuery
from Method m, Parameter p, AssignLogicalOrExpr s

View File

@@ -9,7 +9,7 @@
* @tags security
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.controlflow.CfgNodes
import codeql.ruby.frameworks.ActionController

View File

@@ -10,7 +10,7 @@
// This is an implementation of the Rubocop rule
// https://github.com/rubocop/rubocop-performance/blob/master/lib/rubocop/cop/performance/detect.rb
import ruby
import codeql.ruby.AST
import codeql.ruby.dataflow.SSA
/** A call that extracts the first or last element of a list. */

View File

@@ -9,7 +9,7 @@
* @tags security
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.Concepts
import codeql.ruby.DataFlow
import codeql.ruby.TaintTracking

View File

@@ -8,7 +8,7 @@
* @id rb/file-classifier
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.filters.GeneratedCode
predicate classify(File f, string category) {

View File

@@ -10,7 +10,7 @@
* - should `Foo.new` point to `Foo#initialize`?
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.ast.internal.Module
import codeql.ruby.dataflow.SSA

View File

@@ -5,7 +5,7 @@
* @id rb/diagnostics/extraction-errors
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.Diagnostics
/** Gets the SARIF severity to associate an error. */

View File

@@ -6,7 +6,7 @@
* @id rb/diagnostics/successfully-extracted-files
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.Diagnostics
from File f

View File

@@ -6,7 +6,7 @@
* @id rb/lines-per-file
*/
import ruby
import codeql.ruby.AST
from RubyFile f, int n
where n = f.getNumberOfLines()

View File

@@ -7,7 +7,7 @@
* @id rb/lines-of-code-in-files
*/
import ruby
import codeql.ruby.AST
from RubyFile f, int n
where n = f.getNumberOfLinesOfCode()

View File

@@ -6,7 +6,7 @@
* @id rb/lines-of-comments-in-files
*/
import ruby
import codeql.ruby.AST
from RubyFile f, int n
where n = f.getNumberOfLinesOfComments()

View File

@@ -15,7 +15,7 @@
* external/cwe/cwe-099
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.PathInjectionQuery
import codeql.ruby.DataFlow
import DataFlow::PathGraph

View File

@@ -13,7 +13,7 @@
* external/cwe/cwe-088
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.CommandInjectionQuery
import DataFlow::PathGraph

View File

@@ -14,7 +14,7 @@
* external/cwe/cwe-073
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.ApiGraphs
import codeql.ruby.frameworks.core.Kernel::Kernel
import codeql.ruby.TaintTracking

View File

@@ -13,7 +13,7 @@
* external/cwe/cwe-116
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.ReflectedXSSQuery
import DataFlow::PathGraph

View File

@@ -12,7 +12,7 @@
* external/cwe/cwe-116
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.StoredXSSQuery
import DataFlow::PathGraph

View File

@@ -11,7 +11,7 @@
* external/cwe/cwe-089
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.Concepts
import codeql.ruby.DataFlow
import codeql.ruby.dataflow.BarrierGuards

View File

@@ -14,7 +14,7 @@
* external/cwe/cwe-116
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.CodeInjectionQuery
import DataFlow::PathGraph

View File

@@ -14,7 +14,7 @@
* external/cwe/cwe-116
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.controlflow.CfgNodes
import codeql.ruby.frameworks.core.String

View File

@@ -11,7 +11,7 @@
* external/cwe/cwe-117
*/
import ruby
import codeql.ruby.AST
import DataFlow::PathGraph
import codeql.ruby.security.LogInjectionQuery

View File

@@ -15,7 +15,7 @@
* external/cwe/cwe-400
*/
import ruby
import codeql.ruby.AST
import DataFlow::PathGraph
import codeql.ruby.DataFlow
import codeql.ruby.security.regexp.RegExpInjectionQuery

View File

@@ -10,7 +10,7 @@
* external/cwe/cwe-134
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.security.TaintedFormatStringQuery
import DataFlow::PathGraph

View File

@@ -11,7 +11,7 @@
* external/cwe/cwe-295
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.Concepts
import codeql.ruby.DataFlow

View File

@@ -14,7 +14,7 @@
* external/cwe/cwe-829
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.InsecureDependencyQuery
from Expr url, string msg

View File

@@ -13,7 +13,7 @@
* external/cwe/cwe-532
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.CleartextLoggingQuery
import codeql.ruby.DataFlow
import DataFlow::PathGraph

View File

@@ -13,7 +13,7 @@
* external/cwe/cwe-532
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.CleartextStorageQuery
import codeql.ruby.security.CleartextStorageCustomizations::CleartextStorage
import codeql.ruby.DataFlow

View File

@@ -10,7 +10,7 @@
* external/cwe/cwe-327
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.Concepts
from Cryptography::CryptographicOperation operation, string msgPrefix

View File

@@ -11,7 +11,7 @@
* external/cwe/cwe-352
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.Concepts
from CsrfProtectionSetting s

View File

@@ -11,7 +11,7 @@
* external/cwe/cwe-502
*/
import ruby
import codeql.ruby.AST
import DataFlow::PathGraph
import codeql.ruby.DataFlow
import codeql.ruby.security.UnsafeDeserializationQuery

View File

@@ -12,7 +12,7 @@
* @precision high
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.security.UrlRedirectQuery
import codeql.ruby.DataFlow::DataFlow::PathGraph

Some files were not shown because too many files have changed in this diff Show More