Page 1 of 1

在您的 Web 应用程序中使用 Ruby Gems 时,是否需要在便利性和安全性之间进行权衡?

Posted: Mon Jan 27, 2025 12:02 pm
by suchona.kani.z
Ruby 是一种动态、多范式、面向对象的编程语言,由 Yukihiro Matsumoto 在 20 世纪 90 年代创建。其优雅的语法和灵活性使其成为最具吸引力的开发编程语言之一,因此,今天,Ruby 拥有庞大的开发人员社区。自创建以来,Ruby 及其不断扩大的社区对 Web 开发行业产生了巨大的影响。

Ruby 的核心优势之一是其庞大的程序和库集合,提供各种解决方案和功能,称为 Ruby Gems。

Gems 是标准格式、独立、可重用的程序和库,由 Ruby 社区通过托管在 rubümmels.org 上的名为 RubyGems 的包管理器进行分发。 Ruby Gems 允许程序员轻松共享他们的代码,并只需几行代码即可向他们的应用程序添加功能。

根据 Ruby 官方网站的数据,有 140,920 个 ruby​​ gem,下载量超过 190 亿次。

没有其他语言拥有更好的系统来在开发人员之间共享编程解决方案。因此,如今每个 Ruby 开发人员都在他们的应用程序中使用其他人的代码。

但安全风险呢?将 Gems 快速添加到您的应用程序中的便利 民主捐助者电子邮件列表 性是否需要付出代价?

通过使用其他人的代码,您将失去对应用程序安全方面的控制。无论您多么小心以及您的代码多么完美,使用其他人的代码都可能会给您的应用程序带来漏洞。

例如,图 1 和图 2 分别按年份和类型显​​示了 Ruby on Rails Gem 中的漏洞统计信息,由 cvedetails.com 发布。攻击方式总是不同的,这表明安全性有所提高,但每年都会出现新的问题。


Ruby Gems 容易出现与任何应用程序相同的安全漏洞,如果您必须检查它们的所有代码以及所有依赖项的代码是否有任何漏洞,效率会非常低。

从 Rob Race 等一些 Ruby 开发人员的出版物中可以明显看出,Rob Race 讨论了应用程序开发过程中最常用的 Gem,一个普通的 Ruby 应用程序可以使用 20 多个 Gem,并且其中使用的每个 Gem 都可能有多个依赖项。

由于 gem 包在众多开发项目中广泛使用,因此漏洞的发现有可能影响大量系统。

以下是一些示例,显示了 Ruby Gems 漏洞利用的潜在风险和潜在影响。下面的示例讨论了 Ruby Rails Gem 中报告的漏洞。

据talosintelligence.com 报道,思科 ASIG 的 Zachary Sanchez 于 2017 年在 Ruby Rails Gem 中发现了两个 XSS 漏洞。利用该漏洞的攻击者可以在用户浏览器中执行任意 JavaScript 代码。该攻击可用于对用户进行网络钓鱼或窃取用户的 cookie。

Heroku 于 2013 年报告了 Rails Gem 中的一个严重漏洞。该漏洞会影响所有运行 Rails 的系统,并允许攻击者访问其应用程序。很快就发布了补丁来解决这个问题。

Gem 还可能被攻击者修改并用作对您的应用程序和底层系统进行攻击的工具。

例如,2017 年 10 月,RubyGems.org 报告了 RubyGems 包管理器中的一个不安全对象反序列化漏洞。该漏洞可用于在任何 Gem 中注入任意 Ruby 对象。该漏洞很快得到修复,并且对存储库中的所有 Gem 进行了审核。 。该漏洞早在 2012 年就已在系统中出现,直到 2017 年才被注意到。

您的应用程序也可能通过更改其中使用的 Gems 来源而受到攻击。

2016 年报道了 Gem Bundler 中的一个重大安全漏洞,该漏洞允许攻击者通过 Gemfile 中声明的 Gem 源将任意代码注入到您的应用程序中。该黑客利用了 Gemfile 为不同 Gem 声明不同来源的能力。

Gems 安全性在 Ruby 社区中得到了积极的讨论。 Ruby Gems 中的漏洞不断被发现和报告。

常见漏洞和暴露 (CVE) 数据库是让您了解公开发布的软件包中的安全错误的好来源。

在线 Git 存储库 GitHub 于 2017 年推出了一项新功能,该功能根据 CVE 数据库中的信息向开发人员发出其项目依赖项中的漏洞的警报。安全警报系统会通知所有受影响的存储库已报告的漏洞。