rubygems-update 2.7.11 → 3.0.9

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.
Files changed (359) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +67 -0
  3. data/.travis.yml +24 -18
  4. data/CODE_OF_CONDUCT.md +10 -8
  5. data/CONTRIBUTING.md +148 -0
  6. data/History.txt +458 -8
  7. data/MAINTAINERS.txt +1 -0
  8. data/Manifest.txt +16 -9
  9. data/POLICIES.md +92 -0
  10. data/README.md +53 -26
  11. data/Rakefile +77 -211
  12. data/{UPGRADING.rdoc → UPGRADING.md} +31 -32
  13. data/appveyor.yml +20 -45
  14. data/bin/gem +1 -2
  15. data/bin/update_rubygems +2 -3
  16. data/bundler/CHANGELOG.md +65 -0
  17. data/bundler/bundler.gemspec +7 -1
  18. data/bundler/lib/bundler/build_metadata.rb +1 -1
  19. data/bundler/lib/bundler/cli/add.rb +15 -5
  20. data/bundler/lib/bundler/cli/binstubs.rb +8 -2
  21. data/bundler/lib/bundler/cli/doctor.rb +47 -1
  22. data/bundler/lib/bundler/cli/install.rb +8 -5
  23. data/bundler/lib/bundler/cli/list.rb +41 -5
  24. data/bundler/lib/bundler/cli/outdated.rb +7 -1
  25. data/bundler/lib/bundler/cli/pristine.rb +4 -0
  26. data/bundler/lib/bundler/cli/remove.rb +18 -0
  27. data/bundler/lib/bundler/cli.rb +63 -21
  28. data/bundler/lib/bundler/definition.rb +15 -16
  29. data/bundler/lib/bundler/dependency.rb +2 -2
  30. data/bundler/lib/bundler/dsl.rb +19 -3
  31. data/bundler/lib/bundler/feature_flag.rb +7 -0
  32. data/bundler/lib/bundler/gem_version_promoter.rb +4 -2
  33. data/bundler/lib/bundler/injector.rb +168 -9
  34. data/bundler/lib/bundler/installer/parallel_installer.rb +5 -0
  35. data/bundler/lib/bundler/installer.rb +29 -6
  36. data/bundler/lib/bundler/plugin/events.rb +61 -0
  37. data/bundler/lib/bundler/plugin.rb +10 -3
  38. data/bundler/lib/bundler/resolver.rb +2 -2
  39. data/bundler/lib/bundler/rubygems_gem_installer.rb +7 -0
  40. data/bundler/lib/bundler/runtime.rb +8 -2
  41. data/bundler/lib/bundler/settings/validator.rb +23 -0
  42. data/bundler/lib/bundler/settings.rb +24 -3
  43. data/bundler/lib/bundler/shared_helpers.rb +19 -3
  44. data/bundler/lib/bundler/source/metadata.rb +2 -3
  45. data/bundler/lib/bundler/source.rb +9 -9
  46. data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +1 -0
  47. data/bundler/lib/bundler/version.rb +1 -1
  48. data/bundler/lib/bundler.rb +26 -8
  49. data/bundler/man/bundle-add.ronn +13 -2
  50. data/bundler/man/bundle-config.ronn +21 -0
  51. data/bundler/man/bundle-install.ronn +1 -1
  52. data/bundler/man/bundle-list.ronn +19 -1
  53. data/bundler/man/bundle-outdated.ronn +4 -0
  54. data/bundler/man/bundle-remove.ronn +23 -0
  55. data/bundler/man/bundle-update.ronn +1 -1
  56. data/bundler/man/bundle.ronn +3 -0
  57. data/lib/rubygems/available_set.rb +1 -1
  58. data/lib/rubygems/basic_specification.rb +12 -12
  59. data/lib/rubygems/bundler_version_finder.rb +3 -3
  60. data/lib/rubygems/command.rb +22 -15
  61. data/lib/rubygems/command_manager.rb +22 -5
  62. data/lib/rubygems/commands/build_command.rb +41 -7
  63. data/lib/rubygems/commands/cert_command.rb +45 -24
  64. data/lib/rubygems/commands/check_command.rb +1 -1
  65. data/lib/rubygems/commands/cleanup_command.rb +14 -7
  66. data/lib/rubygems/commands/contents_command.rb +14 -15
  67. data/lib/rubygems/commands/dependency_command.rb +17 -17
  68. data/lib/rubygems/commands/environment_command.rb +20 -1
  69. data/lib/rubygems/commands/fetch_command.rb +2 -3
  70. data/lib/rubygems/commands/generate_index_command.rb +2 -3
  71. data/lib/rubygems/commands/help_command.rb +12 -13
  72. data/lib/rubygems/commands/info_command.rb +33 -0
  73. data/lib/rubygems/commands/install_command.rb +21 -17
  74. data/lib/rubygems/commands/list_command.rb +0 -1
  75. data/lib/rubygems/commands/lock_command.rb +3 -4
  76. data/lib/rubygems/commands/open_command.rb +16 -10
  77. data/lib/rubygems/commands/owner_command.rb +21 -7
  78. data/lib/rubygems/commands/pristine_command.rb +23 -16
  79. data/lib/rubygems/commands/push_command.rb +19 -8
  80. data/lib/rubygems/commands/query_command.rb +24 -24
  81. data/lib/rubygems/commands/rdoc_command.rb +3 -4
  82. data/lib/rubygems/commands/search_command.rb +0 -1
  83. data/lib/rubygems/commands/server_command.rb +1 -2
  84. data/lib/rubygems/commands/setup_command.rb +86 -48
  85. data/lib/rubygems/commands/signin_command.rb +2 -1
  86. data/lib/rubygems/commands/signout_command.rb +2 -2
  87. data/lib/rubygems/commands/sources_command.rb +11 -12
  88. data/lib/rubygems/commands/specification_command.rb +7 -7
  89. data/lib/rubygems/commands/uninstall_command.rb +50 -18
  90. data/lib/rubygems/commands/unpack_command.rb +16 -7
  91. data/lib/rubygems/commands/update_command.rb +28 -23
  92. data/lib/rubygems/commands/which_command.rb +5 -8
  93. data/lib/rubygems/commands/yank_command.rb +1 -2
  94. data/lib/rubygems/compatibility.rb +1 -21
  95. data/lib/rubygems/config_file.rb +36 -36
  96. data/lib/rubygems/core_ext/kernel_require.rb +6 -6
  97. data/lib/rubygems/core_ext/kernel_warn.rb +45 -0
  98. data/lib/rubygems/defaults.rb +31 -19
  99. data/lib/rubygems/dependency.rb +15 -15
  100. data/lib/rubygems/dependency_installer.rb +30 -33
  101. data/lib/rubygems/dependency_list.rb +9 -10
  102. data/lib/rubygems/deprecate.rb +2 -3
  103. data/lib/rubygems/doctor.rb +5 -6
  104. data/lib/rubygems/errors.rb +3 -3
  105. data/lib/rubygems/exceptions.rb +11 -8
  106. data/lib/rubygems/ext/build_error.rb +0 -1
  107. data/lib/rubygems/ext/builder.rb +50 -23
  108. data/lib/rubygems/ext/cmake_builder.rb +2 -2
  109. data/lib/rubygems/ext/configure_builder.rb +2 -3
  110. data/lib/rubygems/ext/ext_conf_builder.rb +8 -7
  111. data/lib/rubygems/ext/rake_builder.rb +16 -18
  112. data/lib/rubygems/ext.rb +0 -1
  113. data/lib/rubygems/gem_runner.rb +2 -2
  114. data/lib/rubygems/gemcutter_utilities.rb +46 -12
  115. data/lib/rubygems/indexer.rb +19 -12
  116. data/lib/rubygems/install_default_message.rb +0 -1
  117. data/lib/rubygems/install_message.rb +0 -1
  118. data/lib/rubygems/install_update_options.rb +3 -29
  119. data/lib/rubygems/installer.rb +97 -55
  120. data/lib/rubygems/installer_test_case.rb +2 -16
  121. data/lib/rubygems/local_remote_options.rb +5 -4
  122. data/lib/rubygems/mock_gem_ui.rb +3 -4
  123. data/lib/rubygems/name_tuple.rb +4 -4
  124. data/lib/rubygems/package/digest_io.rb +3 -4
  125. data/lib/rubygems/package/file_source.rb +3 -4
  126. data/lib/rubygems/package/io_source.rb +1 -2
  127. data/lib/rubygems/package/old.rb +8 -16
  128. data/lib/rubygems/package/source.rb +0 -1
  129. data/lib/rubygems/package/tar_header.rb +13 -4
  130. data/lib/rubygems/package/tar_reader/entry.rb +20 -4
  131. data/lib/rubygems/package/tar_reader.rb +2 -4
  132. data/lib/rubygems/package/tar_test_case.rb +2 -8
  133. data/lib/rubygems/package/tar_writer.rb +13 -15
  134. data/lib/rubygems/package.rb +90 -63
  135. data/lib/rubygems/package_task.rb +0 -1
  136. data/lib/rubygems/path_support.rb +16 -6
  137. data/lib/rubygems/platform.rb +4 -5
  138. data/lib/rubygems/psych_tree.rb +1 -1
  139. data/lib/rubygems/rdoc.rb +2 -313
  140. data/lib/rubygems/remote_fetcher.rb +29 -82
  141. data/lib/rubygems/request/connection_pools.rb +24 -13
  142. data/lib/rubygems/request/http_pool.rb +3 -4
  143. data/lib/rubygems/request/https_pool.rb +1 -3
  144. data/lib/rubygems/request.rb +17 -16
  145. data/lib/rubygems/request_set/gem_dependency_api.rb +46 -49
  146. data/lib/rubygems/request_set/lockfile/parser.rb +18 -29
  147. data/lib/rubygems/request_set/lockfile/tokenizer.rb +9 -9
  148. data/lib/rubygems/request_set/lockfile.rb +12 -12
  149. data/lib/rubygems/request_set.rb +52 -25
  150. data/lib/rubygems/requirement.rb +32 -21
  151. data/lib/rubygems/resolver/activation_request.rb +6 -6
  152. data/lib/rubygems/resolver/api_set.rb +5 -6
  153. data/lib/rubygems/resolver/api_specification.rb +2 -3
  154. data/lib/rubygems/resolver/best_set.rb +5 -6
  155. data/lib/rubygems/resolver/composed_set.rb +5 -6
  156. data/lib/rubygems/resolver/conflict.rb +5 -5
  157. data/lib/rubygems/resolver/current_set.rb +1 -2
  158. data/lib/rubygems/resolver/dependency_request.rb +4 -4
  159. data/lib/rubygems/resolver/git_set.rb +5 -6
  160. data/lib/rubygems/resolver/git_specification.rb +4 -5
  161. data/lib/rubygems/resolver/index_set.rb +5 -6
  162. data/lib/rubygems/resolver/index_specification.rb +3 -4
  163. data/lib/rubygems/resolver/installed_specification.rb +3 -4
  164. data/lib/rubygems/resolver/installer_set.rb +12 -12
  165. data/lib/rubygems/resolver/local_specification.rb +1 -2
  166. data/lib/rubygems/resolver/lock_set.rb +5 -6
  167. data/lib/rubygems/resolver/lock_specification.rb +7 -8
  168. data/lib/rubygems/resolver/requirement_list.rb +1 -1
  169. data/lib/rubygems/resolver/set.rb +2 -2
  170. data/lib/rubygems/resolver/source_set.rb +4 -5
  171. data/lib/rubygems/resolver/spec_specification.rb +1 -2
  172. data/lib/rubygems/resolver/specification.rb +10 -7
  173. data/lib/rubygems/resolver/stats.rb +1 -1
  174. data/lib/rubygems/resolver/vendor_set.rb +4 -5
  175. data/lib/rubygems/resolver/vendor_specification.rb +2 -3
  176. data/lib/rubygems/resolver.rb +14 -16
  177. data/lib/rubygems/s3_uri_signer.rb +183 -0
  178. data/lib/rubygems/safe_yaml.rb +18 -10
  179. data/lib/rubygems/security/policies.rb +1 -2
  180. data/lib/rubygems/security/policy.rb +25 -25
  181. data/lib/rubygems/security/signer.rb +72 -24
  182. data/lib/rubygems/security/trust_dir.rb +10 -10
  183. data/lib/rubygems/security.rb +21 -22
  184. data/lib/rubygems/security_option.rb +0 -1
  185. data/lib/rubygems/server.rb +21 -21
  186. data/lib/rubygems/source/git.rb +9 -10
  187. data/lib/rubygems/source/installed.rb +3 -4
  188. data/lib/rubygems/source/local.rb +7 -7
  189. data/lib/rubygems/source/lock.rb +4 -4
  190. data/lib/rubygems/source/specific_file.rb +5 -5
  191. data/lib/rubygems/source/vendor.rb +2 -3
  192. data/lib/rubygems/source.rb +16 -25
  193. data/lib/rubygems/source_list.rb +2 -2
  194. data/lib/rubygems/source_local.rb +0 -1
  195. data/lib/rubygems/spec_fetcher.rb +5 -6
  196. data/lib/rubygems/specification.rb +219 -558
  197. data/lib/rubygems/specification_policy.rb +407 -0
  198. data/lib/rubygems/stub_specification.rb +12 -17
  199. data/lib/rubygems/test_case.rb +161 -75
  200. data/lib/rubygems/test_utilities.rb +20 -35
  201. data/lib/rubygems/text.rb +6 -6
  202. data/lib/rubygems/uninstaller.rb +38 -27
  203. data/lib/rubygems/uri_formatter.rb +1 -2
  204. data/lib/rubygems/user_interaction.rb +37 -89
  205. data/lib/rubygems/util/licenses.rb +27 -1
  206. data/lib/rubygems/util/list.rb +1 -1
  207. data/lib/rubygems/util.rb +32 -14
  208. data/lib/rubygems/validator.rb +4 -5
  209. data/lib/rubygems/version.rb +15 -15
  210. data/lib/rubygems/version_option.rb +2 -3
  211. data/lib/rubygems.rb +71 -102
  212. data/rubygems-update.gemspec +43 -0
  213. data/setup.rb +2 -8
  214. data/test/rubygems/ca_cert.pem +74 -65
  215. data/test/rubygems/client.pem +103 -45
  216. data/test/rubygems/rubygems_plugin.rb +0 -1
  217. data/test/rubygems/simple_gem.rb +1 -1
  218. data/test/rubygems/ssl_cert.pem +78 -17
  219. data/test/rubygems/ssl_key.pem +25 -13
  220. data/test/rubygems/test_bundled_ca.rb +1 -1
  221. data/test/rubygems/test_config.rb +7 -2
  222. data/test/rubygems/test_gem.rb +205 -132
  223. data/test/rubygems/test_gem_bundler_version_finder.rb +4 -0
  224. data/test/rubygems/test_gem_command.rb +0 -1
  225. data/test/rubygems/test_gem_command_manager.rb +18 -3
  226. data/test/rubygems/test_gem_commands_build_command.rb +220 -15
  227. data/test/rubygems/test_gem_commands_cert_command.rb +69 -8
  228. data/test/rubygems/test_gem_commands_check_command.rb +1 -1
  229. data/test/rubygems/test_gem_commands_cleanup_command.rb +27 -1
  230. data/test/rubygems/test_gem_commands_contents_command.rb +1 -2
  231. data/test/rubygems/test_gem_commands_dependency_command.rb +33 -34
  232. data/test/rubygems/test_gem_commands_environment_command.rb +1 -0
  233. data/test/rubygems/test_gem_commands_fetch_command.rb +0 -1
  234. data/test/rubygems/test_gem_commands_generate_index_command.rb +0 -1
  235. data/test/rubygems/test_gem_commands_help_command.rb +7 -4
  236. data/test/rubygems/test_gem_commands_info_command.rb +44 -0
  237. data/test/rubygems/test_gem_commands_install_command.rb +79 -12
  238. data/test/rubygems/test_gem_commands_lock_command.rb +0 -1
  239. data/test/rubygems/test_gem_commands_open_command.rb +29 -0
  240. data/test/rubygems/test_gem_commands_outdated_command.rb +0 -1
  241. data/test/rubygems/test_gem_commands_owner_command.rb +93 -57
  242. data/test/rubygems/test_gem_commands_pristine_command.rb +65 -30
  243. data/test/rubygems/test_gem_commands_push_command.rb +54 -0
  244. data/test/rubygems/test_gem_commands_query_command.rb +102 -100
  245. data/test/rubygems/test_gem_commands_search_command.rb +0 -1
  246. data/test/rubygems/test_gem_commands_server_command.rb +0 -1
  247. data/test/rubygems/test_gem_commands_setup_command.rb +50 -15
  248. data/test/rubygems/test_gem_commands_signin_command.rb +1 -1
  249. data/test/rubygems/test_gem_commands_sources_command.rb +0 -1
  250. data/test/rubygems/test_gem_commands_specification_command.rb +2 -3
  251. data/test/rubygems/test_gem_commands_stale_command.rb +3 -2
  252. data/test/rubygems/test_gem_commands_uninstall_command.rb +161 -8
  253. data/test/rubygems/test_gem_commands_unpack_command.rb +17 -1
  254. data/test/rubygems/test_gem_commands_update_command.rb +19 -2
  255. data/test/rubygems/test_gem_commands_which_command.rb +0 -1
  256. data/test/rubygems/test_gem_commands_yank_command.rb +0 -1
  257. data/test/rubygems/test_gem_config_file.rb +4 -2
  258. data/test/rubygems/test_gem_dependency.rb +0 -1
  259. data/test/rubygems/test_gem_dependency_installer.rb +8 -5
  260. data/test/rubygems/test_gem_dependency_list.rb +6 -7
  261. data/test/rubygems/test_gem_dependency_resolution_error.rb +0 -1
  262. data/test/rubygems/test_gem_doctor.rb +1 -2
  263. data/test/rubygems/test_gem_ext_builder.rb +10 -23
  264. data/test/rubygems/test_gem_ext_cmake_builder.rb +5 -4
  265. data/test/rubygems/test_gem_ext_configure_builder.rb +3 -3
  266. data/test/rubygems/test_gem_ext_ext_conf_builder.rb +8 -9
  267. data/test/rubygems/test_gem_ext_rake_builder.rb +20 -5
  268. data/test/rubygems/test_gem_gem_runner.rb +0 -1
  269. data/test/rubygems/test_gem_gemcutter_utilities.rb +32 -6
  270. data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -1
  271. data/test/rubygems/test_gem_indexer.rb +16 -10
  272. data/test/rubygems/test_gem_install_update_options.rb +1 -20
  273. data/test/rubygems/test_gem_installer.rb +154 -119
  274. data/test/rubygems/test_gem_local_remote_options.rb +3 -3
  275. data/test/rubygems/test_gem_name_tuple.rb +0 -1
  276. data/test/rubygems/test_gem_package.rb +77 -31
  277. data/test/rubygems/test_gem_package_old.rb +0 -1
  278. data/test/rubygems/test_gem_package_tar_header.rb +42 -2
  279. data/test/rubygems/test_gem_package_tar_reader.rb +0 -1
  280. data/test/rubygems/test_gem_package_tar_reader_entry.rb +11 -0
  281. data/test/rubygems/test_gem_package_tar_writer.rb +43 -7
  282. data/test/rubygems/test_gem_package_task.rb +2 -2
  283. data/test/rubygems/test_gem_path_support.rb +28 -11
  284. data/test/rubygems/test_gem_platform.rb +4 -5
  285. data/test/rubygems/test_gem_rdoc.rb +1 -136
  286. data/test/rubygems/test_gem_remote_fetcher.rb +241 -141
  287. data/test/rubygems/test_gem_request.rb +9 -9
  288. data/test/rubygems/test_gem_request_connection_pools.rb +24 -3
  289. data/test/rubygems/test_gem_request_set.rb +5 -5
  290. data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +82 -64
  291. data/test/rubygems/test_gem_request_set_lockfile.rb +1 -2
  292. data/test/rubygems/test_gem_request_set_lockfile_parser.rb +4 -9
  293. data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +1 -1
  294. data/test/rubygems/test_gem_requirement.rb +24 -4
  295. data/test/rubygems/test_gem_resolver.rb +13 -17
  296. data/test/rubygems/test_gem_resolver_activation_request.rb +0 -1
  297. data/test/rubygems/test_gem_resolver_api_set.rb +0 -1
  298. data/test/rubygems/test_gem_resolver_api_specification.rb +0 -1
  299. data/test/rubygems/test_gem_resolver_best_set.rb +0 -1
  300. data/test/rubygems/test_gem_resolver_composed_set.rb +0 -1
  301. data/test/rubygems/test_gem_resolver_conflict.rb +0 -1
  302. data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -1
  303. data/test/rubygems/test_gem_resolver_git_set.rb +0 -1
  304. data/test/rubygems/test_gem_resolver_git_specification.rb +0 -1
  305. data/test/rubygems/test_gem_resolver_index_set.rb +0 -1
  306. data/test/rubygems/test_gem_resolver_index_specification.rb +0 -1
  307. data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -1
  308. data/test/rubygems/test_gem_resolver_installer_set.rb +2 -3
  309. data/test/rubygems/test_gem_resolver_local_specification.rb +0 -1
  310. data/test/rubygems/test_gem_resolver_lock_set.rb +0 -1
  311. data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -1
  312. data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -1
  313. data/test/rubygems/test_gem_resolver_specification.rb +1 -2
  314. data/test/rubygems/test_gem_resolver_vendor_set.rb +0 -1
  315. data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -1
  316. data/test/rubygems/test_gem_security.rb +1 -3
  317. data/test/rubygems/test_gem_security_policy.rb +5 -6
  318. data/test/rubygems/test_gem_security_signer.rb +4 -3
  319. data/test/rubygems/test_gem_security_trust_dir.rb +1 -2
  320. data/test/rubygems/test_gem_server.rb +4 -4
  321. data/test/rubygems/test_gem_source.rb +0 -13
  322. data/test/rubygems/test_gem_source_fetch_problem.rb +0 -1
  323. data/test/rubygems/test_gem_source_git.rb +0 -1
  324. data/test/rubygems/test_gem_source_installed.rb +0 -1
  325. data/test/rubygems/test_gem_source_lock.rb +0 -1
  326. data/test/rubygems/test_gem_source_vendor.rb +0 -1
  327. data/test/rubygems/test_gem_spec_fetcher.rb +0 -1
  328. data/test/rubygems/test_gem_specification.rb +366 -198
  329. data/test/rubygems/test_gem_stream_ui.rb +15 -32
  330. data/test/rubygems/test_gem_stub_specification.rb +0 -2
  331. data/test/rubygems/test_gem_text.rb +4 -0
  332. data/test/rubygems/test_gem_uninstaller.rb +42 -3
  333. data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -1
  334. data/test/rubygems/test_gem_uri_formatter.rb +0 -1
  335. data/test/rubygems/test_gem_util.rb +31 -11
  336. data/test/rubygems/test_gem_validator.rb +0 -1
  337. data/test/rubygems/test_gem_version.rb +11 -11
  338. data/test/rubygems/test_gem_version_option.rb +0 -1
  339. data/test/rubygems/test_remote_fetch_error.rb +0 -1
  340. data/test/rubygems/test_require.rb +67 -52
  341. data/util/CL2notes +1 -2
  342. data/util/ci +20 -12
  343. data/util/cops/deprecations.rb +52 -0
  344. data/util/create_certs.rb +6 -7
  345. data/util/create_certs.sh +27 -0
  346. data/util/create_encrypted_key.rb +4 -5
  347. data/util/patch_with_prs.rb +1 -1
  348. data/util/rubocop +8 -0
  349. data/util/update_bundled_ca_certificates.rb +12 -13
  350. data/util/update_changelog.rb +1 -1
  351. metadata +61 -51
  352. data/.autotest +0 -71
  353. data/.document +0 -5
  354. data/CONTRIBUTING.rdoc +0 -130
  355. data/CVE-2013-4287.txt +0 -35
  356. data/CVE-2013-4363.txt +0 -45
  357. data/CVE-2015-3900.txt +0 -40
  358. data/POLICIES.rdoc +0 -74
  359. data/test/rubygems/fix_openssl_warnings.rb +0 -13
