SafeGem: GitHub's Safe Gem Eval Web Service
Help make GitHub's gem build process more secure and robust!
SafeGem is a Sinatra app that safely converts Ruby gemspecs into YAML gemspecs.
It works as follows:
-
Receives a request with the repo location and the ruby gemspec
-
Returns immediately and schedules the following via EM.defer:
-
Makes a shallow clone of the repo and chdir's to that repo
-
Evals the spec in a separate thread with a higher $SAFE level
-
Converts spec to YAML
-
Posts the YAML to the specified callback
Goals
- Lower the $SAFE level to allow methods like Dir.glob, but without compromising security.