brakeman-min 5.4.1 → 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a188afc9f3a8b700140582ea3bf9632ef909fde940fb24dd62a71e5d217944c1
4
- data.tar.gz: 92d9d4e2a79ad4119866dd24238521052bfb2bd10d2511ac9dbeeec1a3576f4e
3
+ metadata.gz: 32281be786de7f15331b0a18d3a95ee580824c71ebcaa5793dce46bf9e00eaf5
4
+ data.tar.gz: 0b86124af3e493a0e30298e59339026f0bee8decd2a3851894b556fcb2e018a3
5
5
  SHA512:
6
- metadata.gz: 9cf69d5ddc77ffc77096e46a57511847304821e5f655e9c19cc371e7aeeb96f766c2e5956618f942d27dfce68ef31142f3d74b1ef5e0bcb979bcd63929f68030
7
- data.tar.gz: c3e1fbf2240fc9bc2a1cb58d724321d36c443bd84dedae296746e1a3e26345ca033d7be199ce7fda0f375e8144cb2b7ecef2a1179e4733f995e714d6c43c029c
6
+ metadata.gz: 963ea6f98407ab7b887ac6e00a8ab7e6e9388357c7f96bd694e88e80a35e1be337f241fb0bb9708eed5a4f9d418b29c28b37e96fc6a57c9d59b6e032f855ea8a
7
+ data.tar.gz: 295ba8cd987f5d26fff77fd204f50b54e64126bd5e700ff8d82789b32bbc58c3d4b4b8e8bc0b58841430d67290d0eb452fa302a428c109d9619b6f4b81d4a289
data/CHANGES.md CHANGED
@@ -1,3 +1,17 @@
1
+ # 6.0.1 - 2023-07-20
2
+
3
+ * Accept strings for `load_defaults` version
4
+
5
+ # 6.0.0 - 2023-05-24
6
+
7
+ * Add obsolete fingerprints to comparison report
8
+ * Warn about missing CSRF protection when defaults are not loaded (Chris Kruger)
9
+ * Scan directories that include the word `public`
10
+ * Raise minimum Ruby version to 3.0
11
+ * Drop support for Ruby 1.8/1.9 syntax
12
+ * Fix end-of-life dates for Ruby
13
+ * Fix false positive with `content_tag` in newer Rails
14
+
1
15
  # 5.4.1 - 2023-02-21
2
16
 
3
17
  * Fix file/line location for EOL software warnings
