rubygems-update 1.8.23.2 → 1.8.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

@@ -1,22 +1,11 @@
1
1
  # coding: UTF-8
2
2
 
3
- === 1.8.23.2 / 2013-09-24
3
+ === 1.8.24 / 2012-04-27
4
4
 
5
- Security fixes:
6
-
7
- * RubyGems 2.1.4 and earlier are vulnerable to excessive CPU usage due to a
8
- backtracking in Gem::Version validation. See CVE-2013-4363 for full details
9
- including vulnerable APIs. Fixed versions include 2.1.5, 2.0.10, 1.8.27 and
10
- 1.8.23.2 (for Ruby 1.9.3).
11
-
12
- === 1.8.23.1 / 2013-09-09
13
-
14
- Security fixes:
5
+ * 1 bug fix:
15
6
 
16
- * RubyGems 2.0.7 and earlier are vulnerable to excessive CPU usage due to a
17
- backtracking in Gem::Version validation. See CVE-2013-4287 for full details
18
- including vulnerable APIs. Fixed versions include 2.0.8, 1.8.26 and
19
- 1.8.23.1 (for Ruby 1.9.3). Issue #626 by Damir Sharipov.
7
+ * Install the .pem files properly. Fixes #320
8
+ * Remove OpenSSL dependency from the http code path
20
9
 
21
10
  === 1.8.23 / 2012-04-19
22
11
 
@@ -1,7 +1,5 @@
1
1
  .autotest
2
2
  .document
3
- CVE-2013-4287.txt
4
- CVE-2013-4363.txt
5
3
  History.txt
6
4
  LICENSE.txt
7
5
  MIT.txt
data/Rakefile CHANGED
@@ -50,9 +50,7 @@ hoe = Hoe.spec 'rubygems-update' do
50
50
  extra_dev_deps << ['rcov', '~> 0.9.0']
51
51
  extra_dev_deps << ['ZenTest', '~> 4.5']
52
52
 
53
- self.extra_rdoc_files = Dir["*.rdoc"] + %w[
54
- CVE-2013-4287.txt
55
- ]
53
+ self.extra_rdoc_files = Dir["*.rdoc"]
56
54
 
57
55
  spec_extras['rdoc_options'] = proc do |rdoc_options|
58
56
  rdoc_options << "--title=RubyGems #{self.version} Documentation"
@@ -121,7 +121,7 @@ require "rubygems/deprecate"
121
121
  # -The RubyGems Team
122
122
 
123
123
  module Gem
124
- VERSION = '1.8.23.2'
124
+ VERSION = '1.8.24'
125
125
 
126
126
  ##
127
127
  # Raised when RubyGems is unable to load or activate a gem. Contains the
@@ -209,7 +209,10 @@ TEXT
209
209
  say "Installing RubyGems" if @verbose
210
210
 
211
211
  Dir.chdir 'lib' do
212
- lib_files = Dir[File.join('**', '*rb')]
212
+ lib_files = Dir[File.join('**', '*rb')]
213
+
214
+ # Be sure to include our SSL ca bundles
215
+ lib_files += Dir[File.join('**', '*pem')]
213
216
 
214
217
  lib_files.each do |lib_file|
215
218
  dest_file = File.join lib_dir, lib_file
@@ -321,13 +321,24 @@ class Gem::RemoteFetcher
321
321
 
322
322
  if https?(uri) and !connection.started? then
323
323
  configure_connection_for_https(connection)
324
- end
325
324
 
326
- connection.start unless connection.started?
325
+ # Don't refactor this with the else branch. We don't want the
326
+ # http-only code path to not depend on anything in OpenSSL.
327
+ #
328
+ begin
329
+ connection.start
330
+ rescue OpenSSL::SSL::SSLError, Errno::EHOSTDOWN => e
331
+ raise FetchError.new(e.message, uri)
332
+ end
333
+ else
334
+ begin
335
+ connection.start unless connection.started?
336
+ rescue Errno::EHOSTDOWN => e
337
+ raise FetchError.new(e.message, uri)
338
+ end
339
+ end
327
340
 