metadata CHANGED
@@ -1,12 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygems-update
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.11
4
+ version: 3.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
8
8
  - Chad Fowler
9
9
  - Eric Hodel
10
+ - Luis Lavena
11
+ - Aaron Patterson
12
+ - Samuel Giddins
13
+ - André Arko
14
+ - Evan Phoenix
15
+ - Hiroshi SHIBATA
10
16
  autorequire:
11
17
  bindir: bin
12
18
  cert_chain: []
@@ -18,118 +24,115 @@ dependencies:
18
24
  requirements:
19
25
  - - "~>"
20
26
  - !ruby/object:Gem::Version
21
- version: '2.1'
27
+ version: '3.0'
22
28
  type: :development
23
29
  prerelease: false
24
30
  version_requirements: !ruby/object:Gem::Requirement
25
31
  requirements:
26
32
  - - "~>"
27
33
  - !ruby/object:Gem::Version
28
- version: '2.1'
29
- - !ruby/object:Gem::Dependency
30
- name: hoe-seattlerb
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - "~>"
34
- - !ruby/object:Gem::Version
35
- version: '1.2'
36
- type: :development
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '1.2'
34
+ version: '3.0'
43
35
  - !ruby/object:Gem::Dependency
44
36
  name: rdoc
45
37
  requirement: !ruby/object:Gem::Requirement
