4

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

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

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

4

4 回答 4

6

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

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

gem 'foo', '~> 2.2.0'

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

有关版本字符串(由 Bundler 使用)以及如何保守(术语中的“悲观”)的更多信息,请参阅Rubygems 文档。另请参阅他们的编号指南。同样,请记住,这些并不是严格执行的,而且 Rails 本身提供了一个打破常规的可怕例子,其他 gem 作者并不总是做正确的事情。

于 2013-04-10T13:27:18.073 回答
4

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

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

于 2013-10-18T02:40:07.837 回答
2

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

于 2013-04-10T13:39:52.003 回答
2

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

于 2018-02-22T23:52:02.020 回答