328
341
  connection
329
- rescue OpenSSL::SSL::SSLError, Errno::EHOSTDOWN => e
330
- raise FetchError.new(e.message, uri)
331
342
  end
332
343
 
333
344
  def configure_connection_for_https(connection)
@@ -145,8 +145,8 @@ class Gem::Version
145
145
 
146
146
  include Comparable
147
147
 
148
- VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*' # :nodoc:
149
- ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/ # :nodoc:
148
+ VERSION_PATTERN = '[0-9]+(\.[0-9a-zA-Z]+)*' # :nodoc:
149
+ ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})*\s*\z/ # :nodoc:
150
150
 
151
151
  ##
152
152
  # A string representation of this Version.
@@ -37,19 +37,17 @@ class TestGemRequirement < Gem::TestCase
37
37
  end
38
38
 
39
39
  def test_parse_bad
40
- [
41
- nil,
42
- '',
43
- '! 1',
44
- '= junk',
45
- '1..2',
46
- ].each do |bad|
47
- e = assert_raises ArgumentError do
48
- Gem::Requirement.parse bad
49
- end
40
+ e = assert_raises ArgumentError do
41
+ Gem::Requirement.parse nil
42
+ end
50
43
 
51
- assert_equal "Illformed requirement [#{bad.inspect}]", e.message
44
+ assert_equal 'Illformed requirement [nil]', e.message
45
+
46
+ e = assert_raises ArgumentError do
47
+ Gem::Requirement.parse ""
52
48
  end
49
+
50
+ assert_equal 'Illformed requirement [""]', e.message
53
51
  end
54
52
 
55
53
  def test_prerelease_eh
@@ -64,18 +64,12 @@ class TestGemVersion < Gem::TestCase
64
64
  end
65
65
 
66
66
  def test_initialize_bad
67
- %W[
68
- junk
69
- 1.0\n2.0
70
- 1..2
71
- 1.2\ 3.4
72
- 1-2-3
73
- ].each do |bad|
74
- e = assert_raises ArgumentError, bad do
67
+ ["junk", "1.0\n2.0"].each do |bad|
68
+ e = assert_raises ArgumentError do
75
69
  Gem::Version.new bad
76
70
  end
77
71
 
78
- assert_equal "Malformed version number string #{bad}", e.message, bad
72
+ assert_equal "Malformed version number string #{bad}", e.message
79
73
  end
80
74
  end
81
75
 
metadata CHANGED
@@ -1,184 +1,177 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rubygems-update
3
- version: !ruby/object:Gem::Version
4
- version: 1.8.23.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 7
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 8
9
+ - 24
10
+ version: 1.8.24
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Jim Weirich
8
14
  - Chad Fowler
9
15
  - Eric Hodel
10
16
  autorequire:
11
17
  bindir: bin