46
38
  requirements:
47
39
  - - "~>"
48
40
  - !ruby/object:Gem::Version
49
- version: '4.0'
41
+ version: '6.0'
50
42
  type: :development
51
43
  prerelease: false
52
44
  version_requirements: !ruby/object:Gem::Requirement
53
45
  requirements:
54
46
  - - "~>"
55
47
  - !ruby/object:Gem::Version
56
- version: '4.0'
48
+ version: '6.0'
57
49
  - !ruby/object:Gem::Dependency
58
- name: ZenTest
50
+ name: rake
59
51
  requirement: !ruby/object:Gem::Requirement
60
52
  requirements:
61
53
  - - "~>"
62
54
  - !ruby/object:Gem::Version
63
- version: '4.5'
55
+ version: '12.0'
64
56
  type: :development
65
57
  prerelease: false
66
58
  version_requirements: !ruby/object:Gem::Requirement
67
59
  requirements:
68
60
  - - "~>"
69
61
  - !ruby/object:Gem::Version
70
- version: '4.5'
62
+ version: '12.0'
71
63
  - !ruby/object:Gem::Dependency
72
- name: rake
64
+ name: minitest
73
65
  requirement: !ruby/object:Gem::Requirement
74
66
  requirements:
75
67
  - - "~>"
