我如何确定我的宝石是安全的?

时间:2013-04-10 13:12:46

标签: ruby security gem

我正在寻找一种自动方式来检查基于sinatra的网站中使用的所有宝石,以获取可用的安全更新。这样的事情存在吗?

我对更新的主要态度是:如果没有破坏,请不要尝试修复它。但如果我很脆弱,那么我想知道它。通过仅应用安全更新,我将潜在行为的更改量保持在最低限度。

背景:我以前的大部分工作都是在Drupal。在该社区中,维护人员可以将其模块版本标记为修复安全问题。这意味着我的网站或我的CLI工具可以查询当前网站中使用的模块的发布数据,以查看安全更新是否可用并通知我。

4 个答案:

答案 0 :(得分:6)

据我所知,没有确定的自动化方法。 Ruby gem中没有一个标志的概念,表明它们是安全更新等。但是,大多数gem维护者都非常善于遵守版本号major.minor.patch的约定。主要障碍是API破坏,次要添加功能但向后兼容,补丁用于错误修正或非常微不足道的更改。没有任何强制执行,有些宝石甚至不使用三部分版本号。 Rails本身在这里失败尤其令人震惊; Rails次要版本颠簸是普遍不兼容的,破坏了变化。但是,Rails补丁颠簸往往是安全修复。

如果这足以满足您的需求,您可以使用Bundler指定您只需要补丁级别的更新:

gem 'foo', '~> 2.2.0'

...将安装gem的2.2.x版本的最新补丁级别(例如,最终可能是2.2.12,但不是2.3.0)。

有关版本字符串(由Bundler使用)的更多信息,请参阅the Rubygems docs,以及如何保守(在术语中使用“悲观”)。另见他们的numbering guidelines。再次,请记住,这些都没有严格执行,并且由于Rails本身提供了破坏惯例的可怕例子,其他宝石作者并不总是做正确的事。

答案 1 :(得分:3)

如果您在项目中使用Bundler,则可以检查您是否使用了bundle outdated的最新版本的宝石。要知道您使用的gem的版本是否具有已知的安全漏洞,您可以使用bundler-audit gem或holepicker gem。还有一项名为Gemnasium的服务可以监控您的宝石,并在宝石更新或出现安全问题时通知您。

更新:Github现在监控您的存储库Gemfile,并在宝石出现安全问题时通知您。

答案 2 :(得分:2)

有一个名为Gemnasium的网站。它会检查您使用的宝石是否是最新宝石,如果有任何安全问题,它会向您发送电子邮件。

答案 3 :(得分:1)

从github上的rubysec安装bundle-audit gem。定期/定期运行。它是免费的,通过已知安全威胁的CVE库保持最新,并报告项目中的哪些宝石有可用的更新。