data/README.md CHANGED
@@ -66,7 +66,7 @@ Outside of Rails root (note that the output file is relative to path/to/rails/ap
66
66
 
67
67
  Brakeman should work with any version of Rails from 2.3.x to 7.x.
68
68
 
69
- Brakeman can analyze code written with Ruby 1.8 syntax and newer, but requires at least Ruby 2.5.0 to run.
69
+ Brakeman can analyze code written with Ruby 2.0 syntax and newer, but requires at least Ruby 3.0.0 to run.
70
70
 
71
71
  # Basic Options
72
72
 
@@ -182,7 +182,7 @@ There is a [plugin available](http://brakemanscanner.org/docs/jenkins/) for Jenk
182
182
 
183
183
  For even more continuous testing, try the [Guard plugin](https://github.com/guard/guard-brakeman).
184
184
 
185
- There are a couple [Github Actions](https://github.com/marketplace?type=actions&query=brakeman) available.
185
+ There are a couple [GitHub Actions](https://github.com/marketplace?type=actions&query=brakeman) available.
186
186
 
187
187
  # Building
188
188
 
@@ -197,7 +197,6 @@ module Brakeman
197
197
  spec/
198
198
  test/
199
199
  tmp/
200
- public/
201
200
  log/
202
201
  ]
203
202
 
@@ -73,11 +73,14 @@ class Brakeman::CheckContentTag < Brakeman::CheckCrossSiteScripting
73
73
  check_argument result, content
74
74
  end
75
75
 
76
- #Attribute keys are never escaped, so check them for user input
77
- if not @matched and hash? attributes and not request_value? attributes
78
- hash_iterate(attributes) do |k, _v|
79
- check_argument result, k
80
- return if @matched
76
+ # This changed in Rails 6.1.6
77
+ if version_between? '0.0.0', '6.1.5'
78
+ #Attribute keys are never escaped, so check them for user input
79
+ if not @matched and hash? attributes and not request_value? attributes
80
+ hash_iterate(attributes) do |k, _v|
81
+ check_argument result, k
82
+ return if @matched
83
+ end
81
84
  end
82
85
  end
83
86
 
@@ -21,6 +21,8 @@ class Brakeman::CheckEOLRuby < Brakeman::EOLCheck
21
21
  ['2.5.0', '2.5.99'] => Date.new(2021, 3, 31),
22
22
  ['2.6.0', '2.6.99'] => Date.new(2022, 3, 31),
23
23
  ['2.7.0', '2.7.99'] => Date.new(2023, 3, 31),
24
- ['3.0.0', '2.8.99'] => Date.new(2024, 3, 31),
24
+ ['3.0.0', '3.0.99'] => Date.new(2024, 3, 31),
25
+ ['3.1.0', '3.1.99'] => Date.new(2025, 3, 31),
26
+ ['3.2.0', '3.2.99'] => Date.new(2026, 3, 31),
25
27
  }
26
28
  end
@@ -1,4 +1,4 @@
1
- # Github Actions Formatter
1
+ # GitHub Actions Formatter
2
2
  # Formats warnings as workflow commands to create annotations in GitHub UI
3
3
  class Brakeman::Report::Github < Brakeman::Report::Base
4
4
  def generate_report
@@ -1,6 +1,5 @@
1
1
  begin
2
2
  Brakeman.load_brakeman_dependency 'ruby_parser'
3
- Brakeman.load_brakeman_dependency 'ruby_parser/legacy'
4
3
  require 'ruby_parser/bm_sexp.rb'
5
4
  require 'ruby_parser/bm_sexp_processor.rb'
6
5
  require 'brakeman/processor'
@@ -20,9 +20,7 @@ module Brakeman
20
20
 
21
21
  def default_protect_from_forgery?
22
22
  if version_between? "5.2.0.beta1", "9.9.9"
23
- if @rails.dig(:action_controller, :default_protect_from_forgery) == Sexp.new(:false)
24
- return false
25
- else
23
+ if @rails.dig(:action_controller, :default_protect_from_forgery) == Sexp.new(:true)
26
24
  return true
27
25
  end
28
26
  end
@@ -191,13 +189,19 @@ module Brakeman
191
189
  # Load defaults based on config.load_defaults value
192
190
  # as documented here: https://guides.rubyonrails.org/configuring.html#results-of-config-load-defaults
193
191
  def load_rails_defaults
194
- return unless number? tracker.config.rails[:load_defaults]
192
+ return unless node_type? tracker.config.rails[:load_defaults], :lit, :str
193
+
194
+ version = tracker.config.rails[:load_defaults].value.to_s
195
+
196
+ unless version.match? /^\d+\.\d+$/
197
+ Brakeman.debug "[Notice] Unknown version: #{tracker.config.rails[:load_defaults]}"
198
+ return
199
+ end
195
200
 
196
- version = tracker.config.rails[:load_defaults].value
197
201
  true_value = Sexp.new(:true)
198
202
  false_value = Sexp.new(:false)
199
203
 
200
- if version >= 5.0
204
+ if version >= '5.0'
201
205
  set_rails_config(value: true_value, path: [:action_controller, :per_form_csrf_tokens])
202
206
  set_rails_config(value: true_value, path: [:action_controller, :forgery_protection_origin_check])
203
207
  set_rails_config(value: true_value, path: [:active_record, :belongs_to_required_by_default])
@@ -205,12 +209,12 @@ module Brakeman
205
209
  set_rails_config(value: true_value, path: [:ssl_options, :hsts, :subdomains])
206
210
  end
207
211
 
208
- if version >= 5.1
212
+ if version >= '5.1'
209
213
  set_rails_config(value: false_value, path: [:assets, :unknown_asset_fallback])
210
214
  set_rails_config(value: true_value, path: [:action_view, :form_with_generates_remote_forms])
211
215
  end
212
216
 
213
- if version >= 5.2
217
+ if version >= '5.2'
214
218
  set_rails_config(value: true_value, path: [:active_record, :cache_versioning])
215
219
  set_rails_config(value: true_value, path: [:action_dispatch, :use_authenticated_cookie_encryption])
216
220
  set_rails_config(value: true_value, path: [:active_support, :use_authenticated_message_encryption])
@@ -219,7 +223,7 @@ module Brakeman
219
223
  set_rails_config(value: true_value, path: [:action_view, :form_with_generates_ids])
220
224
  end
221
225
 
222
- if version >= 6.0
226
+ if version >= '6.0'
223
227
  set_rails_config(value: Sexp.new(:lit, :zeitwerk), path: [:autoloader])
224
228
  set_rails_config(value: false_value, path: [:action_view, :default_enforce_utf8])
225
229
  set_rails_config(value: true_value, path: [:action_dispatch, :use_cookies_with_metadata])
@@ -232,7 +236,7 @@ module Brakeman
232
236
  set_rails_config(value: true_value, path: [:active_record, :collection_cache_versioning])
233
237
  end
234
238
 
235
- if version >= 6.1
239
+ if version >= '6.1'
236
240
  set_rails_config(value: true_value, path: [:action_controller, :urlsafe_csrf_tokens])
237
241
  set_rails_config(value: Sexp.new(:lit, :lax), path: [:action_dispatch, :cookies_same_site_protection])
238
242
  set_rails_config(value: Sexp.new(:lit, 308), path: [:action_dispatch, :ssl_default_redirect_status])
@@ -244,7 +248,7 @@ module Brakeman
244
248
  set_rails_config(value: true_value, path: [:active_storage, :track_variants])
245
249
  end
246
250
 
247
- if version >= 7.0
251
+ if version >= '7.0'
248
252
  video_args =
249
253
  Sexp.new(:str, "-vf 'select=eq(n\\,0)+eq(key\\,1)+gt(scene\\,0.015),loop=loop=-1:size=2,trim=start_frame=1' -frames:v 1 -f image2")
250
254
  hash_class = s(:colon2, s(:colon2, s(:const, :OpenSSL), :Digest), :SHA256)
@@ -1,3 +1,3 @@
1
1
  module Brakeman
2
- Version = "5.4.1"
2
+ Version = "6.0.1"
3
3
  end
data/lib/brakeman.rb CHANGED
@@ -493,10 +493,14 @@ module Brakeman
493
493
  end
494
494
 
495
495
  tracker = run(options)
496
+ new_report = JSON.parse(tracker.report.to_json, symbolize_names: true)
496
497
 
497
- new_results = JSON.parse(tracker.report.to_json, :symbolize_names => true)[:warnings]
498
+ new_results = new_report[:warnings]
499
+ obsolete_ignored = tracker.unused_fingerprints
498
500
 
499
- Brakeman::Differ.new(new_results, previous_results).diff
501
+ Brakeman::Differ.new(new_results, previous_results).diff.tap do |diff|
502
+ diff[:obsolete] = obsolete_ignored
503
+ end
500
504
  end
501
505
 
502
506
  def self.load_brakeman_dependency name, allow_fail = false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brakeman-min
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.4.1
4
+ version: 6.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Collins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-21 00:00:00.000000000 Z
11
+ date: 2023-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '3.19'
97
- - !ruby/object:Gem::Dependency
98
- name: ruby_parser-legacy
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.0'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.0'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: sexp_processor
113
99
  requirement: !ruby/object:Gem::Requirement