前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DevOps工具介绍连载(48)——静态扫描工具Brakeman

DevOps工具介绍连载(48)——静态扫描工具Brakeman

作者头像
顾翔
发布2020-05-31 16:42:25
2.1K0
发布2020-05-31 16:42:25
举报

Brakeman 4.8.2发布

此版本引入了一个新选项和两项新检查!

自4.8.1起的更改:

  • 添加--text-fields选项
  • 添加CVE-2020-8159的检查
  • 在JSON配置选项中添加转义HTML实体的检查
  • 修复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总和为:

代码语言:javascript
复制
d7bf369896b4a3c41778f39f10b1e1d0844a965bbb582fa0a0566b1df4f07dec  brakeman-4.8.2.gem
c13e9a9e5b213ba95a16803ddb50eb3c7119533ca71444ffec2bb6cea22b926a  brakeman-lib-4.8.2.gem
a422a444b7db48682e1f112c83b1a7a7e3828ec02d52ed91c5b3eff235b801c1  brakeman-min-4.8.2.gem

报告问题

感谢所有报告错误并对此版本做出贡献的人!

请报告此版本的任何问题。看看这份报告Brakeman问题的指南。

在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。

Brakeman 4.8.1发布

2020-04-06 10:00:00 -0700

只是一个小错误修复版本。

