Changes since 4.2.1:
- Add
--parser-timeout
option - Improve timeout error messages
- Check exec-type calls even if they are targets (#1199)
- Index Kernel# calls even if they are targets (#1183)
BaseCheck#include_interp?
should return first string interpolation (#1189)- Ignore
Process.pid
in system calls - Warn about dangerous
link_to
href withsanitize()
(#1187) - Ignore
params#to_h
andparams#to_hash
in SQL checks (#1180) - Convert
Array#join
to string interpolation (#1179) - Change
"".freeze
to just""
(#1182) --color
can be used to force color output (#1175)- Track parent calls in call index
- Fix reported line numbers for CVE-2018-3741 and CVE-2018-8048
- Code Climate: omit leading dot from
only_files
(Todd Mazierski)
Did you know we recently broke 11 million gem downloads? Wow!
--color
Option
Previously, --no-color
could be used to turn off ANSI color in text reports. Now, --color
can be used to force color output.
(changes)
--parser-timeout
Option
The default timeout for parsing a single file is 10 seconds. For some files, this may not be enough.
The --parser-timeout
option can be used to specify a per-file timeout (in seconds).
Additionally, the error message for parsing timeouts has been improved considerably.
(changes)
Command Injection Fixes
Thanks to Jacob Evelyn reporting a number of issues around command injection, there are several improvements.
Use of backticks as targets of a call will now be checked for command injection.
For example:
`blah #{something}` == "expected output"
Previously, use of backticks was not being indexed in this case.
(changes)
Somewhat similarly, other calls (such as system
) would not warn if they were targets of a call.
(changes)
Brakeman will no longer warn about Process.pid
in system calls.
(changes)
Also fixed an issue where searching for string interpolation would return the innermost instance instead of the first instance (typically you want the first one).
(changes)
Freeze Calls
Calls to String#freeze
will essentially be ignored.
"blah".freeze
will be treated like
"blah"
(changes)
More Strong Parameters in SQL
Calls to to_h
and to_hash
on params
will be ignored in the context of SQL injection.
(changes)
Sanitize in link_to
Brakeman will now warn on uses of sanitize
in attempts to avoid XSS in link_to
. Unfortunately, it does not work that way.
(changes)
Array#join
to String Interpolation
Uses of Array#join
will now be converted to string interpolation.
For example:
[1, thing, "here"].join(' ')
will be changed to
"1 #{thing} here"
This both fixes some false positives and helps detect more vulnerabilities in checks that are looking at string interpolation.
(changes)
Parent Calls
Brakeman now tracks the parent method call (I’m sure there’s a better way to say that) of an argument. While this ended up not being needed for this release, it will help improve checks and messages in the future.
(changes)
Checksums
The SHA256 sums for this release are:
Reporting Issues
Thank you to everyone who reported bugs and contributed to this release!
Please report any issues with this release. Take a look at this guide to reporting Brakeman problems.
Hang out on GitHub for questions and discussion.