CHANGES.md
--ensure-latestpolymorphic_name SQLi false positive (Fredrico Franco)--ensure-latest--skip-libs removed--index-libs removedruby_parser to remove version restriction (Chedli Bourguiba)count callswith_content on ViewComponents (Peer Allan)or SQL argumentsFilePath#to_path for Ruby 3.5 compatibility (S-H-GAMELINKS)td in HTML report (John Hawthorn)--ensure-no-obsolete-ignore-entries option (viralpraxis)BUNDLE_GEMFILE env variablerb extension (viralpraxis)terminal-table 4.0 (Chedli Bourguiba)--debugoriginalBaseUriIds for SARIF format report--no-prism)terminal-table version to use latesteval check to be a little noisierpipeline* callsJust a packaging fix for brakeman.gem
--show-ignored option (Gabriel Zayas)find_by!::X and X the same, for now (Jill Klang)ViewComponentContrib::Base as dynamic render paths (vividmuimui)Kernel#open("|...")safe_yaml gem dependency--timing to add timing duration for scan stepsclass << selfPG::Connection.escape_string as a SQL sanitization method (Joévin Soulenq)load_defaults versionpubliccontent_tag in newer Railsredirect_back and redirect_back_or_to to open redirect checkurl_from being marked as unsafe (Lachlan Sylvester)find_by(id: ...)presence, presence_in and in?if expressions in when clausesload_rails_defaults overwriting settings in the Rails application (James Gregory-Monk)ruby_parser for Ruby 3.1 support (Merek Skubela)nil when joining values (Dan Buettner)if conditionsfoo.root in routesI18n.locale in SQL queriessanitize_sql_like as safeBrakeman::FilePathHash#include?--sql-safe-methods option (Esty Scheiner)Open3.capture (Richard Fitzgerald)cookie?/param? methods (Keenan Brock)Array#pushArray#join support--interactive menu (Elia Schito)Array#*Hash#values and Hash#values_atArray#fetch and Hash#fetchsanitize_sql_like in SQL(brakeman gem release only)
ruby_parser to include argument forwarding support::Rails.application.configure tooslim/smartuuid as a safe attribute__send__ callsTempfile#path in shell commandsload_defaults version--force if no Rails application is detected--[no-]skip-vendor optionSexp#sexp_body instead of Sexp#[..] (Ruby 3.0 compatibility)--force if no Rails application is detected--[no-]skip-vendor optionchomped strings for SQL injectionactive_record for non-Rails apps (Ulysse Buonomo)attr_accessible if protected_attributes gem is usedsafe_yaml is used via YAML.load(..., safe: true)ERB.new (Matt Hickman)--ensure-ignore-notes (Eli Block)params.permit!.sliceparams.permit! in path helpersDir.glob as safe source of values in guardsenvironment.rbauthenticate_or_request_with_http_basic check for passed blocks (Hugo Corbucci)--text-fields optionString#strip or String.squishCheckExecute (Jacob Evelyn)nil (Carsten Wirth)named_scope vs. scopeString#strip_heredoc targetpermit! casesrequest.params as query parametersSymbol#to_s in Ruby 2.7:_blank symbol (Jacob Evelyn)s(:lambda) to s(:call) in Sexp#block_callBrakeman::Differ#second_pass (Benoit Côté-Jodoin)%W[]version_between? (Andrey Glushkov)ruby_parser 3.14.0form_for for XSS check-c shell commands (Jacob Evelyn)CheckCookieSerialization (Phil Turnbull)dupActiveStorage::Filename#sanitized (Tejas Bubane)Warning#relative_pathnil line numbers to SexpsBrakeman::FilePath to represent file paths__FILE__!! calls to boolean valueconfig.force_ssllink_to with block for href XSSfind_or_create_by and friendsOj.load/object_loaddestroy_by/delete_byruby_parser, use ruby_parser-legacyShellwords escapingFileParser in Scanner to parse filesTracker#errors listCheckContentTagAliasProcessor** inside Hash literals--enable option to enable optional checksif not like unlesssecrets.yml files (Naoki Kimura)rel="noreferrer" in HTML reportsString#shellescape and Shellwords.shelljoin are used (George Ogata)Object#freeze, use the target insteadforeign_key calls in SQLincluded calls outside of classes/modules:BRAKEMAN_SAFE_LITERAL to represent known-safe literalsArray#map and Array#each over literal arrayssymbolize_keys to be called on params in SQL (Jacob Evelyn)Array#join to string interpolationBaseCheck#include_interp? should return first string interpolation--parser-timeout optionlink_to href with sanitize()params#to_h and params#to_hash in SQL checksProcess.pid in system callsonly_files (Todd Mazierski)--color can be used to force color outputapp/jobs/ directorytemplate_exists? in controllersModel#attributes_pathShellwords.escapeinitialize in librariesSexp#body= can accept :rlist from Sexp#body_listnotlib/ (kru0096)String#<< method for Ruby 2.5 (Pocke)permit with *_id keysArel.sqlinclude_paths for Code Climate engine (Will Fleming)permitless pagerapp_path configuration for Code Climate engine (Noah Davis)CI environment variable is setrequest.cookies like cookiesfail/raise like early returnsCONFIDENCE constant in checkslink_toreturnif expressions in HAML rendering--rake option.html or .jsto_s in exists?if expressions when finding return valuesif--compare (Sean Gransee)case expressions--exit-on-error (Michael Grosser)-t None-x or -t.html as HTML anyway--ensure-latest option (tamgrosser / Michael Grosser)--no-summary to hide summaries in HTML/text reportsincluded block in concernsActionController::Base (Jason Yeo).ruby-version or Gemfilewhere_values_hash in SQLiplain report format-I--no-exit-warncontent_tag with CVE-2016-6316quoted_primary_key&. operationsvalidates_format_of (Dmitrij Fedorenko)if branches in templates--force-scan option (Neil Matatall)Rails.env.test?4 if no Rails application is detectedparams.sliceu helper (Chad Dollins)Array#firstprotect_from_forgery (Jason Yeo)popen with arrayfind_and_preserve with a blockmulti_json dependency from bin/brakeman&. operatorfastercsv dependencytargets: nilmulti_json dependencyrender params (CVE-2016-0752)strip_tags XSS (CVE-2015-7579)sanitize XSS (CVE-2015-7578/80)reject_if proc bypass (CVE-2015-7577)permit in SQLdetectexit_on_warn in config filewithout_protection: true with hash literalscurrent_user like a modelprivate def ...<%== as unescaped outputruby_parser dependency to 3.7.0opento_s in SQLapp/ (Neal Harris)--add-libs-path for additional libraries (Patrick Toomey)(local var)--exit-on-warn --compare only returns error code on new warnings (Jeff Yip)<%== in ERBx = x.ylib/ files--separate-models to be the defaultexists arel method from SQL injection check--add-checks-path option for external checks (Clint Gibler)-4 option to force Rails 4 modesend:host setting in redirects with chained callsfind_by/find_by! to SQLi check for Rails 4+=protected_attributes gem in Rails 4 (Geoffrey Hichborn)before_actions and friendsCheckSQLCVEsNo changes. 2.4.2 gem release was unsigned, 2.4.3 is signed.
rescue Exceptiondelete_all/destroy_allconnectionModel#create for redirectsto_json XSS in Rails 4-z if all warnings ignored--branch-limit option, limit to 5 by default--only-files option to specify files/paths to scan (Ian Ehlert)--absolute-paths replaces --relative-pathsController like controllers-> lambdas with no arguments--separate-models (Noah Davis)Model#idparams.to_jsonslice/only.gitignorebefore_filter outside controllerSexp hash cache invalidationquiet option in configuration fileif expressions to or--compare to work with older versionssend on user inputstrong_parametersprepend/append_before_filterproduction.rblink_to (Neil Matatall)YAML.loadstrong_parametersvalidates :format callCheckExecute to warn on all string interpolationto_sql callsCallIndexmulti_json gem for better harmonyGemfile.lockredirect_toModel.arel_table accessesYAML.loadto_i outputSexp#method_missing-q flag for "Rails 3 detected" message--compare (fsword)--rake option (Deepak Kumar)to_json XSS (Neil Matatall)redirect_to false negativeraw callscontent_tagor expressions as immediate valuesparams[:x] ||= is handledor expressions as immediate valuesrequest.parameters as a parameters hashbefore_filter :except logic--comparerender :template => ...find_by_* method for SQL injection