12
- cert_chain:
13
- - |
14
- -----BEGIN CERTIFICATE-----
15
- MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRAwDgYDVQQDDAdkcmJy
16
- YWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZFgNu
17
- ZXQwHhcNMTMwMjI4MDUyMjA4WhcNMTQwMjI4MDUyMjA4WjBBMRAwDgYDVQQDDAdk
18
- cmJyYWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZ
19
- FgNuZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbbgLrGLGIDE76
20
- LV/cvxdEzCuYuS3oG9PrSZnuDweySUfdp/so0cDq+j8bqy6OzZSw07gdjwFMSd6J
21
- U5ddZCVywn5nnAQ+Ui7jMW54CYt5/H6f2US6U0hQOjJR6cpfiymgxGdfyTiVcvTm
22
- Gj/okWrQl0NjYOYBpDi+9PPmaH2RmLJu0dB/NylsDnW5j6yN1BEI8MfJRR+HRKZY
23
- mUtgzBwF1V4KIZQ8EuL6I/nHVu07i6IkrpAgxpXUfdJQJi0oZAqXurAV3yTxkFwd
24
- g62YrrW26mDe+pZBzR6bpLE+PmXCzz7UxUq3AE0gPHbiMXie3EFE0oxnsU3lIduh
25
- sCANiQ8BAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
26
- BBS5k4Z75VSpdM0AclG2UvzFA/VW5DAfBgNVHREEGDAWgRRkcmJyYWluQHNlZ21l
27
- bnQ3Lm5ldDAfBgNVHRIEGDAWgRRkcmJyYWluQHNlZ21lbnQ3Lm5ldDANBgkqhkiG
28
- 9w0BAQUFAAOCAQEAOflo4Md5aJF//EetzXIGZ2EI5PzKWX/mMpp7cxFyDcVPtTv0
29
- js/6zWrWSbd60W9Kn4ch3nYiATFKhisgeYotDDz2/pb/x1ivJn4vEvs9kYKVvbF8
30
- V7MV/O5HDW8Q0pA1SljI6GzcOgejtUMxZCyyyDdbUpyAMdt9UpqTZkZ5z1sicgQk
31
- 5o2XJ+OhceOIUVqVh1r6DNY5tLVaGJabtBmJAYFVznDcHiSFybGKBa5n25Egql1t
32
- KDyY1VIazVgoC8XvR4h/95/iScPiuglzA+DBG1hip1xScAtw05BrXyUNrc9CEMYU
33
- wgF94UVoHRp6ywo8I7NP3HcwFQDFNEZPNGXsng==
34
- -----END CERTIFICATE-----
35
- date: 2013-09-24 00:00:00.000000000 Z
36
- dependencies:
37
- - !ruby/object:Gem::Dependency
18
+ cert_chain: []
19
+
20
+ date: 2012-04-27 00:00:00 Z
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
38
23
  name: minitest
39
- requirement: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- version: '5.0'
44
- type: :development
45
24
  prerelease: false
46
- version_requirements: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - ~>
49
- - !ruby/object:Gem::Version
50
- version: '5.0'
51
- - !ruby/object:Gem::Dependency
52
- name: rdoc
53
- requirement: !ruby/object:Gem::Requirement
54
- requirements:
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
55
28
  - - ~>
56
- - !ruby/object:Gem::Version
57
- version: '4.0'
29
+ - !ruby/object:Gem::Version
30
+ hash: 21
31
+ segments:
32
+ - 2
33
+ - 11
34
+ version: "2.11"
58
35
  type: :development
59
- prerelease: false
60
- version_requirements: !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ~>
63
- - !ruby/object:Gem::Version
64
- version: '4.0'
65
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
66
38
  name: builder
67
- requirement: !ruby/object:Gem::Requirement
68
- requirements:
69
- - - ~>
70
- - !ruby/object:Gem::Version
71
- version: '2.1'
72
- type: :development
73
39
  prerelease: false
74
- version_requirements: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ~>
77
- - !ruby/object:Gem::Version
78
- version: '2.1'
79
- - !ruby/object:Gem::Dependency
80
- name: hoe-seattlerb
81
- requirement: !ruby/object:Gem::Requirement
82
- requirements:
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
83
43
  - - ~>
84
- - !ruby/object:Gem::Version
85
- version: '1.2'
44
+ - !ruby/object:Gem::Version
45
+ hash: 1
46
+ segments:
47
+ - 2
48
+ - 1
49
+ version: "2.1"
86
50
  type: :development
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: hoe-seattlerb
87
54
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- requirements:
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
90
58
  - - ~>
91
- - !ruby/object:Gem::Version
92
- version: '1.2'
93
- - !ruby/object:Gem::Dependency
59
+ - !ruby/object:Gem::Version
60
+ hash: 11
61
+ segments:
62
+ - 1
63
+ - 2
64
+ version: "1.2"
65
+ type: :development
66
+ version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
94
68
  name: session
95
- requirement: !ruby/object:Gem::Requirement
96
- requirements:
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
97
73
  - - ~>
