brakeman-lib 8.0.5 → 8.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '081816b1dce310635af2372f9bd944fe3efc4e28a89e5f32be39a83b7abff137'
4
- data.tar.gz: a1984f13bf1ffedb4999f5f3b761788f6fd01eb3abbedcfb72fd2be0aa6a5b00
3
+ metadata.gz: 93cfb6ec4cc35376d35e8fe361e6b893bfe39858136d53a29196dd5c5869658d
4
+ data.tar.gz: eb788145060b1e41cf0f18d56395b13681ba0daf72f1948dc8ab0f73e3449b50
5
5
  SHA512:
6
- metadata.gz: a9f099212f13d0897ed9a17a5281da9b8b2f0a983123f0204d72990c7747c1a3ef11db38bbe846cb48a9c99c8e84adb8d20763377fa9279bae17371629d74b9c
7
- data.tar.gz: 88d203ec8ce92493f2192658589ba47c9a41543c1e4b7bc78da3aacaf485eaa005fb5beef49ce0f04d02ad3dffbe7c40b65b57aed35bc35baf150928fc3fea25
6
+ metadata.gz: 9698bfe45b5988178cbe7e134dd0134c00618ec786c0cfcea2a01cce139f1a0e8317dd2b7d1e54ae24b8fe0b4c23687fa02742333ff4c2226cf382a2806597ab
7
+ data.tar.gz: 9e1ad4ea0ee656909be88cdcb167f0e9eda87c4af2b8a43c58f27e4d8c9c4c1922885958a90a8cb1a71c0049dbfeb2369e3f0751c68bc259d5b78578bdf6725d
data/CHANGES.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 8.0.6 - 2026-08-13
2
+
3
+ * Fix EOL date for Rails 8.0 (yeaseul-kim)
4
+ * Add EOL dates for Rails 8.1 and Ruby 4.0
5
+ * Fix command injection false positives (Jacob Evelyn)
6
+ * Fix unused variable warning (viralpraxis)
7
+
1
8
  # 8.0.5 - 2026-06-12
2
9
 
3
10
  * Add `quote_schema_name` to safe quote method list (Zsolt Kozaroczy)
@@ -25,6 +25,7 @@ class Brakeman::CheckEOLRails < Brakeman::EOLCheck
25
25
  ['7.0.0', '7.0.99'] => Date.new(2025, 4, 1),
26
26
  ['7.1.0', '7.1.99'] => Date.new(2025, 10, 1),
27
27
  ['7.2.0', '7.2.99'] => Date.new(2026, 8, 9),
28
- ['8.0.0', '8.0.99'] => Date.new(2026, 10, 7),
28
+ ['8.0.0', '8.0.99'] => Date.new(2026, 11, 7),
29
+ ['8.1.0', '8.1.99'] => Date.new(2027, 10, 10),
29
30
  }
30
31
  end
@@ -26,5 +26,6 @@ class Brakeman::CheckEOLRuby < Brakeman::EOLCheck
26
26
  ['3.2.0', '3.2.99'] => Date.new(2026, 3, 31),
27
27
  ['3.3.0', '3.3.99'] => Date.new(2027, 3, 31),
28
28
  ['3.4.0', '3.4.99'] => Date.new(2028, 3, 31),
29
+ ['4.0.0', '4.0.99'] => Date.new(2029, 3, 31),
29
30
  }
30
31
  end
@@ -55,6 +55,13 @@ class Brakeman::CheckExecute < Brakeman::BaseCheck
55
55
  first_arg = call.first_arg
56
56
  failure = nil
57
57
 
58
+ # All spawn-family methods optionally accept an env hash as the first
59
+ # argument. Strip it so first_arg always points to the command name.
60
+ if hash?(first_arg)
61
+ args.delete_at(1)
62
+ first_arg = args[1]
63
+ end
64
+
58
65
  case call.method
59
66
  when :popen
