All Projects → steakknife → waxseal

steakknife / waxseal

Licence: MIT license
Big official brass stamp to make signing gems dead simple.

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to waxseal

Factory bot instruments
Instruments for benchmarking, tracing, and debugging Factory Girl models.
Stars: ✭ 108 (+414.29%)
Mutual labels:  rubygems
Gem Compiler
A RubyGems plugin that generates binary gems
Stars: ✭ 136 (+547.62%)
Mutual labels:  rubygems
bitcache
[Retired] Distributed, content-addressable storage system.
Stars: ✭ 30 (+42.86%)
Mutual labels:  rubygems
Bashcov
Code coverage tool for Bash
Stars: ✭ 113 (+438.1%)
Mutual labels:  rubygems
Active bootstrap skin
Bootstrap skin for Active Admin 🚀 🚀 🚀
Stars: ✭ 133 (+533.33%)
Mutual labels:  rubygems
Bundler Leak
Known-leaky gems verification for bundler: `bundle leak` to check your app and find leaky gems in your Gemfile 💎💧
Stars: ✭ 184 (+776.19%)
Mutual labels:  rubygems
Dependency spy
Find known vulnerabilities in your dependencies
Stars: ✭ 87 (+314.29%)
Mutual labels:  rubygems
agency-jekyll-theme
Jekyll version of the newest Agency Bootstrap theme, plus new features: Google Analytics, Markdown support, custom pages, and more!
Stars: ✭ 222 (+957.14%)
Mutual labels:  rubygems
Waterdrop
WaterDrop is a standalone Karafka component library for generating Kafka messages
Stars: ✭ 136 (+547.62%)
Mutual labels:  rubygems
yavdb
Yet Another Vulnerability Database
Stars: ✭ 14 (-33.33%)
Mutual labels:  rubygems
Openpgp.rb
[Retired] OpenPGP.rb is a pure-Ruby implementation of the OpenPGP Message Format (RFC 4880).
Stars: ✭ 115 (+447.62%)
Mutual labels:  rubygems
Guides
An effort to provide awesome documentation for the RubyGems ecosystem.
Stars: ✭ 128 (+509.52%)
Mutual labels:  rubygems
Rubygems
Library packaging and distribution for Ruby.
Stars: ✭ 2,902 (+13719.05%)
Mutual labels:  rubygems
Tor.rb
Tor.rb is a Ruby library for interacting with the Tor anonymity network.
Stars: ✭ 108 (+414.29%)
Mutual labels:  rubygems
php.rb
[Retired] PHP.rb translates Ruby code into PHP code.
Stars: ✭ 86 (+309.52%)
Mutual labels:  rubygems
Gems
Ruby wrapper for the RubyGems.org API
Stars: ✭ 103 (+390.48%)
Mutual labels:  rubygems
Instagram Crawler
Crawl instagram photos, posts and videos for download.
Stars: ✭ 178 (+747.62%)
Mutual labels:  rubygems
mercadopago
Gem to communicate with the MercadoPago API
Stars: ✭ 31 (+47.62%)
Mutual labels:  rubygems
sane patch
Making monkey patches sane again
Stars: ✭ 63 (+200%)
Mutual labels:  rubygems
Vueonrails
💎 Rails gem with the power of Vue.js components
Stars: ✭ 250 (+1090.48%)
Mutual labels:  rubygems

waxseal

seal

What it does

Signs the ruby gems you created

Huh?

RubyGems are unsigned by default, and the built-in security policy is awful, which means gems and their dependencies are not currently checked. So better pray that gems are being downloaded over https:// at least.

What it does

  • Sets up your self-signed cert, if missing (which you need to put the public cert somewhere securely, like with your GPG fingerprint)
  • Signs the gem (gemspec) in the current directly
  • Creates a new git commit, if you want it to

You could do all this yourself, like anything, but this makes it much more convienent. It will support modifying gemspecs until Ruby 1.9 is retired completely (Feburary 2015), because 2+ automatically signs gems now, even though RubyGems.org and gem policy are still insecure by default.

What you can do

The best move for the communinity would be to encourage the requirement of RubyGems reject new gems that do not verify and to set security policy to at least MediumSecurity and then HighSecurity. This means it's important to get all gems signed, even ones that are "abandoned."

Until then, there won't be enough political capital to convince the complacent "where's the problem?" people to change until there's another avoidable major security gaffe, like hacked gems running some malicious code on someone's app servers.

The other thing you can do to deter malicious code getting to production is run a private gem repo that compares hashes of gems downloaded via multiple network links, and use that instead of hammering rubygem servers directly. This won't prevent very many attacks hacking RubyGems between developer upload channel, storage on their disks and user download channel, which only end-to-end cryptographic signatures provides... It's a terrible workaound, but it prevents breakage including developers destroying their work.

What else you can do to increase security (and cause more things to fix)

Configure rubygems (gem)

Add this to your /etc/gemrc or ~/.gemrc:

---
gem: -P MediumSecurity # append this if gem: already exists

Configure bundler

It's not currently possible to persist security policy with bundler.

It's possible to pass the security policy to bundler via bundler ... --trust-policy {{Level}}Policy

Could just wrap bundler with a shell alias or another script.

Read more

http://guides.rubygems.org/security/

https://www.ruby-doc.org/stdlib-2.2.0/libdoc/rubygems/rdoc/Gem/Security.html

Install

[sudo] gem cert --add <(curl -L https://gist.github.com/steakknife/5333881/raw/gem-public_cert.pem) # adds my cert (do once)
[sudo] gem install waxseal -P HighSecurity

Usage

Usage: waxseal [options]
    -c, --commit                     Make a new git commit automatically. Can also be set by WAXSEAL_AUTO_COMMIT=1
    -d, --dont-sign-commit           Don't GPG sign Git commits. Can also be set by WAXSEAL_DONT_SIGN_AUTO_COMMIT=1
    -e, --email EMAIL                Email address to use for signing, overrides optional variable WAXSEAL_GEM_SIGNING_EMAIL
    -f, --force                      No prompts.  Can also be set by WAXSEAL_NO_CONFIRM=1
    -h, --help

License

MIT

(Try not to get wax all over the place, it's hard to clean up.)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].