华中数控系统机床解锁

华中数控系统机床解锁▉▉▉【一电一 17154833762-】▉▉▉RubyGems是一个软件包注册中心,用于为 Ruby 语言生态系统提供软件,它托管超过170,000个Ruby包(gem),在其生命周期内提供了近1000 亿次下载。
2022年5月6日,RubyGems披露存在一个可导致未授权访问的漏洞(CVE-2022-29176),该漏洞的CVSS评分为9.9。
RubyGems发布安全公告指出,“由于 yank 操作中存在一个漏洞,因此任何 RubyGems.org 用户都能越权删除并取代某些gems。”
本篇文章将分析CVE-2022-29176漏洞的性质,带来的影响评估和事件分析。
想要自动检测恶意软件吗?联系Mend授权合作伙伴——龙智,了解更多关于Mend的自动恶意软件检测平台Diffend的信息。

华中数控系统机床解锁

2022年5月6日,发布了一个RubyGems的关键安全漏洞,RubyGems是Ruby生态系统的主要包源。

该漏洞是由于可从存储库中取消发布(“yank”)某些Ruby包,并使用相同的文件名和版本号重新发布污染或恶意的版本。该漏洞需要满足以下条件:

  • gem名称中有一个或多个破折号,例如something-provider。
  • 以第一个破折号之前的单词命名的包不存在(例如,用于kostya-sigar的kostya, 用于googleapis-common-protos-types的googleapi)。
  • 被篡改的包是在过去30天内创建的,或者超过100天未更新。

由于RubyGems提供了详细的包信息列表,所以很容易通过处理这些信息来找到满足以上条件的包。

此外,我们不能假设恶意行为者之前没有注意到该漏洞。虽然这个漏洞是由安全研究人员报告的,但调查人员也假设已存在利用该漏洞的情况。考虑到这一点,在检查可疑活动时,我们重新访问了RubyGems上所有可用的软件包。

CVE-2022-29176的本质

RubyGems 最大的一个bug是,它允许未经授权的参与者,在不必成为其所有者的情况下撤回(删除)包版本。该请求将被分派给包的控制者,但由于获取包版本的机制,撤销操作可能将在不同的包上执行。相关代码如下:

find_by!(full_name: "#{rubygem.name}-#{slug}")

由于没有正确地过滤/检查slug,所以可能查询到其它包的版本。但尽管如此,它也可能会带来法律和安全风险。

例如,googleapi示例,可以构建以下的包版本:slug: googleapis-common-protos-types-1.3.1当发送common-protos-types-1.3.1作为一个slug时。

这将有效地删除此版本的目标包。

由于这种性质的问题,事态迅速升级。通过删除所有版本,在某些情况下,该名称可以用于复用。这意味着我们有了一个很棒的新包名可供使用。

包版本的不变性怎么样?

RubyGems软件包的版本在设计上是不变且不可替代的。这就意味着除非发生安全事件,即有人泄露RubyGems并篡改软件包的内容,否则用户不能简单地更换或更新给定的版本。当然,您也可以删除版本或上传新版本,但新版本需要有不同的编号。

补充信息

这里经常被忽略的一点是,单个RubyGems版本仅在发布它的平台范围内是唯一的。平台基于 CPU架构、操作系统类型,有时还基于操作系统版本。示例包括“x86-mingw32”或“java”。该平台表明gem仅适用于为该平台构建的ruby。RubyGems会自动为您的平台下载正确的版本。

默认平台称为 -ruby,它可以在任何平台上运行。虽然您无法替换它的内容,但您可以自由地删除它并发布具有相同编号的新平台特定版本。例如,您可以删除 karafka-testing-1.4.3 并上传 karafka-testing-1.4.3-i686-linux。版本本身不会改变,但会指定平台。

没有什么能阻止恶意行为者列出所有可用平台,并在每个平台发布一个版本,从而导致每名用户均受此影响。

我有一个 Gemfile.lock,它是不可变的,是这样的吗?

当然不对。在某些情况下,尽管有锁定文件,Bundler仍可以重新解决依赖关系。这是一种预期中的行为,但尽管如此,它也可能会带来法律和安全风险。

使用-frozen作为默认设置,并使用受损的软件包,您将收到类似于以下内容的消息:

“您的捆绑包仅支持平台 [“x86_64-linux”],但您的本地平台是 x86_64-darwin。使用 bundle lock –add-platform x64-mingw32 将当前平台添加到锁文件中,然后重试。”

虽然上述语句不具有描述性,也未说明任何安全风险,但至少它可能会让人们注意到某些事情已经发生了变化。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章