此版本引入了一个新选项和两项新检查!
自4.8.1起的更改:
--text-fields
选项authenticate_or_request_with_http_basic
检查已通过的块(Hugo Corbucci)现在,可以使用该--text-fields
选项指定报告哪些文本字段以及它们对于默认“文本”报告格式的顺序。
可能的选项是:
all
category
category_id
check
code
confidence
file
fingerprint
line
link
message
render_path
--text-fields
接受这些选项的逗号分隔列表。
请记住,JSON报告应用于结构化报告/解析。
CVE-2020-8159
此版本包含与该gem 相关的CVE-2020-8159检查actionpack-page_caching
。该漏洞允许任意文件写入,并且可能会升级为远程执行代码。
如果caches_page
在任何控制器中调用,这将是高置信度警告。否则,弱。
提醒:Brakeman不是“依赖”扫描仪。它仅包括对少量与Rails相关的CVE的检查。使用bundler-audit或相关工具进行依赖性检查。
JSON转义配置
Brakeman现在会警告是否使用全局禁用了JSON中转义的HTML实体ActiveSupport.escape_html_entities_in_json = false
。这是一个不寻常的配置。
(更改)
雨果·科布奇(Hugo Corbucci)修复了在检查authenticate_or_request_with_http_basic
无块文字的情况下调用时的错误。
校验和
此版本的SHA256总和为:
d7bf369896b4a3c41778f39f10b1e1d0844a965bbb582fa0a0566b1df4f07dec brakeman-4.8.2.gem
c13e9a9e5b213ba95a16803ddb50eb3c7119533ca71444ffec2bb6cea22b926a brakeman-lib-4.8.2.gem
a422a444b7db48682e1f112c83b1a7a7e3828ec02d52ed91c5b3eff235b801c1 brakeman-min-4.8.2.gem
感谢所有报告错误并对此版本做出贡献的人!
请报告此版本的任何问题。看看这份报告Brakeman问题的指南。
在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。
2020-04-06 10:00:00 -0700
只是一个小错误修复版本。
自4.8.0起的更改:
String#strip
或String.squish
(#1459)检查SQL查询字符串locals
哈希中的非符号键render
可以通过以下方式禁用强参数:
ActionController::Parameters.permit_all_parameters = true
Brakeman现在会警告这种(非常罕见的)配置。
压缩和剥离的SQL
Brakeman现在将检查squish
或的字符串目标strip
。
例如:
ActiveRecord::Base.connection.execute "SELECT * FROM #{user_input}".squish
本地哈希中的非符号键
使用符号文字以外的其他值作为locals
哈希中的键render
将不再导致错误。
渲染参数
render
像其他所有方法调用一样,将作为所有参数的调用编入索引并检查所有漏洞类型。
校验和
此版本的SHA256总和为:
5f3cc763fce471434adc33aa251298fa24ea2a1c01ef2549aec55be4b5b14d46 brakeman-4.8.1.gem
c4a95b450fb7ec2440e68640a0821e3a6b62ea34f665e78264ba0b332e98e5df brakeman-lib-4.8.1.gem
ada41dbfc3a436c062cd44161893249654caf43296801599303952f6261f2e5e brakeman-min-4.8.1.gem
感谢所有报告错误并对此版本做出贡献的人!
请报告此版本的任何问题。看看这份报告Brakeman问题的指南。
在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。
2020-02-18 10:00:00 -0800
2020年首次发布!此版本带有全新的报告格式:JUnit XML。
自4.7.2起的更改:
CheckExecute
(Jacob Evelyn)中捕捉危险的串联感谢Naoki Kimura,Brakeman现在可以生成JUnit XML格式。JUnit XML由包括CircleCI在内的许多不同测试工具生成和使用。
支持此格式可以使通用测试基础结构工具消耗Brakeman警告。
要使用新格式,请使用-f junit
或-o report.junit
。
变化
以前,“忽略文件”中的警告仅按指纹排序。由于有了Ngan Pham,现在可以按指纹然后按行号对它们进行排序,以保持具有相同指纹的警告之间的稳定顺序。
变化
Jacob Evelyn更新了命令注入检查(CheckExecute
),以考虑将字符串连接起来并带有危险值。
例如:
system("ls " + maybe_dangerous)
变化
两项检查正在修改共享数据(呼叫站点结果),从而引入了竞争条件。有时结果会奇怪地变成nil
并导致间歇性错误。注意,只有在JRuby上使用实线程时才会弹出此窗口。
现在CallIndex
冻结的结果有助于防止将来对共享数据进行这种修改。
变化
由于先前的重构,Markdown报告中未提供置信度。
变化
由于存在一个非常老的错误,当将带有某些警告的旧报告与带有零警告的新报告进行比较时,旧警告未报告为已修复。现在他们会的。
可能没有人注意到,因为我们通常只关心新的警告。
变化
此版本的SHA256总和为:
2febb3ce4111fe14f57a8ea447c5770eeb32ba43333955b4ed27864ef045c277 brakeman-4.8.0.gem
c513373a37576d8107af724bf9f8a47e8d76253c85bdd6fdb4d3e93471a47ee6 brakeman-lib-4.8.0.gem
d82206b9a60ef1eb4c96d32ba0157774db301e3ca10dcbdd7b4171044b28eccf brakeman-min-4.8.0.gem
感谢所有报告错误并对此版本做出贡献的人!
请报告此版本的任何问题。看看这份报告Brakeman问题的指南。
在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。
2019-11-25 14:00:00 -0800
一些次要发行版的次要修复程序。
自4.7.1起的更改:
request.params
为查询参数(#1398)permit!
案件(#1426)named_scope
vs.的版本保护scope
String#strip_heredoc
目标中查找SQL注入(#1433)ruby_parser
版本3.14.1(#1429)request.params
已添加为查询参数方法。
permit!
permit!
将识别出更多的情况,特别是当它是方法调用的目标时。
无论检测到Rails的版本如何,都将处理named_scope
和scope
。
strip_heredoc
strip_heredoc
现在被视为返回字符串。如果目标是纯字符串,则可修复误报;如果目标具有插值,则可修复误报。
在某些情况下,警告丢失了文件名,因为该文件名未传递给模型处理器。
现在将传递文件名,并且测试套件中有一个针对警告文件名的新测试。
此版本的SHA256总和为:
339d6f3707a2c0a32003536a231255b839a0b87bd6a7ebef3c82aedd1bdd3ac8 brakeman-4.7.2.gem
39ce3a5fe248dee8c78fe671441d2abbfec66cec923ee9f56c62018229d3c9b0 brakeman-lib-4.7.2.gem
efa07aa8476ef5553c91734093349a3ed55e2ef05b469d3dcecfdaabede37296 brakeman-min-4.7.2.gem
感谢所有报告错误并对此版本做出贡献的人!
请报告此版本的任何问题。看看这份报告Brakeman问题的指南。
在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。
2019-10-14 16:00:00 -0700
此版本在依赖项中包括一个安全修复程序。请参阅下面。
自4.7.0起的更改:
ruby_parser-legacy
:_blank
符号(Jacob Evelyn)捕捉逆向踩abb。s(:lambda)
到s(:call)
中Sexp#block_call
(#1410)Symbol#to_s
Ruby 2.7中冻结的错误报告了ruby_parser-legacy
gem的安全问题,该文件安装了具有世界可写权限的某些文件。这将允许系统上的任何用户编辑在加载ruby_parser-legacy
gem 时由Brakeman(或其他从属库)执行的代码。
在此版本的brakeman
gem中,这些文件的权限已得到更正。但是,ruby_parser-legacy
尚未发布一个固定的版本,因此brakeman-lib
和brakeman-min
仍然受到影响。
由于Jacob Evelyn的帮助,默认文本报告中的警告现在按文件和行号以及可信度和类别进行排序。
Jacob Evelyn还更新了反向Tabnabbing检查,以匹配使用创建的链接target: :_blank
。
ruby_parser
3.14.0更改了Lambda的AST表示形式->{}
,而Brakeman需要进行调整。
现在,Brakeman会在连接两个弦(例如"blah" + "blah blah"
)之前检查结果长度。如果连接的字符串超过50个字符,则不连接字符串。
请注意,唯一的变化是当检查长度时,该限制已经到位。
亚当·基茨库拉(Adam Kiczula)在Brakeman测试套件中修复了一个间歇性失败的测试,该测试长期困扰着CI构建。谢谢!
在Ruby 2.7中,符号和其他一些常量值(true
/ false
等)将返回冻结的字符串。这仅以较小的方式影响了Brakeman,但现在已修复,以准备Ruby 2.7。
司闸员的更新日志现在包括由于发布日期TheSpartan1980。
此版本的SHA256总和为:
cdc6f4c86b5b35b5e94798cf443909385aa1b79235da8e1ee1fd4381acf03691 brakeman-4.7.1.gem
2f7a7a6d79b1e5b8c6a390e04642e987c56cced2c8be3d63a1250f7bbc9e504d brakeman-lib-4.7.1.gem
598431f6bfc90b119fc6883ead7896c1718ba5d9a0e0450893c3e628a6c8e7b0 brakeman-min-4.7.1.gem
感谢所有报告错误并对此版本做出贡献的人!
请报告此版本的任何问题。看看这份报告Brakeman问题的指南。
在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。