98
- - !ruby/object:Gem::Version
99
- version: '2.4'
74
+ - !ruby/object:Gem::Version
75
+ hash: 11
76
+ segments:
77
+ - 2
78
+ - 4
79
+ version: "2.4"
100
80
  type: :development
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: rdoc
101
84
  prerelease: false
102
- version_requirements: !ruby/object:Gem::Requirement
103
- requirements:
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
104
88
  - - ~>
105
- - !ruby/object:Gem::Version
106
- version: '2.4'
107
- - !ruby/object:Gem::Dependency
108
- name: rcov
109
- requirement: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - ~>
112
- - !ruby/object:Gem::Version
113
- version: 0.9.0
89
+ - !ruby/object:Gem::Version
90
+ hash: 7
91
+ segments:
92
+ - 3
93
+ - 0
94
+ version: "3.0"
114
95
  type: :development
96
+ version_requirements: *id005
97
+ - !ruby/object:Gem::Dependency
98
+ name: rcov
115
99
  prerelease: false
116
- version_requirements: !ruby/object:Gem::Requirement
117
- requirements:
100
+ requirement: &id006 !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
118
103
  - - ~>
119
- - !ruby/object:Gem::Version
104
+ - !ruby/object:Gem::Version
105
+ hash: 59
106
+ segments:
107
+ - 0
108
+ - 9
109
+ - 0
120
110
  version: 0.9.0
121
- - !ruby/object:Gem::Dependency
122
- name: ZenTest
123
- requirement: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - ~>
126
- - !ruby/object:Gem::Version
127
- version: '4.5'
128
111
  type: :development
112
+ version_requirements: *id006
113
+ - !ruby/object:Gem::Dependency
114
+ name: ZenTest
129
115
  prerelease: false
130
- version_requirements: !ruby/object:Gem::Requirement
131
- requirements:
116
+ requirement: &id007 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
132
119
  - - ~>
133
- - !ruby/object:Gem::Version
134
- version: '4.5'
135
- - !ruby/object:Gem::Dependency
136
- name: hoe
137
- requirement: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: '3.7'
120
+ - !ruby/object:Gem::Version
121
+ hash: 17
122
+ segments:
123
+ - 4
124
+ - 5
125
+ version: "4.5"
142
126
  type: :development
127
+ version_requirements: *id007
128
+ - !ruby/object:Gem::Dependency
129
+ name: hoe
143
130
  prerelease: false
144
- version_requirements: !ruby/object:Gem::Requirement
145
- requirements:
131
+ requirement: &id008 !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
146
134
  - - ~>
147
- - !ruby/object:Gem::Version
148
- version: '3.7'
135
+ - !ruby/object:Gem::Version
136
+ hash: 31
137
+ segments:
138
+ - 2
139
+ - 14
140
+ version: "2.14"
141
+ type: :development
142
+ version_requirements: *id008
149
143
  description: |-
150
144
  RubyGems is a package management framework for Ruby.
151
-
145
+
152
146
  This gem is an update for the RubyGems software. You must have an
153
147
  installation of RubyGems before this update can be applied.
154
-
148
+
155
149
  See Gem for information on RubyGems (or `ri Gem`)
156
-
150
+
157
151
  To upgrade to the latest RubyGems, run:
158
-
152
+
159
153
  $ gem update --system # you might need to be an administrator or root
160
-
154
+
161
155
  See UPGRADING.rdoc for more details and alternative instructions.
162
-
156
+
163
157
  -----
164
-
158
+
165
159
  If you don't have RubyGems installed, your can still do it manually:
166
-
160
+
167
161
  * Download from: https://rubygems.org/pages/download
168
162
  * Unpack into a directory and cd there
169
163
  * Install with: ruby setup.rb # you may need admin/root privilege
170
-
164
+
171
165
  For more details and other options, see:
172
-
166
+
173
167
  ruby setup.rb --help
174
- email:
168
+ email:
175
169
  - rubygems-developers@rubyforge.org
176
- executables:
170
+ executables:
177
171
  - update_rubygems