76
68
  - !ruby/object:Gem::Version
77
- version: '10.5'
69
+ version: '5.0'
78
70
  type: :development
79
71
  prerelease: false
80
72
  version_requirements: !ruby/object:Gem::Requirement
81
73
  requirements:
82
74
  - - "~>"
83
75
  - !ruby/object:Gem::Version
84
- version: '10.5'
76
+ version: '5.0'
85
77
  - !ruby/object:Gem::Dependency
86
- name: minitest
78
+ name: simplecov
87
79
  requirement: !ruby/object:Gem::Requirement
88
80
  requirements:
89
81
  - - "~>"
90
82
  - !ruby/object:Gem::Version
91
- version: '4.0'
83
+ version: '0'
92
84
  type: :development
93
85
  prerelease: false
94
86
  version_requirements: !ruby/object:Gem::Requirement
95
87
  requirements:
96
88
  - - "~>"
97
89
  - !ruby/object:Gem::Version
98
- version: '4.0'
90
+ version: '0'
99
91
  - !ruby/object:Gem::Dependency
100
- name: hoe
92
+ name: rubocop
101
93
  requirement: !ruby/object:Gem::Requirement
102
94
  requirements:
103
95
  - - "~>"
104
96
  - !ruby/object:Gem::Version
105
- version: '3.15'
97
+ version: 0.60.0
106
98
  type: :development