自4.8.0起的更改:

  • 警告有关全局(!)质量分配
  • 使用String#stripString.squish(#1459)检查SQL查询字符串
  • 处理(#1465)locals哈希中的非符号键render
  • 渲染参数中的索引调用(#1459)

全球批量分配

可以通过以下方式禁用强参数:

代码语言:javascript
复制
ActionController::Parameters.permit_all_parameters = true

Brakeman现在会警告这种(非常罕见的)配置。

压缩和剥离的SQL

Brakeman现在将检查squish或的字符串目标strip

例如:

代码语言:javascript
复制
ActiveRecord::Base.connection.execute "SELECT * FROM #{user_input}".squish

本地哈希中的非符号键

使用符号文字以外的其他值作为locals哈希中的键render将不再导致错误。

渲染参数

render像其他所有方法调用一样,将作为所有参数的调用编入索引并检查所有漏洞类型。

校验和

此版本的SHA256总和为:

代码语言:javascript
复制
5f3cc763fce471434adc33aa251298fa24ea2a1c01ef2549aec55be4b5b14d46  brakeman-4.8.1.gem
c4a95b450fb7ec2440e68640a0821e3a6b62ea34f665e78264ba0b332e98e5df  brakeman-lib-4.8.1.gem
ada41dbfc3a436c062cd44161893249654caf43296801599303952f6261f2e5e  brakeman-min-4.8.1.gem

报告问题

感谢所有报告错误并对此版本做出贡献的人!

请报告此版本的任何问题。看看这份报告Brakeman问题的指南。

在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。

Brakeman 4.8.0发布

2020-02-18 10:00:00 -0800

2020年首次发布!此版本带有全新的报告格式:JUnit XML。

自4.7.2起的更改:

  • 添加JUnit XML报告格式(Naoki Kimurai)
  • 按指纹和行对忽略文件进行排序(Ngan Pham)
  • CheckExecute(Jacob Evelyn)中捕捉危险的串联
  • 忽略配置文件具有无效JSON(D.Hicks)时的用户友好消息
  • 冻结呼叫索引结果,解决线程安全问题
  • 正确地对Markdown报告(#1446)充满信心
  • 如果报告了零警告,则将旧警告报告为固定

JUnit XML报告

感谢Naoki Kimura,Brakeman现在可以生成JUnit XML格式。JUnit XML由包括CircleCI在内的许多不同测试工具生成和使用。

支持此格式可以使通用测试基础结构工具消耗Brakeman警告。

要使用新格式,请使用-f junit-o report.junit

变化

排序忽略文件

以前,“忽略文件”中的警告仅按指纹排序。由于有了Ngan Pham,现在可以按指纹然后按行号对它们进行排序,以保持具有相同指纹的警告之间的稳定顺序。

变化

命令中的危险串联

Jacob Evelyn更新了命令注入检查(CheckExecute),以考虑将字符串连接起来并带有危险值。

例如:

代码语言:javascript
复制
system("ls " + maybe_dangerous)

变化

修复线程安全问题

两项检查正在修改共享数据(呼叫站点结果),从而引入了竞争条件。有时结果会奇怪地变成nil并导致间歇性错误。注意,只有在JRuby上使用实线程时才会弹出此窗口。

现在CallIndex冻结的结果有助于防止将来对共享数据进行这种修改。

变化

降价的信心

由于先前的重构,Markdown报告中未提供置信度。

变化

报告比较修复

由于存在一个非常老的错误,当将带有某些警告的旧报告与带有零警告的新报告进行比较时,旧警告未报告为已修复。现在他们会的。

可能没有人注意到,因为我们通常只关心新的警告。

变化

校验和

此版本的SHA256总和为:

代码语言:javascript
复制
2febb3ce4111fe14f57a8ea447c5770eeb32ba43333955b4ed27864ef045c277  brakeman-4.8.0.gem
c513373a37576d8107af724bf9f8a47e8d76253c85bdd6fdb4d3e93471a47ee6  brakeman-lib-4.8.0.gem
d82206b9a60ef1eb4c96d32ba0157774db301e3ca10dcbdd7b4171044b28eccf  brakeman-min-4.8.0.gem

报告问题

感谢所有报告错误并对此版本做出贡献的人!

请报告此版本的任何问题。看看这份报告Brakeman问题的指南。

在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。

Brakeman 4.7.2发布

2019-11-25 14:00:00 -0800

一些次要发行版的次要修复程序。

自4.7.1起的更改:

  • 添加request.params为查询参数(#1398)
  • 处理更多permit!案件(#1426)
  • 移除named_scopevs.的版本保护scope
  • String#strip_heredoc目标中查找SQL注入(#1433)
  • 处理模型时确保设置了文件名
  • 捆绑软件ruby_parser版本3.14.1(#1429)

更多查询参数

request.params 已添加为查询参数方法。

更多 permit!

permit!将识别出更多的情况,特别是当它是方法调用的目标时。

更多范围

无论检测到Rails的版本如何,都将处理named_scopescope

SQL注入 strip_heredoc

strip_heredoc现在被视为返回字符串。如果目标是纯字符串,则可修复误报;如果目标具有插值,则可修复误报。

模型文件名

在某些情况下,警告丢失了文件名,因为该文件名未传递给模型处理器。

现在将传递文件名,并且测试套件中有一个针对警告文件名的新测试。

校验和

此版本的SHA256总和为:

代码语言:javascript
复制
339d6f3707a2c0a32003536a231255b839a0b87bd6a7ebef3c82aedd1bdd3ac8  brakeman-4.7.2.gem
39ce3a5fe248dee8c78fe671441d2abbfec66cec923ee9f56c62018229d3c9b0  brakeman-lib-4.7.2.gem
efa07aa8476ef5553c91734093349a3ed55e2ef05b469d3dcecfdaabede37296  brakeman-min-4.7.2.gem

报告问题

感谢所有报告错误并对此版本做出贡献的人!

请报告此版本的任何问题。看看这份报告Brakeman问题的指南。

在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。

Brakeman 4.7.1发布

2019-10-14 16:00:00 -0700

此版本在依赖项中包括一个安全修复程序。请参阅下面。

自4.7.0起的更改:

  • 捆绑中的地址文件权限问题 ruby_parser-legacy
  • 按文件和行对文本报告进行排序(Jacob Evelyn)
  • :_blank符号(Jacob Evelyn)捕捉逆向踩abb。
  • 转换s(:lambda)s(:call)Sexp#block_call(#1410)
  • 加入前检查字符串长度是否超过限制
  • 修复片状rails4测试(Adam Kiczula)
  • 修复Symbol#to_sRuby 2.7中冻结的错误
  • 将发布日期添加到CHANGES(TheSpartan1980)中的每个版本中

文件权限

报告了ruby_parser-legacygem的安全问题,该文件安装了具有世界可写权限的某些文件。这将允许系统上的任何用户编辑在加载ruby_parser-legacygem 时由Brakeman(或其他从属库)执行的代码。

在此版本的brakemangem中,这些文件的权限已得到更正。但是,ruby_parser-legacy尚未发布一个固定的版本,因此brakeman-libbrakeman-min仍然受到影响。

默认报告格式排序

由于Jacob Evelyn的帮助,默认文本报告中的警告现在按文件和行号以及可信度和类别进行排序。

反向Tab

Jacob Evelyn还更新了反向Tabnabbing检查,以匹配使用创建的链接target: :_blank

Stabby Lambdas

ruby_parser3.14.0更改了Lambda的AST表示形式->{},而Brakeman需要进行调整。

字符串长度限制

现在,Brakeman会在连接两个弦(例如"blah" + "blah blah"之前检查结果长度。如果连接的字符串超过50个字符,则不连接字符串。

请注意,唯一的变化是当检查长度时,该限制已经到位。

片状测试固定

亚当·基茨库拉(Adam Kiczula)在Brakeman测试套件中修复了一个间歇性失败的测试,该测试长期困扰着CI构建。谢谢!

Ruby 2.7冻结字符串

在Ruby 2.7中,符号和其他一些常量值(true/ false等)将返回冻结的字符串。这仅以较小的方式影响了Brakeman,但现在已修复,以准备Ruby 2.7。

变更日志中的发布日期

司闸员的更新日志现在包括由于发布日期TheSpartan1980。

校验和

此版本的SHA256总和为:

代码语言:javascript
复制
cdc6f4c86b5b35b5e94798cf443909385aa1b79235da8e1ee1fd4381acf03691  brakeman-4.7.1.gem
2f7a7a6d79b1e5b8c6a390e04642e987c56cced2c8be3d63a1250f7bbc9e504d  brakeman-lib-4.7.1.gem
598431f6bfc90b119fc6883ead7896c1718ba5d9a0e0450893c3e628a6c8e7b0  brakeman-min-4.7.1.gem

报告问题

感谢所有报告错误并对此版本做出贡献的人!

请报告此版本的任何问题。看看这份报告Brakeman问题的指南。

在Twitter上关注@brakeman,并在Gitter上进行提问和讨论。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试培训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Brakeman 4.8.2发布
    • 文字栏位选项
      • 基本身份验证检查修复
        • 报告问题
        • Brakeman 4.8.1发布
          • 全球批量分配
            • 报告问题
            • Brakeman 4.8.0发布
              • JUnit XML报告
                • 排序忽略文件
                  • 命令中的危险串联
                    • 修复线程安全问题
                      • 降价的信心
                        • 报告比较修复
                          • 校验和
                            • 报告问题
                            • Brakeman 4.7.2发布
                              • 更多查询参数
                                • 更多 permit!
                                  • 更多范围
                                    • SQL注入 strip_heredoc
                                      • 模型文件名
                                        • 校验和
                                          • 报告问题
                                          • Brakeman 4.7.1发布
                                            • 文件权限
                                              • 默认报告格式排序
                                                • 反向Tab
                                                  • Stabby Lambdas
                                                    • 字符串长度限制
                                                      • 片状测试固定
                                                        • Ruby 2.7冻结字符串
                                                          • 变更日志中的发布日期
                                                            • 校验和
                                                              • 报告问题
                                                              相关产品与服务
                                                              多因子身份认证
                                                              多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
                                                              领券
                                                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档