178
172
  extensions: []
179
- extra_rdoc_files:
180
- - CVE-2013-4287.txt
181
- - CVE-2013-4363.txt
173
+
174
+ extra_rdoc_files:
182
175
  - History.txt
183
176
  - LICENSE.txt
184
177
  - MIT.txt
@@ -186,11 +179,9 @@ extra_rdoc_files:
186
179
  - README.rdoc
187
180
  - UPGRADING.rdoc
188
181
  - hide_lib_for_update/note.txt
189
- files:
182
+ files:
190
183
  - .autotest
191
184
  - .document
192
- - CVE-2013-4287.txt
193
- - CVE-2013-4363.txt
194
185
  - History.txt
195
186
  - LICENSE.txt
196
187
  - MIT.txt
@@ -393,33 +384,43 @@ files:
393
384
  - util/CL2notes
394
385
  - .gemtest
395
386
  homepage: http://rubygems.org
396
- licenses:
397
- - MIT
398
- metadata: {}
387
+ licenses: []
388
+
399
389
  post_install_message:
400
- rdoc_options:
390
+ rdoc_options:
401
391
  - --main
402
392
  - README.rdoc
403
- - --title=RubyGems 1.8.23.2 Documentation
404
- require_paths:
393
+ - --title=RubyGems 1.8.24 Documentation
394
+ require_paths:
405
395
  - hide_lib_for_update
406
- required_ruby_version: !ruby/object:Gem::Requirement
407
- requirements:
408
- - - '>='
409
- - !ruby/object:Gem::Version
396
+ required_ruby_version: !ruby/object:Gem::Requirement
397
+ none: false
398
+ requirements:
399
+ - - ">="
400
+ - !ruby/object:Gem::Version
401
+ hash: 57
402
+ segments:
403
+ - 1
404
+ - 8
405
+ - 7
410
406
  version: 1.8.7
411
- required_rubygems_version: !ruby/object:Gem::Requirement
412
- requirements:
413
- - - '>='
414
- - !ruby/object:Gem::Version
415
- version: '0'
407
+ required_rubygems_version: !ruby/object:Gem::Requirement
408
+ none: false
409
+ requirements:
410
+ - - ">="
411
+ - !ruby/object:Gem::Version
412
+ hash: 3
413
+ segments:
414
+ - 0
415
+ version: "0"
416
416
  requirements: []
417
+
417
418
  rubyforge_project: rubygems
418
- rubygems_version: 2.1.4
419
+ rubygems_version: 1.8.18
419
420
  signing_key:
420
- specification_version: 4
421
+ specification_version: 3
421
422
  summary: RubyGems is a package management framework for Ruby
422
- test_files:
423
+ test_files:
423
424
  - test/rubygems/test_config.rb
424
425
  - test/rubygems/test_gem.rb
425
426
  - test/rubygems/test_gem_builder.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 4485176fa4a497c3790dc6a32bd8e55bb2f77534