107
99
  prerelease: false
108
100
  version_requirements: !ruby/object:Gem::Requirement
109
101
  requirements:
110
102
  - - "~>"
111
103
  - !ruby/object:Gem::Version
112
- version: '3.15'
113
- description: ''
104
+ version: 0.60.0
105
+ description: |-
106
+ A package (also known as a library) contains a set of functionality
107
+ that can be invoked by a Ruby program, such as reading and parsing an XML file. We call
108
+ these packages 'gems' and RubyGems is a tool to install, create, manage and load these
109
+ packages in your Ruby environment. RubyGems is also a client for RubyGems.org, a public
110
+ repository of Gems that allows you to publish a Gem that can be shared and used by other
111
+ developers. See our guide on publishing a Gem at guides.rubygems.org
114
112
  email:
115
- - rubygems-developers@rubyforge.org
113
+ - ''
114
+ - ''
115
+ - drbrain@segment7.net
116
+ - luislavena@gmail.com
117
+ - aaron@tenderlovemaking.com
118
+ - segiddins@segiddins.me
119
+ - andre@arko.net
120
+ - evan@phx.io
121
+ - hsbt@ruby-lang.org
116
122
  executables:
117
123
  - update_rubygems
118
124
  extensions: []
119
125
  extra_rdoc_files:
120
- - CODE_OF_CONDUCT.md
121
- - CONTRIBUTING.rdoc
122
- - CVE-2013-4287.txt
123
- - CVE-2013-4363.txt
124
- - CVE-2015-3900.txt
125
126
  - History.txt
126
127
  - LICENSE.txt
127
128
  - MAINTAINERS.txt
128
129
  - MIT.txt
129
130
  - Manifest.txt
130
- - POLICIES.rdoc
131
131
  - README.md
132
- - UPGRADING.rdoc
132
+ - UPGRADING.md
133
+ - POLICIES.md
134
+ - CODE_OF_CONDUCT.md
135
+ - CONTRIBUTING.md
133
136
  - bundler/CHANGELOG.md
134
137
  - bundler/CODE_OF_CONDUCT.md
135
138
  - bundler/CONTRIBUTING.md
@@ -137,23 +140,19 @@ extra_rdoc_files:
137
140
  - bundler/README.md
138
141
  - hide_lib_for_update/note.txt
139
142
  files:
140
- - ".autotest"
141
- - ".document"
143
+ - ".rubocop.yml"
142
144
  - ".travis.yml"
143
145
  - CODE_OF_CONDUCT.md
