brakeman-lib 5.4.1 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES.md +14 -0
- data/README.md +2 -2
- data/lib/brakeman/app_tree.rb +0 -1
- data/lib/brakeman/checks/check_content_tag.rb +8 -5
- data/lib/brakeman/checks/check_eol_ruby.rb +3 -1
- data/lib/brakeman/report/report_github.rb +1 -1
- data/lib/brakeman/scanner.rb +0 -1
- data/lib/brakeman/tracker/config.rb +15 -11
- data/lib/brakeman/version.rb +1 -1
- data/lib/brakeman.rb +6 -2
- metadata +2 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fa04262bdd0adc42cac58526843c33d79a66b439880e8c8df8c6c1df343fcff6
|
|
4
|
+
data.tar.gz: 7e433c0b3a0ac62bc432bec371432bfacde51c34cd6d2c8ae2e78b698e7c44a4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2b8220a3968c53ba01ac55034a15a2f7021a0bc7c319fda428ae917bb8eead85388a9995115ea67ec41f8a837d68fb2efaa6cfb907ac3d6a00ce92e2a15e4a87
|
|
7
|
+
data.tar.gz: d9374e5121036962f6f3ea04478ecffceda79cfbc0c3a30d7d6fcb426ce60c0185d903056ff7231b0ec4b37d3fbd72a899ff49d6a7010f5ca7a1703d948dcd43
|
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
|
|
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 [
|
|
185
|
+
There are a couple [GitHub Actions](https://github.com/marketplace?type=actions&query=brakeman) available.
|
|
186
186
|
|
|
187
187
|
# Building
|
|
188
188
|
|
data/lib/brakeman/app_tree.rb
CHANGED
|
@@ -73,11 +73,14 @@ class Brakeman::CheckContentTag < Brakeman::CheckCrossSiteScripting
|
|
|
73
73
|
check_argument result, content
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
#
|
|
77
|
-
if
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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', '
|
|
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
|
data/lib/brakeman/scanner.rb
CHANGED
|
@@ -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(:
|
|
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
|
|
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)
|
data/lib/brakeman/version.rb
CHANGED
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 =
|
|
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-lib
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
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-
|
|
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
|