4
- data.tar.gz: 6dc935f3b3e6ec40bb7200a3a3809395f2020e70
5
- SHA512:
6
- metadata.gz: baf41d09f58583dc2e7576c16cca00a10831f12c446f570acec68cafcaedf15c202c208c65fdb20b0df28c9545189b4f78ddec0db24340bf05b2697db4eb5b38
7
- data.tar.gz: c971a892d2221997ac3bb54f1ffc44a171c2c956605a9127acc99415890d30e390052f1fdd458ea016fd55499ad4309fc2b0f7093b9997c71232c3ba268b0cf4
@@ -1,2 +0,0 @@
1
- j�C_1�  R|�A���3(h�@�d~|${�]"��yz�{zbJm��v�"�F4�7���y�Cn;jD�4B%�4��c��8�<1|�/A2,bi������~Hk��
2
- �����e
data.tar.gz.sig DELETED
Binary file
@@ -1,36 +0,0 @@
1
- = Algorithmic complexity vulnerability in RubyGems 2.0.7 and older
2
-
3
- RubyGems validates versions with a regular expression that is vulnerable to
4
- denial of service due to a backtracking regular expression. For specially
5
- crafted RubyGems versions attackers can cause denial of service through CPU
6
- consumption.
7
-
8
- RubyGems versions 2.0.7 and older, 2.1.0.rc.1 and 2.1.0.rc.2 are vulnerable.
9
-
10
- Ruby versions 1.9.0 through 2.0.0p247 are vulnerable as they contain embedded
11
- versions of RubyGems.
12
-
13
- It does not appear to be possible to exploit this vulnerability by installing a
14
- gem for RubyGems 1.8.x or 2.0.x. Vulnerable uses of RubyGems API include
15
- packaging a gem (through `gem build`, Gem::Package or Gem::PackageTask),
16
- sending user input to Gem::Version.new, Gem::Version.correct? or use of the
17
- Gem::Version::VERSION_PATTERN or Gem::Version::ANCHORED_VERSION_PATTERN
18
- constants.
19
-
20
- Notably, users of bundler that install gems from git are vulnerable if a
21
- malicious author changes the gemspec to an invalid version.
22
-
23
- The vulnerability can be fixed by changing the first grouping to an atomic
24
- grouping in Gem::Version::VERSION_PATTERN in lib/rubygems/version.rb. For
25
- RubyGems 2.0.x:
26
-
27
- - VERSION_PATTERN = '[0-9]+(\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
28
- + VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
29
-
30
- For RubyGems 1.8.x:
31
-
32
- - VERSION_PATTERN = '[0-9]+(\.[0-9a-zA-Z]+)*' # :nodoc:
33
- + VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*' # :nodoc:
34
-
35
- This vulnerability was discovered by Damir Sharipov <dammer2k@gmail.com>
36
-
@@ -1,45 +0,0 @@
1
- = Algorithmic complexity vulnerability in RubyGems 2.1.4 and older
2
-
3
- The patch for CVE-2013-4287 was insufficiently verified so the combined
4
- regular expression for verifying gem version remains vulnerable following
5
- CVE-2013-4287.
6
-
7
- RubyGems validates versions with a regular expression that is vulnerable to
8
- denial of service due to backtracking. For specially crafted RubyGems
9
- versions attackers can cause denial of service through CPU consumption.
10
-
11
- RubyGems versions 2.1.4 and older are vulnerable.
12
-
13
- Ruby versions 1.9.0 through 2.0.0p247 are vulnerable as they contain embedded
14
- versions of RubyGems.
15
-
16
- It does not appear to be possible to exploit this vulnerability by installing a
17
- gem for RubyGems 1.8.x or newer. Vulnerable uses of RubyGems API include
18
- packaging a gem (through `gem build`, Gem::Package or Gem::PackageTask),
19
- sending user input to Gem::Version.new, Gem::Version.correct? or use of the
20
- Gem::Version::VERSION_PATTERN or Gem::Version::ANCHORED_VERSION_PATTERN
21
- constants.
22
-
23
- Notably, users of bundler that install gems from git are vulnerable if a
24
- malicious author changes the gemspec to an invalid version.
25
-
26
- The vulnerability can be fixed by changing the "*" repetition to a "?"
27
- repetition in Gem::Version::ANCHORED_VERSION_PATTERN in
28
- lib/rubygems/version.rb. For RubyGems 2.1.x:
29
-
30
- - ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})*\s*\z/ # :nodoc:
31
- + ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/ # :nodoc:
32
-
33
- For RubyGems 2.0.x:
34
-
35
- - ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})*\s*\z/ # :nodoc:
36
- + ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/ # :nodoc:
37
-
38
- For RubyGems 1.8.x:
39
-
40
- - ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})*\s*\z/ # :nodoc:
41
- + ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/ # :nodoc:
42
-
43
-
44
- This vulnerability was discovered by Alexander Cherepanov <cherepan@mccme.ru>
45
-
metadata.gz.sig DELETED
Binary file