144
- - CONTRIBUTING.rdoc
145
- - CVE-2013-4287.txt
146
- - CVE-2013-4363.txt
147
- - CVE-2015-3900.txt
146
+ - CONTRIBUTING.md
148
147
  - History.txt
149
148
  - LICENSE.txt
150
149
  - MAINTAINERS.txt
151
150
  - MIT.txt
152
151
  - Manifest.txt
153
- - POLICIES.rdoc
152
+ - POLICIES.md
154
153
  - README.md
155
154
  - Rakefile
156
- - UPGRADING.rdoc
155
+ - UPGRADING.md
157
156
  - appveyor.yml
158
157
  - bin/gem
159
158
  - bin/update_rubygems
@@ -194,6 +193,7 @@ files:
194
193
  - bundler/lib/bundler/cli/platform.rb
195
194
  - bundler/lib/bundler/cli/plugin.rb
196
195
  - bundler/lib/bundler/cli/pristine.rb
196
+ - bundler/lib/bundler/cli/remove.rb
197
197
  - bundler/lib/bundler/cli/show.rb
198
198
  - bundler/lib/bundler/cli/update.rb
199
199
  - bundler/lib/bundler/cli/viz.rb
@@ -244,6 +244,7 @@ files:
244
244
  - bundler/lib/bundler/plugin/api.rb
245
245
  - bundler/lib/bundler/plugin/api/source.rb
246
246
  - bundler/lib/bundler/plugin/dsl.rb
247
+ - bundler/lib/bundler/plugin/events.rb
247
248
  - bundler/lib/bundler/plugin/index.rb
248
249
  - bundler/lib/bundler/plugin/installer.rb
249
250
  - bundler/lib/bundler/plugin/installer/git.rb
@@ -400,6 +401,7 @@ files:
400
401
  - bundler/man/bundle-package.ronn
401
402
  - bundler/man/bundle-platform.ronn
402
403
  - bundler/man/bundle-pristine.ronn
404
+ - bundler/man/bundle-remove.ronn
403
405
  - bundler/man/bundle-show.ronn
404
406
  - bundler/man/bundle-update.ronn
405
407
  - bundler/man/bundle-viz.ronn
@@ -422,6 +424,7 @@ files:
422
424
  - lib/rubygems/commands/fetch_command.rb
423
425
  - lib/rubygems/commands/generate_index_command.rb
424
426
  - lib/rubygems/commands/help_command.rb
427
+ - lib/rubygems/commands/info_command.rb
425
428
  - lib/rubygems/commands/install_command.rb
426
429
  - lib/rubygems/commands/list_command.rb
427
430
  - lib/rubygems/commands/lock_command.rb
@@ -450,6 +453,7 @@ files:
450
453
  - lib/rubygems/config_file.rb
451
454
  - lib/rubygems/core_ext/kernel_gem.rb
452
455
  - lib/rubygems/core_ext/kernel_require.rb
456
+ - lib/rubygems/core_ext/kernel_warn.rb
453
457
  - lib/rubygems/defaults.rb
454
458
  - lib/rubygems/dependency.rb
455
459
  - lib/rubygems/dependency_installer.rb
@@ -551,6 +555,7 @@ files:
551
555
  - lib/rubygems/resolver/stats.rb
552
556
  - lib/rubygems/resolver/vendor_set.rb
553
557
  - lib/rubygems/resolver/vendor_specification.rb
558
+ - lib/rubygems/s3_uri_signer.rb
554
559
  - lib/rubygems/safe_yaml.rb
555
560
  - lib/rubygems/security.rb
556
561
  - lib/rubygems/security/policies.rb
@@ -571,6 +576,7 @@ files:
571
576
  - lib/rubygems/source_specific_file.rb
572
577
  - lib/rubygems/spec_fetcher.rb
573
578
  - lib/rubygems/specification.rb
579
+ - lib/rubygems/specification_policy.rb
574
580
  - lib/rubygems/ssl_certs/.document
575
581
  - lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA.pem
576
582
  - lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
@@ -589,6 +595,7 @@ files:
589
595
  - lib/rubygems/version.rb
590
596
  - lib/rubygems/version_option.rb
591
597
  - lib/ubygems.rb
598
+ - rubygems-update.gemspec
592
599
  - setup.rb
593
600
  - test/rubygems/alternate_cert.pem
594
601
  - test/rubygems/alternate_cert_32.pem
@@ -606,7 +613,6 @@ files:
606
613
  - test/rubygems/encrypted_private_key.pem
607
614
  - test/rubygems/expired_cert.pem
608
615
  - test/rubygems/fake_certlib/openssl.rb
609
- - test/rubygems/fix_openssl_warnings.rb
610
616
  - test/rubygems/foo/discover.rb
611
617
  - test/rubygems/future_cert.pem
612
618
  - test/rubygems/future_cert_32.pem
@@ -658,6 +664,7 @@ files:
658
664
  - test/rubygems/test_gem_commands_fetch_command.rb
659
665
  - test/rubygems/test_gem_commands_generate_index_command.rb
660
666
  - test/rubygems/test_gem_commands_help_command.rb
667
+ - test/rubygems/test_gem_commands_info_command.rb
661
668
  - test/rubygems/test_gem_commands_install_command.rb
662
669
  - test/rubygems/test_gem_commands_list_command.rb
663
670
  - test/rubygems/test_gem_commands_lock_command.rb
@@ -774,10 +781,13 @@ files:
774
781
  - test/rubygems/wrong_key_cert_32.pem
775
782
  - util/CL2notes
776
783
  - util/ci
784
+ - util/cops/deprecations.rb
777
785
  - util/create_certs.rb
786
+ - util/create_certs.sh
778
787
  - util/create_encrypted_key.rb
779
788
  - util/generate_spdx_license_list.rb
780
789
  - util/patch_with_prs.rb
790
+ - util/rubocop
781
791
  - util/update_bundled_ca_certificates.rb
782
792
  - util/update_changelog.rb
783
793
  homepage: https://rubygems.org
@@ -796,7 +806,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
796
806
  requirements:
797
807
  - - ">="
798
808
  - !ruby/object:Gem::Version
799
- version: 1.8.7
809
+ version: 2.3.0
800
810
  required_rubygems_version: !ruby/object:Gem::Requirement
801
811
  requirements:
802
812
  - - ">="
@@ -807,5 +817,5 @@ rubyforge_project:
807
817
  rubygems_version: 2.7.6.2
