- Flow through
initialize
constructors is now taken into account. For example, inthere will be flow fromclass C def initialize(x) @field = x end end C.new(y)
y
to the field@field
on the constructedC
object.
- Calls to
Kernel.load
,Kernel.require
,Kernel.autoload
are now modeled as sinks for path injection. - Calls to
mail
andinbound_mail
inActionMailbox
controllers are now considered sources of remote input. - Calls to
GlobalID::Locator.locate
and its variants are now recognized as instances ofOrmInstantiation
. - Data flow through the
ActiveSupport
extensionsEnumerable#index_with
,Enumerable#pick
,Enumerable#pluck
andEnumerable#sole
are now modeled. - When resolving a method call, the analysis now also searches in sub-classes of the receiver's type.
- Taint flow is now tracked through many common JSON parsing and generation methods.
- The ReDoS libraries in
codeql.ruby.security.regexp
has been moved to a shared pack inside theshared/
folder, and the previous location has been deprecated. - String literals and arrays of string literals in case expression patterns are now recognised as barrier guards.