-
- Downloads
There was an error fetching the commit references. Please try again later.
Extract GitLab Pages using RubyZip
RubyZip allows us to perform strong validation of expanded paths where we do extract file. We introduce the following additional checks to extract routines: 1. None of path components can be symlinked, 2. We drop privileges support for directories, 3. Symlink source needs to point within the target directory, like `public/`, 4. The symlink source needs to exist ahead of time.
Showing
- Gemfile 1 addition, 0 deletionsGemfile
- Gemfile.lock 1 addition, 0 deletionsGemfile.lock
- app/services/projects/update_pages_service.rb 25 additions, 16 deletionsapp/services/projects/update_pages_service.rb
- changelogs/unreleased/extract-pages-with-rubyzip.yml 5 additions, 0 deletionschangelogs/unreleased/extract-pages-with-rubyzip.yml
- lib/safe_zip/entry.rb 97 additions, 0 deletionslib/safe_zip/entry.rb
- lib/safe_zip/extract.rb 73 additions, 0 deletionslib/safe_zip/extract.rb
- lib/safe_zip/extract_params.rb 36 additions, 0 deletionslib/safe_zip/extract_params.rb
- spec/fixtures/pages_non_writeable.zip 0 additions, 0 deletionsspec/fixtures/pages_non_writeable.zip
- spec/fixtures/safe_zip/invalid-symlink-does-not-exist.zip 0 additions, 0 deletionsspec/fixtures/safe_zip/invalid-symlink-does-not-exist.zip
- spec/fixtures/safe_zip/invalid-symlinks-outside.zip 0 additions, 0 deletionsspec/fixtures/safe_zip/invalid-symlinks-outside.zip
- spec/fixtures/safe_zip/valid-non-writeable.zip 0 additions, 0 deletionsspec/fixtures/safe_zip/valid-non-writeable.zip
- spec/fixtures/safe_zip/valid-simple.zip 0 additions, 0 deletionsspec/fixtures/safe_zip/valid-simple.zip
- spec/fixtures/safe_zip/valid-symlinks-first.zip 0 additions, 0 deletionsspec/fixtures/safe_zip/valid-symlinks-first.zip
- spec/lib/safe_zip/entry_spec.rb 196 additions, 0 deletionsspec/lib/safe_zip/entry_spec.rb
- spec/lib/safe_zip/extract_params_spec.rb 54 additions, 0 deletionsspec/lib/safe_zip/extract_params_spec.rb
- spec/lib/safe_zip/extract_spec.rb 80 additions, 0 deletionsspec/lib/safe_zip/extract_spec.rb
- spec/services/projects/update_pages_service_spec.rb 26 additions, 9 deletionsspec/services/projects/update_pages_service_spec.rb
Loading
| Loading
| @@ -57,6 +57,7 @@ gem 'u2f', '~> 0.2.1' |
# GitLab Pages | ||
gem 'validates_hostname', '~> 1.0.6' | ||
gem 'rubyzip', '~> 1.2.2', require: false | ||
# Browser detection | ||
gem 'browser', '~> 2.5' | ||
Loading
| Loading
|
lib/safe_zip/entry.rb
0 → 100644
lib/safe_zip/extract.rb
0 → 100644
lib/safe_zip/extract_params.rb
0 → 100644
spec/fixtures/pages_non_writeable.zip
0 → 100644
File added
File added
File added
File added
spec/fixtures/safe_zip/valid-simple.zip
0 → 100644
File added
File added
spec/lib/safe_zip/entry_spec.rb
0 → 100644
spec/lib/safe_zip/extract_params_spec.rb
0 → 100644
spec/lib/safe_zip/extract_spec.rb
0 → 100644
Please register or sign in to comment