`

rubygems.org guides 翻译七(安全)

    博客分类:
  • gem
阅读更多

目录

1.梗概

2.使用gem

3.构建gem

4.报告安全漏洞

 

一、梗概

安装一个gem后,允许你在你的app作用域中运行gem代码。同时他也暗指,如果你在gem server上安装了一个恶意的gem,那么你的server将被渗透。因此,gem的安全也是ruby社区经常讨论的一个主题。

rubygems已经有能力 cryptographically sign gems (加密签名gem)自从 version 0.8.11,这个签名使用gem cert产生一对秘钥,然后打包签名信息到gem中。gem install命令提供了一个可选的安全策略选项,使你可以在安装gem之前验证gem的签名。

然而,安全加密gem的方式并没有广泛使用。他需要许多 manual steps on the part of the developer,而且目前还没有一个完善的方式来验证gem的签名。新的签名模型例如X509 and OpenPGP可以去 rubygems-trust wiki, the RubyGems-Developers list and in IRC.

他的目标是改善签名系统,使之更加简单、透明。

 

二、使用gem

使用信任策略安装gem

  • gem install gemname -P HighSecurity: All dependent gems must be signed and verified.

  • gem install gemname -P MediumSecurity: All signed dependent gems must be verified.

  • bundle --trust-policy MediumSecurity: Same as above, except Bundler only recognizes the long --trust-policy flag, not the short -P.

  • Caveat: Gem certificates are trusted globally, such that adding a cert.pem for one gem automatically trusts all gems signed by that cert.

验证checksum

gem fetch gemname -v version
ruby -rdigest/sha2 -e "puts Digest::SHA512.new.hexdigest(File.read('gemname-version.gem'))

Know the risks of being pwned, as described by Benjamin Smith’s Hacking with Gems talk

 

 

三、构建gem

使用gem cert命令签名

1.创建自己的签名证书

cd ~/.ssh
gem cert --build your@email.com
chmod 600 gem-p*

使用你gemspecs中的邮箱

2.配置gemspec with cert

添加证书公钥到你的仓库

cd /path/to/your/gem
mkdir certs
cp ~/.ssh/gem-public_cert.pem certs/yourhandle.pem
git add certs/yourhandle.pem
添加证书路径到gemspec
s.cert_chain  = ['certs/yourhandle.pem']
s.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
3.Add your own cert to your approved list, 如下
gem cert --add certs/yourhandle.pem
4.编译、测试gem以便安装它
gem build gemname.gemspec
gem install gemname-version.gem -P HighSecurity
# or -P MediumSecurity if your gem depends on unsigned gems
5.Example text for installation documentation

MetricFu is cryptographically signed(加密签名方式)。 确定你安装的gem没有被 tampered(篡改) with:

添加公钥作为可信任的证书

gem cert --add <(curl -Ls https://raw.github.com/metricfu/metric_fu/master/certs/bf4.pem)

gem install metric_fu -P MediumSecurity

The MediumSecurity trust profile 会验证签名的gems, 但是允许安装未签名的依赖.

这是必须的,因为不是所有的 MetricFu’s 依赖都签名了,所以不能使用 HighSecurity。

引入release gem的checksum到你的仓库中
require 'digest/sha2'
built_gem_path = 'pkg/gemname-version.gem'
checksum = Digest::SHA512.new.hexdigest(File.read(built_gem_path))
checksum_path = 'checksum/gemname-version.gem.sha512'
File.open(checksum_path, 'w' ) {|f| f.write(checksum) }
# add and commit 'checksum_path'
OpenPGP不建议使用,因为没有被支持。

is not recommended due to lack of support.请查看 with Yorick Peterse.

四、报告安全漏洞

1.报告他人gem的安全漏洞

如果了发现了某人的gem存在安全漏洞,第一步就是检查他是否一个已知的漏洞。

如果是一个未被发现的漏洞,你可以私下联系作者,尽量不要pull request或者issue在开源的项目中,解释这个漏洞,并提供解决方案。

 

2.报告自己gem的安全漏洞

首先request a CVE identifier by mailing cve-assign@mitre.org。这个identifier指明这个漏洞在讨论中具有唯一性。

然后找出哪些人使用了你的gem,需要解决这个漏洞。这样牵涉到更新一补丁,并建议他们更新。

最后,你需要告知人们这个漏洞,目前没有很好的地方来发布这些漏洞信息,但是你可以使用以下这些方案:

  • 发送一封邮件到 Ruby Talk mailing list (ruby-talk@ruby-lang.org) ,主题 prefix [ANN][Security] outlining the vulnerabilty, which versions of your gem it affects and what actions those depending on the gem should take.

  • 把他添加到开源漏洞数据库,例如 OSVDB。You can do this by emailing moderators@osvdb.org and/or messaging @osvdb on GitHub or Twitter.

 

五、扩展阅读

Several sources were used for content for this guide:

 

 

分享到:
评论

相关推荐

    gemstash, 一个 RubyGems.org 缓存和 private gem 服务器.zip

    gemstash, 一个 RubyGems.org 缓存和 private gem 服务器 什么是 Gemstash?Gemstash是远程服务器( 如 https://rubygems.org ) 和 private gem 源的缓存。在你的控制范围内,如果你使用的是多个可以访问服务器的...

    rubygems-update-3.1.3.gem

    A package (also known as a library) contains a set of functionality that can be invoked by a Ruby program, such as reading and parsing an XML ... See our guide on publishing a Gem at guides.rubygems.org

    meg:帮助管理和支持 RubyGems.org 的快速命令

    帮助管理和支持 RubyGems.org 的快速命令。 目前帮助通过 SSH 连接到 RubyGems.org 基础设施和运行命令。 安装 $ cd $ git clone git://github.com/rubygems/meg.git .meg 对于 bash 用户: $ echo 'eval "$($...

    Ruby Toolbox data on Rubygems.org-crx插件

    在Rubygems.org上查看Ruby Toolbox数据 此Chrome扩展程序从Ruby工具箱(https://www.ruby-toolbox.com/)中提取信息,以显示在rubygems.org上。 例如,如果您正在https://rubygems.org/gems/simplecov上查看诸如...

    adoption.rubygems.org

    option.rubygems.org 项目导师的姓名: Nick Quaranto,Benjamin Fleischer 项目团队的名称:丽娜·托雷斯(Lina Torres)的安吉拉(Angela Guette) 项目名称: RubyGems.org采用中心 网址: : 关于该项目: ...

    rubygems.org:Ruby社区的gem托管服务

    RubyGems.org(néeGemcutter) Ruby社区的gem主机。 目的 提供更好的API处理宝石 创建更透明,更易于访问的项目页面 使社区能够改善和增强网站 支持 由管理, 是一个社区资助的组织,通过门票和赞助为和的会议...

    rubygems.org-backup:这是历史重写之前 ruby​​gems.org 的 BACKUP 存储库。 不使用。 请不要拉请求

    RubyGems.org(姓氏 Gemcutter) Ruby 社区的 Gem 托管。目的提供更好的 API 来处理 gems 创建更透明和可访问的项目页面使社区能够改进和增强站点链接 :#rubygems 在 Freenode 上: : :贡献请遵循我们的。 要进行...

    2.4-3.0.rubygems.rar

    gem包管理

    rubygems-incident-verifiers

    ##概括此处提供的工具使您能够将 gem 的本地副本与 Rubygems.org 上的副本进行检查。 这些工具旨在让 gem 开发人员根据 Rubygems.org 服务器检查他们的本地开发副本(为什么?请参阅文档末尾的注释)。 目前正在...

    rubygems-1.8.7.gz for linux

    rubygems-1.8.7.gz rubygems-1.8.7.gz

    曲柄的Rubygems「Crank for Rubygems」-crx插件

    ★导航至ruby gem的GitHub或Rubygems.org页面。 在GitHub上打开'Gemfile'或'.gemspec'文件,然后单击任何gem名称。 您将被重定向到gem项目页面。 ★从上下文菜单中打开RubyGems.org中的ruby gem页面。 用鼠标突出...

    rubygems-master-(1).zip_GEM

    Download from: rubygems.org/pages/download Unpack into a directory and cd there Install with: ruby setup.rb # you may need admin/root privilege For more details and other options, see: ruby setup....

    RubyGems.txt

    RubyGems

    guides:努力为RubyGems生态系统提供出色的文档

    从rubygems.org/pages/docs移植内容 从help.rubygems.org知识库移植内容 在这里找到许多StackOverflow / ruby​​-talk问题并获得其常见答案 填写更多指南! 设置 确保已gem install jekyll ( gem install jekyll ...

    gemstash:RubyGems.org缓存和私有gem服务器

    今天或什至更好的做出贡献,并确保Bundler,RubyGems,Gemstash和其他共享工具在未来数年内都存在。 快速入门指南 设置 Gemstash旨在快速,轻松地进行设置。 到本《快速入门指南》结束时,您将能够将公共资源中的...

    rubygems-3.2.12.tgz

    rubygems-3.2.12.tgz

    Crank for Rubygems-crx插件

    ★导航到ruby gem的github或rubygems.org页面。 在github上打开'gemfile'或'.gemspec'文件,然后单击任何宝石名称。 您将被重定向到GEM项目页面。 ★从上下文菜单中打开RubyGems.org中的Ruby Gem页面。 在使用鼠标的...

    InstantRails-2_rubygems1.8.chm

    InstantRails-2_rubygems1.8.chm InstantRails-2_rubygems1.8.chm

Global site tag (gtag.js) - Google Analytics