60
67
  # Normally, if we're in a `popen` call, we only are worried about shell
@@ -99,14 +106,17 @@ class Brakeman::CheckExecute < Brakeman::BaseCheck
99
106
 
100
107
  break if failure
101
108
  end
102
- when :system, :exec
103
- # Normally, if we're in a `system` or `exec` call, we only are worried
104
- # about shell injection when there's a single argument, because comma-
105
- # separated arguments are always escaped by Ruby. However, an exception is
106
- # when the first two arguments are something like "bash -c" because then
107
- # the third argument is effectively the command being run and might be
108
- # a malicious executable if it comes (partially or fully) from user input.
109
- if dash_c_shell_command?(first_arg, call.second_arg)
109
+ when :system, :exec, :spawn, :capture2, :capture2e, :capture3,
110
+ :popen2, :popen2e, :popen3
111
+ # Comma-separated arguments are passed directly to execve without a
112
+ # shell, so only the first argument (the command name) needs checking.
113
+ # Exception: `bash -c <script>` the script is the injection vector.
114
+ #
115
+ # All of these methods accept an optional trailing options hash
116
+ # (e.g. stdin_data:, chdir:); strip it before checking.
117
+ args.pop if hash?(args.last) && args.length > 2
118
+
119
+ if dash_c_shell_command?(first_arg, args[2])
110
120
  failure = include_user_input?(args[3]) ||
111
121
  dangerous_interp?(args[3]) ||
112
122
  dangerous_string_building?(args[3])
@@ -115,21 +125,6 @@ class Brakeman::CheckExecute < Brakeman::BaseCheck
115
125
  dangerous_interp?(first_arg) ||
116
126
  dangerous_string_building?(first_arg)
117
127
  end
118
- when :capture2, :capture2e, :capture3
119
- # Open3 capture methods can take a :stdin_data argument which is used as the
120
- # the input to the called command so it is not succeptable to command injection.
121
- # As such if the last argument is a hash (and therefore execution options) it
122
- # should be ignored
123
-
124
- args.pop if hash?(args.last) && args.length > 2
125
-
126
- args.each_sexp do |arg|
127
- failure = include_user_input?(arg) ||
128
- dangerous_interp?(arg) ||
129
- dangerous_string_building?(arg)
130
-
131
- break if failure
132
- end
133
128
  else
134
129
  failure = include_user_input?(args) ||
135
130
  dangerous_interp?(args) ||
@@ -1,3 +1,3 @@
1
1
  module Brakeman
2
- Version = "8.0.5"
2
+ Version = "8.0.6"
3
3
  end
data/lib/brakeman.rb CHANGED
@@ -427,7 +427,7 @@ module Brakeman
427
427
  release_date = latest.date.to_date
428
428
  latest_version = latest.version.to_s
429
429
 
430
- if (Date.today - latest.date.to_date) >= days_old
430
+ if (Date.today - release_date) >= days_old
431
431
  if current != latest_version
432
432
  return "Brakeman #{current} is not the latest version #{latest_version}"
433
433
  else
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brakeman-lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.5
4
+ version: 8.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Collins
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-08-12 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: minitest
@@ -481,6 +482,7 @@ metadata:
481
482
  mailing_list_uri: https://gitter.im/presidentbeef/brakeman
482
483
  source_code_uri: https://github.com/presidentbeef/brakeman
483
484
  wiki_uri: https://github.com/presidentbeef/brakeman/wiki
485
+ post_install_message:
484
486
  rdoc_options: []
485
487
  require_paths:
486
488
  - lib
@@ -495,7 +497,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
495
497
  - !ruby/object:Gem::Version
496
498
  version: '0'
497
499
  requirements: []
498
- rubygems_version: 4.0.3
500
+ rubygems_version: 3.4.19
501
+ signing_key:
499
502
  specification_version: 4
500
503
  summary: Security vulnerability scanner for Ruby on Rails.
501
504
  test_files: []