808
818
  signing_key:
809
819
  specification_version: 4
810
- summary: ''
820
+ summary: RubyGems is a package management framework for Ruby.
811
821
  test_files: []
data/.autotest DELETED
@@ -1,71 +0,0 @@
1
- # -*- ruby -*-
2
-
3
- Gem.refresh
4
-
5
- require 'autotest/restart'
6
- require 'autotest/isolate'
7
-
8
- Autotest.add_hook :run_command do |_, cmd|
9
- cmd.sub! ' -e ', ' -we '
10
- end
11
-
12
- Autotest.add_hook :initialize do |at|
13
- at.testlib = ''
14
-
15
- at.failed_results_re = /^\s+\d+\) (?:Failure|Error):\n(.*?):/
16
- at.completed_re = /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/
17
-
18
- at.add_exception %r%/\.git/%
19
- at.add_exception %r%\.rbc$%
20
- at.add_exception %r%test/rubygems/rubygems%
21
-
22
- at.find_directories.clear
23
- at.find_directories.push 'lib', 'test'
24
-
25
- at.add_mapping %r%^lib/rubygems.rb$% do |_, m|
26
- "test/rubygems/test_gem.rb"
27
- end
28
-
29
- at.add_mapping %r%^lib/rubygems/(.*).rb$% do |_, m|
30
- "test/rubygems/test_gem_#{m[1].gsub '/', '_'}.rb"
31
- end
32
-
33
- args = ARGV.reject { |a| a =~ /^-/ }
34
- at.find_directories = args unless args.empty?
35
-
36
- def at.handle_results results
37
- results = results.gsub(/\e\[\d+m/, '') # strip ascii color
38
- failed = results.scan(self.failed_results_re).map { |m, k|
39
- /(?<k>\w+)#(?<m>\w+)/ =~ m
40
- [m, k]
41
- }
42
-
43
- completed = results[self.completed_re]
44
-
45
- if completed then
46
- completed = completed.scan(/(\d+) (\w+)/).map { |v, k| [k, v.to_i] }
47
-
48
- self.latest_results = Hash[*completed.flatten]
49
- self.files_to_test = consolidate_failures failed
50
-
51
- color = failed.empty? ? :green : :red
52
- hook color unless $TESTING
53
- else
54
- self.latest_results = nil
55
- end
56
-
57
- self.tainted = true unless self.files_to_test.empty?
58
- end
59
-
60
- def at.path_to_classname s
61
- sep = File::SEPARATOR
62
-
63
- f = s.sub(/^test#{sep}rubygems#{sep}/, '').sub(/\.rb$/, '').split sep
64
-
65
- f = f.map { |path| path.split(/_|(\d+)/).map { |seg| seg.capitalize }.join }
66
-
67
- f.join('::').
68
- gsub('Rdoc', 'RDoc').
69
- gsub('GemDependencyApi', 'GemDependencyAPI')
70
- end
71
- end
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README
2
- LICENSE.txt
3
- GPL.txt
4
- lib
5
- release_notes
data/CONTRIBUTING.rdoc DELETED
@@ -1,130 +0,0 @@
1
- = How to contribute
2
-
3
- Community involvement is essential to RubyGems. We want to keep it as easy
4
- as possible to contribute changes. There are a few guidelines that we need
5
- contributors to follow to reduce the time it takes to get changes merged in.
6
-
7
- == Guidelines
8
-
9
- 1. New features should be coupled with tests.
10
-
11
- 2. Ensure that your code blends well with ours:
12
- * No trailing whitespace
13
- * Match indentation (two spaces)
14
- * Match coding style (+if+, +elsif+, +when+ need trailing +then+)
15
-
16
- 3. If any new files are added or existing files removed in a commit or PR, please update the +Manifest.txt+ accordingly.
17
-
18
- 4. Don't modify the history file or version number.
19
-
20
- 5. If you have any questions, just ask on IRC in #rubygems on Freenode or file
21
- an issue here: http://github.com/rubygems/rubygems/issues
22
-
23
- For more information and ideas on how to contribute to RubyGems ecosystem, see
24
- here: http://guides.rubygems.org/contributing/
25
-
26
- == Getting Started
27
-
28
- $ gem install hoe
29
- $ rake newb
30
-
31
- To run commands like <tt>gem install</tt> from the repo:
32
-
33
- $ ruby -Ilib bin/gem install
34
-
35
- == Issues
36
-
37
- RubyGems uses labels to track all issues and pull requests. In order to provide
38
- guidance to the community this is documentation of how labels are used in the
39
- rubygems repository.
40
-
41
- === Contribution
42
-
43
- These labels are made to guide contributors to issue/pull requests that they
44
- can help with. That are marked with a light gray <tt>contribution: *</tt>
45
-
46
- * *small* - The issue described here will take a small amount of work to resolve,
47
- and is a good option for a new contributor
48
- * *unclaimed* - The issue has not been claimed for work, and is awaiting willing
49
- volunteers!
50
-
51
- === Type
52
-
53
- Most Issues or pull requests will have a light green <tt>type: *</tt> label,
54
- which describes the type of the issue or pull request.
55
-
56
- * <b>bug report</b> - An issue describing a bug in rubygems. This would be something
57
- that is broken, confusing, unexpected behavior etc.
58
- * <b>bug fix</b> - A pull request that fixes a bug report.
59
- * <b>feature request</b> - An issue describing a request for a new feature or
60
- enhancement.
61
- * <b>feature implementation</b> - A pull request implementing a feature request.
62
- * *question* - An issue that is a more of a question than a call for specific
63
- changes in the codebase.
64
- * *cleanup* - Generally for a pull request that improves the code base without
65
- fixing a bug or implementing a feature.
66
- * <b>major bump</b> - This issue or pull request requires a major version bump
67
- * *administrative* - This issue relates to administrative tasks that need to
68
- take place as it relates to rubygems
69
- * *documentation* - This issue relates to improving the documentation for
70
- in this repo. Note that much of the rubygems documentation is here:
71
- https://github.com/rubygems/guides
72
-
73
- === Workflow / Status
74
-
75
- The light yellow <tt>status: *</tt> labels that indicate the state of an
76
- issue, where it is in the process from being submitted to being closed.
77
- These are listed in rough progression order from submitted to closed.
78
-
79
- * *triage* - This is an issue or pull request that needs to be properly
80
- labeled by by a maintainer.
81
- * *confirmed* - This issue/pull request has been accepted as valid, but
82
- is not yet immediately ready for work.
83
- * <b>ready</b> - An issue that is available for collaboration. This issue
84
- should have existing discussion on the problem, and a description of how to go
85
- about solving it.
86
- * <b>working</b> - An issue that has a specific invidual assigned to and planning
87
- to do work on it.
88
- * <b>user feedback required</b> - The issue/pull request is blocked pending more
89
- feedback from an end user
90
- * <b>blocked / backlog</b> - the issue/pull request is currently unable to move forward
91
- because of some specific reason, generally this will be a reason that is outside
92
- RubyGems or needs feedback from some specific individual or group, and it may
93
- be a while before something it is resolved.
94
-
95
- === Closed Reason
96
-
97
- Reasons are why an issue / pull request was closed without being worked on or
98
- accepted. There should also be more detailed information in the comments. The
99
- closed reason labels are maroon <tt>closed: *</tt>.
100
-
101
- * *duplicate* - This is a duplicate of an existing bug. The comments must
102
- reference the existing issue.
103
- * *abandonded* - This is an issue/pull request that has aged off, is no longer
104
- applicable or similar.
105
- * *declined* - An issue that won't be fixed/implemented or a pull request that
106
- is not accepted.
107
- * *deprecated* - An issue/pull request that no longer applies to the actively
108
- maintained codebase.
109
- * *discussion* - An issue/pull that is no longer about a concrete change, and
110
- is instead being used for discussion.
111
-
112
- === Categories
113
-
114
- These are aspects of the codebase, or what general area the issue or pull
115
- request pertains too. Not all issues will have a category. All categorized
116
- issues have a blue <tt>category: *</tt> label.
117
-
118
- * *gemspec* - related to the gem specification itself
119
- * *API* - related to the public supported rubygems API. This is the code API,
120
- not a network related API.
121
- * *command* - related to something in <tt>Gem::Commands</tt>
122
- * *install* - related to gem installations
123
- * *documentation* - related to updating / fixing / clarifying documentation or
124
- guides
125
-
126
- === Platforms
127
-
128
- If an issue or pull request pertains to only one platform, then it should have
129
- an appropriate purple <tt>platform: *</tt> label. Current platform labels:
130
- *windows*, *java*, *osx*, *linux*
data/CVE-2013-4287.txt DELETED
@@ -1,35 +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 backtracking. For specially crafted RubyGems
5
- versions attackers can cause denial of service through CPU consumption.
6
-
7
- RubyGems versions 2.0.7 and older, 2.1.0.rc.1 and 2.1.0.rc.2 are vulnerable.
8
-
9
- Ruby versions 1.9.0 through 2.0.0p247 are vulnerable as they contain embedded
10
- versions of RubyGems.
11
-
12
- It does not appear to be possible to exploit this vulnerability by installing a
13
- gem for RubyGems 1.8.x or 2.0.x. Vulnerable uses of RubyGems API include
14
- packaging a gem (through `gem build`, Gem::Package or Gem::PackageTask),
15
- sending user input to Gem::Version.new, Gem::Version.correct? or use of the
16
- Gem::Version::VERSION_PATTERN or Gem::Version::ANCHORED_VERSION_PATTERN
17
- constants.
18
-
19
- Notably, users of bundler that install gems from git are vulnerable if a
20
- malicious author changes the gemspec to an invalid version.
21
-
22
- The vulnerability can be fixed by changing the first grouping to an atomic
23
- grouping in Gem::Version::VERSION_PATTERN in lib/rubygems/version.rb. For
24
- RubyGems 2.0.x:
25
-
26
- - VERSION_PATTERN = '[0-9]+(\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
27
- + VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*(-[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?' # :nodoc:
28
-
29
- For RubyGems 1.8.x:
30
-
31
- - VERSION_PATTERN = '[0-9]+(\.[0-9a-zA-Z]+)*' # :nodoc:
32
- + VERSION_PATTERN = '[0-9]+(?>\.[0-9a-zA-Z]+)*' # :nodoc:
33
-
34
- This vulnerability was discovered by Damir Sharipov <dammer2k@gmail.com>
35
-
data/CVE-2013-4363.txt DELETED
@@ -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
-
data/CVE-2015-3900.txt DELETED
@@ -1,40 +0,0 @@
1
- = Request hijacking vulnerability in RubyGems 2.4.6 and earlier
2
-
3
- RubyGems provides the ability of a domain to direct clients to a separate
4
- host that is used to fetch gems and make API calls against. This mechanism
5
- is implemented via DNS, specificly a SRV record _rubygems._tcp under the
6
- original requested domain.
7
-
8
- For example, this is the one that users who use rubygems.org see:
9
-
10
- > dig _rubygems._tcp.rubygems.org SRV
11
-
12
- ;; ANSWER SECTION:
13
- _rubygems._tcp.rubygems.org. 600 IN SRV 0 1 80 api.rubygems.org.
14
-
15
- RubyGems did not validate the hostname returned in the SRV record before
16
- sending requests to it.
17
-
18
- This left clients open to a DNS hijack attack, whereby an attacker could
19
- return a SRV of their choosing and get the client to use it. For example:
20
-
21
- > dig _rubygems._tcp.rubygems.org SRV
22
-
23
- ;; ANSWER SECTION:
24
- _rubygems._tcp.rubygems.org. 600 IN SRV 0 1 80 gems.nottobetrusted.wtf
25
-
26
- The fix, detailed at https://github.com/rubygems/rubygems/commit/6bbee35,
27
- shows that we validate the record now to be under the original domain. This
28
- restricts the client to be using the original trust/security domain as they
29
- would have otherwise.
30
-
31
- RubyGems versions between 2.0 and 2.4.6 are vulnerable.
32
-
33
- RubyGems version 2.0.16, 2.2.4, and 2.4.7 have been released that fix this
34
- issue.
35
-
36
- Ruby versions 1.9.0 through 2.2.0 are vulnerable as they contain embedded
37
- versions of RubyGems.
38
-
39
- This vulnerability was reported by Jonathan Claudius <JClaudius@trustwave.com>.
40
-