bundler-audit 0.3.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +3 -1
  3. data/.travis.yml +13 -4
  4. data/ChangeLog.md +53 -0
  5. data/Gemfile +4 -3
  6. data/README.md +44 -18
  7. data/Rakefile +13 -21
  8. data/bin/bundler-audit +3 -0
  9. data/data/ruby-advisory-db.ts +1 -1
  10. data/gemspec.yml +4 -3
  11. data/lib/bundler/audit.rb +1 -1
  12. data/lib/bundler/audit/advisory.rb +71 -7
  13. data/lib/bundler/audit/cli.rb +41 -11
  14. data/lib/bundler/audit/database.rb +29 -7
  15. data/lib/bundler/audit/scanner.rb +126 -10
  16. data/lib/bundler/audit/task.rb +31 -0
  17. data/lib/bundler/audit/version.rb +2 -2
  18. data/spec/advisory_spec.rb +211 -35
  19. data/spec/audit_spec.rb +1 -1
  20. data/spec/bundle/insecure_sources/Gemfile +2 -37
  21. data/spec/bundle/secure/Gemfile +2 -36
  22. data/spec/bundle/unpatched_gems/Gemfile +1 -36
  23. data/spec/cli_spec.rb +126 -0
  24. data/spec/database_spec.rb +51 -25
  25. data/spec/integration_spec.rb +35 -13
  26. data/spec/scanner_spec.rb +11 -10
  27. data/spec/spec_helper.rb +9 -17
  28. metadata +38 -121
  29. data/data/ruby-advisory-db/.gitignore +0 -1
  30. data/data/ruby-advisory-db/.rspec +0 -1
  31. data/data/ruby-advisory-db/CONTRIBUTING.md +0 -6
  32. data/data/ruby-advisory-db/CONTRIBUTORS.md +0 -23
  33. data/data/ruby-advisory-db/Gemfile +0 -3
  34. data/data/ruby-advisory-db/LICENSE.txt +0 -5
  35. data/data/ruby-advisory-db/README.md +0 -82
  36. data/data/ruby-advisory-db/Rakefile +0 -27
  37. data/data/ruby-advisory-db/gems/actionmailer/OSVDB-98629.yml +0 -17
  38. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100524.yml +0 -20
  39. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100525.yml +0 -21
  40. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100526.yml +0 -27
  41. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100527.yml +0 -24
  42. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100528.yml +0 -22
  43. data/data/ruby-advisory-db/gems/actionpack/OSVDB-103439.yml +0 -24
  44. data/data/ruby-advisory-db/gems/actionpack/OSVDB-103440.yml +0 -22
  45. data/data/ruby-advisory-db/gems/actionpack/OSVDB-79727.yml +0 -26
  46. data/data/ruby-advisory-db/gems/actionpack/OSVDB-84243.yml +0 -28
  47. data/data/ruby-advisory-db/gems/actionpack/OSVDB-84513.yml +0 -23
  48. data/data/ruby-advisory-db/gems/actionpack/OSVDB-84515.yml +0 -26
  49. data/data/ruby-advisory-db/gems/actionpack/OSVDB-89026.yml +0 -24
  50. data/data/ruby-advisory-db/gems/actionpack/OSVDB-91452.yml +0 -20
  51. data/data/ruby-advisory-db/gems/actionpack/OSVDB-91454.yml +0 -23
  52. data/data/ruby-advisory-db/gems/activerecord/OSVDB-103438.yml +0 -23
  53. data/data/ruby-advisory-db/gems/activerecord/OSVDB-82403.yml +0 -25
  54. data/data/ruby-advisory-db/gems/activerecord/OSVDB-82610.yml +0 -24
  55. data/data/ruby-advisory-db/gems/activerecord/OSVDB-89025.yml +0 -24
  56. data/data/ruby-advisory-db/gems/activerecord/OSVDB-90072.yml +0 -21
  57. data/data/ruby-advisory-db/gems/activerecord/OSVDB-90073.yml +0 -23
  58. data/data/ruby-advisory-db/gems/activerecord/OSVDB-91453.yml +0 -26
  59. data/data/ruby-advisory-db/gems/activesupport/OSVDB-79726.yml +0 -26
  60. data/data/ruby-advisory-db/gems/activesupport/OSVDB-84516.yml +0 -23
  61. data/data/ruby-advisory-db/gems/activesupport/OSVDB-89594.yml +0 -25
  62. data/data/ruby-advisory-db/gems/activesupport/OSVDB-91451.yml +0 -28
  63. data/data/ruby-advisory-db/gems/arabic-prawn/OSVDB-104365.yml +0 -15
  64. data/data/ruby-advisory-db/gems/cocaine/OSVDB-98835.yml +0 -15
  65. data/data/ruby-advisory-db/gems/command_wrap/OSVDB-91450.yml +0 -10
  66. data/data/ruby-advisory-db/gems/crack/OSVDB-90742.yml +0 -17
  67. data/data/ruby-advisory-db/gems/cremefraiche/OSVDB-93395.yml +0 -11
  68. data/data/ruby-advisory-db/gems/curl/OSVDB-91230.yml +0 -12
  69. data/data/ruby-advisory-db/gems/devise/OSVDB-89642.yml +0 -20
  70. data/data/ruby-advisory-db/gems/dragonfly/OSVDB-90647.yml +0 -19
  71. data/data/ruby-advisory-db/gems/echor/OSVDB-102129.yml +0 -11
  72. data/data/ruby-advisory-db/gems/echor/OSVDB-102130.yml +0 -10
  73. data/data/ruby-advisory-db/gems/enum_column3/OSVDB-94679.yml +0 -9
  74. data/data/ruby-advisory-db/gems/extlib/OSVDB-90740.yml +0 -18
  75. data/data/ruby-advisory-db/gems/fastreader/OSVDB-91232.yml +0 -12
  76. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90715.yml +0 -10
  77. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90716.yml +0 -10
  78. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90717.yml +0 -10
  79. data/data/ruby-advisory-db/gems/flash_tool/OSVDB-90829.yml +0 -9
  80. data/data/ruby-advisory-db/gems/fog-dragonfly/OSVDB-96798.yml +0 -13
  81. data/data/ruby-advisory-db/gems/ftpd/OSVDB-90784.yml +0 -18
  82. data/data/ruby-advisory-db/gems/gitlab-grit/OSVDB-99370.yml +0 -14
  83. data/data/ruby-advisory-db/gems/gtk2/OSVDB-40774.yml +0 -20
  84. data/data/ruby-advisory-db/gems/httparty/OSVDB-90741.yml +0 -14
  85. data/data/ruby-advisory-db/gems/i18n/OSVDB-100528.yml +0 -17
  86. data/data/ruby-advisory-db/gems/json/OSVDB-90074.yml +0 -23
  87. data/data/ruby-advisory-db/gems/karteek-docsplit/OSVDB-92117.yml +0 -10
  88. data/data/ruby-advisory-db/gems/kelredd-pruview/OSVDB-92228.yml +0 -10
  89. data/data/ruby-advisory-db/gems/ldoce/OSVDB-91870.yml +0 -10
  90. data/data/ruby-advisory-db/gems/loofah/OSVDB-90945.yml +0 -21
  91. data/data/ruby-advisory-db/gems/mail/OSVDB-70667.yml +0 -21
  92. data/data/ruby-advisory-db/gems/mail/OSVDB-81631.yml +0 -14
  93. data/data/ruby-advisory-db/gems/mail/OSVDB-81632.yml +0 -16
  94. data/data/ruby-advisory-db/gems/md2pdf/OSVDB-92290.yml +0 -10
  95. data/data/ruby-advisory-db/gems/mini_magick/OSVDB-91231.yml +0 -15
  96. data/data/ruby-advisory-db/gems/multi_xml/OSVDB-89148.yml +0 -16
  97. data/data/ruby-advisory-db/gems/newrelic_rpm/OSVDB-90189.yml +0 -17
  98. data/data/ruby-advisory-db/gems/nokogiri/OSVDB-101179.yml +0 -12
  99. data/data/ruby-advisory-db/gems/nokogiri/OSVDB-101458.yml +0 -15
  100. data/data/ruby-advisory-db/gems/nori/OSVDB-90196.yml +0 -19
  101. data/data/ruby-advisory-db/gems/omniauth-facebook/OSVDB-99693.yml +0 -22
  102. data/data/ruby-advisory-db/gems/omniauth-facebook/OSVDB-99888.yml +0 -17
  103. data/data/ruby-advisory-db/gems/omniauth-oauth2/OSVDB-90264.yml +0 -16
  104. data/data/ruby-advisory-db/gems/paperclip/OSVDB-103151.yml +0 -13
  105. data/data/ruby-advisory-db/gems/paratrooper-newrelic/OSVDB-101839.yml +0 -12
  106. data/data/ruby-advisory-db/gems/paratrooper-pingdom/OSVDB-101847.yml +0 -13
  107. data/data/ruby-advisory-db/gems/pdfkit/OSVDB-90867.yml +0 -11
  108. data/data/ruby-advisory-db/gems/rack-cache/OSVDB-83077.yml +0 -18
  109. data/data/ruby-advisory-db/gems/rack/OSVDB-89939.yml +0 -23
  110. data/data/ruby-advisory-db/gems/rbovirt/OSVDB-104080.yml +0 -20
  111. data/data/ruby-advisory-db/gems/rdoc/OSVDB-90004.yml +0 -27
  112. data/data/ruby-advisory-db/gems/redis-namespace/OSVDB-96425.yml +0 -16
  113. data/data/ruby-advisory-db/gems/rgpg/OSVDB-95948.yml +0 -14
  114. data/data/ruby-advisory-db/gems/ruby_parser/OSVDB-90561.yml +0 -11
  115. data/data/ruby-advisory-db/gems/sfpagent/OSVDB-105971.yml +0 -13
  116. data/data/ruby-advisory-db/gems/sounder/OSVDB-96278.yml +0 -13
  117. data/data/ruby-advisory-db/gems/spree/OSVDB-91216.yml +0 -11
  118. data/data/ruby-advisory-db/gems/spree/OSVDB-91217.yml +0 -11
  119. data/data/ruby-advisory-db/gems/spree/OSVDB-91218.yml +0 -11
  120. data/data/ruby-advisory-db/gems/spree/OSVDB-91219.yml +0 -11
  121. data/data/ruby-advisory-db/gems/sprout/OSVDB-100598.yml +0 -14
  122. data/data/ruby-advisory-db/gems/thumbshooter/OSVDB-91839.yml +0 -10
  123. data/data/ruby-advisory-db/gems/webbynode/OSVDB-100920.yml +0 -11
  124. data/data/ruby-advisory-db/gems/wicked/OSVDB-98270.yml +0 -14
  125. data/data/ruby-advisory-db/gems/will_paginate/OSVDB-101138.yml +0 -15
  126. data/data/ruby-advisory-db/lib/scrape.rb +0 -87
  127. data/data/ruby-advisory-db/spec/advisory_example.rb +0 -165
  128. data/data/ruby-advisory-db/spec/gems_spec.rb +0 -7
  129. data/data/ruby-advisory-db/spec/spec_helper.rb +0 -1
@@ -1,13 +0,0 @@
1
- ---
2
- gem: paperclip
3
- osvdb: 103151
4
- url: http://osvdb.org/show/osvdb/103151
5
- title: Paperclip Gem for Ruby contains a flaw
6
- date: 2014-01-31
7
- description: Paperclip Gem for Ruby contains a flaw that is due to the application failing to properly
8
- validate the file extension, instead only validating the Content-Type header during file uploads.
9
- This may allow a remote attacker to bypass restrictions on file types for uploaded files by
10
- spoofing the content-type.
11
- cvss_v2:
12
- patched_versions:
13
- - ">= 4.0.0"
@@ -1,12 +0,0 @@
1
- ---
2
- gem: paratrooper-newrelic
3
- cve: 2014-1234
4
- osvdb: 101839
5
- url: http://www.osvdb.org/show/osvdb/101839
6
- title: Paratrooper-newrelic Gem for Ruby contains a flaw
7
- date: 2014-01-08
8
- description: Paratrooper-newrelic Gem for Ruby contains a flaw in /lib/paratrooper-newrelic.rb.
9
- The issue is triggered when the script exposes the API key, allowing a local attacker to
10
- gain access to it by monitoring the process tree.
11
- cvss_v2: 2.1
12
- patched_versions:
@@ -1,13 +0,0 @@
1
- ---
2
- gem: paratrooper-pingdom
3
- cve: 2014-1233
4
- osvdb: 101847
5
- url: http://www.osvdb.org/show/osvdb/101847
6
- title: Paratrooper-pingdom Gem for Ruby contains a flaw
7
- date: 2013-12-26
8
- description: paratrooper-pingdom Gem for Ruby contains a flaw in /lib/paratrooper-pingdom.rb.
9
- The issue is triggered when the script exposes API login credentials, allowing a local
10
- attacker to gain access to the API key, username, and password for the API login by
11
- monitoring the process tree.
12
- cvss_v2: 2.1
13
- patched_versions:
@@ -1,11 +0,0 @@
1
- ---
2
- gem: pdfkit
3
- cve: 2013-1607
4
- osvdb: 90867
5
- url: http://osvdb.org/show/osvdb/90867
6
- title: PDFKit Gem for Ruby PDF File Generation Parameter Handling Remote Code Execution
7
- date: 2013-02-21
8
- description: PDFKit Gem for Ruby contains a flaw that is due to the program failing to properly validate input during the handling of parameters when generating PDF files. This may allow a remote attacker to potentially execute arbitrary code via the pdfkit generation options.
9
- cvss_v2:
10
- patched_versions:
11
- - ">= 0.5.3"
@@ -1,18 +0,0 @@
1
- ---
2
- gem: rack-cache
3
- cve: 2012-2671
4
- osvdb: 83077
5
- url: http://osvdb.org/83077
6
- title: rack-cache Rubygem Sensitive HTTP Header Caching Weakness
7
- date: 2012-06-06
8
-
9
- description: |
10
- Rack::Cache (rack-cache) contains a flaw related to the rubygem caching
11
- sensitive HTTP headers. This will result in a weakness that may make it
12
- easier for an attacker to gain access to a user's session via a specially
13
- crafted header.
14
-
15
- cvss_v2: 7.5
16
-
17
- patched_versions:
18
- - ">= 1.2"
@@ -1,23 +0,0 @@
1
- ---
2
- gem: rack
3
- cve: 2013-0263
4
- osvdb: 89939
5
- url: http://osvdb.org/show/osvdb/89939
6
- title: |
7
- Rack Rack::Session::Cookie Function Timing Attack Remote Code Execution
8
- date: 2009-12-01
9
-
10
- description: |
11
- Rack contains a flaw that is due to an error in the Rack::Session::Cookie
12
- function. Users of the Marshal session cookie encoding (the default), are
13
- subject to a timing attack that may lead an attacker to execute arbitrary
14
- code. This attack is more practical against 'cloud' users as intra-cloud
15
- latencies are sufficiently low to make the attack viable.
16
-
17
- cvss_v2: 5.1
18
- patched_versions:
19
- - ~> 1.1.6
20
- - ~> 1.2.8
21
- - ~> 1.3.10
22
- - ~> 1.4.5
23
- - ">= 1.5.2"
@@ -1,20 +0,0 @@
1
- ---
2
- gem: rbovirt
3
- cve: 2014-0036
4
- osvdb: 104080
5
- url: http://osvdb.org/show/osvdb/104080
6
- title: rbovirt Gem for Ruby contains a flaw
7
- date: 2014-03-05
8
-
9
- description: |
10
- rbovirt Gem for Ruby contains a flaw related to certificate validation.
11
- The issue is due to the program failing to validate SSL certificates. This may
12
- allow an attacker with access to network traffic (e.g. MiTM, DNS cache
13
- poisoning) to spoof the SSL server via an arbitrary certificate that appears
14
- valid. Such an attack would allow for the interception of sensitive traffic,
15
- and potentially allow for the injection of content into the SSL stream.
16
-
17
- cvss_v2:
18
-
19
- patched_versions:
20
- - '>= 0.0.24'
@@ -1,27 +0,0 @@
1
- ---
2
- gem: rdoc
3
- cve: 2013-0256
4
- osvdb: 90004
5
- url: http://www.osvdb.org/show/osvdb/90004
6
- title: RDoc 2.3.0 through 3.12 XSS Exploit
7
- date: 2013-02-06
8
-
9
- description: |
10
- Doc documentation generated by rdoc 2.3.0 through rdoc 3.12 and prereleases
11
- up to rdoc 4.0.0.preview2.1 are vulnerable to an XSS exploit. This exploit
12
- may lead to cookie disclosure to third parties.
13
-
14
- The exploit exists in darkfish.js which is copied from the RDoc install
15
- location to the generated documentation.
16
-
17
- RDoc is a static documentation generation tool. Patching the library itself
18
- is insufficient to correct this exploit.
19
-
20
- This exploit was discovered by Evgeny Ermakov <corwmh@gmail.com>.
21
-
22
- cvss_v2: 4.3
23
-
24
- patched_versions:
25
- - ~> 3.9.5
26
- - ~> 3.12.1
27
- - ">= 4.0"
@@ -1,16 +0,0 @@
1
- ---
2
- gem: redis-namespace
3
- osvdb: 96425
4
- url: http://www.osvdb.org/show/osvdb/96425
5
- title: redis-namespace Gem for Ruby contains a flaw in the method_missing implementation
6
- date: 2013-08-03
7
- description: |
8
- redis-namespace Gem for Ruby contains a flaw in the method_missing implementation.
9
- The issue is triggered when handling exec commands called via send(). This may allow a
10
- remote attacker to execute arbitrary commands.
11
- cvss_v2:
12
- patched_versions:
13
- - ">= 1.3.1"
14
- - ">= 1.2.2"
15
- - ">= 1.1.1"
16
- - ">= 1.0.4"
@@ -1,14 +0,0 @@
1
- ---
2
- gem: rgpg
3
- osvdb: 95948
4
- cve: 2013-4203
5
- url: http://www.osvdb.org/show/osvdb/95948
6
- title: Ruby rgpg Gem Shell Command Injection Vulnerabilities
7
- date: 2013-08-02
8
- description: |
9
- rgpg Gem for Ruby contains a flaw in the GpgHelper module (lib/rgpg/gpg_helper.rb).
10
- The issue is due to the program failing to properly sanitize user-supplied input before being used in the system() function for execution.
11
- This may allow a remote attacker to execute arbitrary commands.
12
- cvss_v2: 7.5
13
- patched_versions:
14
- - ">= 0.2.3"
@@ -1,11 +0,0 @@
1
- ---
2
- gem: ruby_parser
3
- cve: 2013-0162
4
- osvdb: 90561
5
- url: http://osvdb.org/show/osvdb/90561
6
- title: RubyGems ruby_parser (RP) Temporary File Symlink Arbitrary File Overwrite
7
- date: 2013-02-21
8
- description: RubyGems ruby_parser (RP) contains a flaw as rubygem-ruby_parser creates temporary files insecurely. It is possible for a local attacker to use a symlink attack to cause the program to unexpectedly overwrite an arbitrary file.
9
- cvss_v2: 2.1
10
- patched_versions:
11
- - ">= 3.1.2"
@@ -1,13 +0,0 @@
1
- ---
2
- gem: sfpagent
3
- cve:
4
- osvdb: 105971
5
- url: http://www.osvdb.org/show/osvdb/105971
6
- title: sfpagent Gem for Ruby Remote Command Injection
7
- date: 2014-04-16
8
- description: sfpagent Gem for Ruby contains a flaw that is triggered as JSON[body]
9
- input is not properly sanitized when handling module names with shell metacharacters.
10
- This may allow a context-dependent attacker to execute arbitrary commands.
11
- cvss_v2:
12
- patched_versions:
13
- - ">= 0.4.15"
@@ -1,13 +0,0 @@
1
- ---
2
- gem: sounder
3
- cve: 2013-5647
4
- osvdb: 96278
5
- url: http://www.osvdb.org/show/osvdb/96278
6
- title: Sounder Gem for Ruby File Name Handling Arbitrary Command Execution
7
- date: 2013-08-14
8
- description: Sounder Gem for Ruby contains a flaw that is triggered during the handling
9
- of file names. This may allow a context-dependent attacker to execute arbitrary
10
- commands.
11
- cvss_v2: 7.5
12
- patched_versions:
13
- - '>= 1.0.2'
@@ -1,11 +0,0 @@
1
- ---
2
- gem: spree
3
- cve: 2013-1656
4
- osvdb: 91216
5
- url: http://osvdb.org/show/osvdb/91216
6
- title: Spree promotion_actions_controller.rb promotion_action Parameter Arbitrary Ruby Object Instantiation Command Execution
7
- date: 2013-02-21
8
- description: Spree contains a flaw that is triggered when handling input passed via the 'promotion_action' parameter to promotion_actions_controller.rb. This may allow a remote authenticated attacker to instantiate arbitrary Ruby objects and potentially execute arbitrary commands.
9
- cvss_v2: 4.3
10
- patched_versions:
11
- - ">= 2.0.0"
@@ -1,11 +0,0 @@
1
- ---
2
- gem: spree
3
- cve: 2013-1656
4
- osvdb: 91217
5
- url: http://osvdb.org/show/osvdb/91217
6
- title: Spree payment_methods_controller.rb payment_method Parameter Arbitrary Ruby Object Instantiation Command Execution
7
- date: 2013-02-21
8
- description: Spree contains a flaw that is triggered when handling input passed via the 'payment_method' parameter to payment_methods_controller.rb. This may allow a remote authenticated attacker to instantiate arbitrary Ruby objects and potentially execute arbitrary commands.
9
- cvss_v2: 4.3
10
- patched_versions:
11
- - ">= 2.0.0"
@@ -1,11 +0,0 @@
1
- ---
2
- gem: spree
3
- cve: 2013-1656
4
- osvdb: 91218
5
- url: http://osvdb.org/show/osvdb/91218
6
- title: Spree promotions_controller.rb calculator_type Parameter Arbitrary Ruby Object Instantiation Command Execution
7
- date: 2013-02-21
8
- description: Spree contains a flaw that is triggered when handling input passed via the 'calculator_type' parameter to promotions_controller.rb. This may allow a remote authenticated attacker to instantiate arbitrary Ruby objects and potentially execute arbitrary commands.
9
- cvss_v2: 4.3
10
- patched_versions:
11
- - ">= 2.0.0"
@@ -1,11 +0,0 @@
1
- ---
2
- gem: spree
3
- cve: 2013-1656
4
- osvdb: 91219
5
- url: http://osvdb.org/show/osvdb/91219
6
- title: Spree promotion_rules_controller.rb promotion_rule Parameter Arbitrary Ruby Object Instantiation Command Execution
7
- date: 2013-02-21
8
- description: Spree contains a flaw that is triggered when handling input passed via the 'promotion_rule' parameter to promotion_rules_controller.rb. This may allow a remote authenticated attacker to instantiate arbitrary Ruby objects and potentially execute arbitrary commands.
9
- cvss_v2: 4.3
10
- patched_versions:
11
- - ">= 2.0.0"
@@ -1,14 +0,0 @@
1
- ---
2
- gem: sprout
3
- cve: 2013-6421
4
- osvdb: 100598
5
- url: http://www.osvdb.org/show/osvdb/100598
6
- title: Sprout Gem for Ruby contains a flaw
7
- date: 2013-12-02
8
- description: sprout Gem for Ruby contains a flaw in the unpack_zip() function in archive_unpacker.rb.
9
- The issue is due to the program failing to properly sanitize input passed via the 'zip_file', 'dir',
10
- 'zip_name', and 'output' parameters. This may allow a context-dependent attacker to execute arbitrary code.
11
- cvss_v2: 7.5
12
- patched_versions:
13
- unaffected_versions:
14
- - '< 0.7.246'
@@ -1,10 +0,0 @@
1
- ---
2
- gem: thumbshooter
3
- cve: 2013-1898
4
- osvdb: 91839
5
- url: http://osvdb.org/show/osvdb/91839
6
- title: Thumbshooter Gem for Ruby thumbshooter.rb URL Shell Metacharacter Injection Arbitrary Command Execution
7
- date: 2013-03-26
8
- description: Thumbshooter Gem for Ruby contains a flaw that is due to the program failing to properly sanitize input passed to thumbshooter.rb. With a specially crafted URL that contains shell metacharacters, a context-dependent attacker can execute arbitrary commands.
9
- cvss_v2: 7.5
10
- patched_versions:
@@ -1,11 +0,0 @@
1
- ---
2
- gem: webbynode
3
- osvdb: 100920
4
- url: http://osvdb.org/show/osvdb/100920
5
- title: Webbynode Gem for Ruby contains a flaw
6
- date: 2013-12-12
7
- description: Webbynode Gem for Ruby contains a flaw in notify.rb that is triggered
8
- when handling a specially crafted growlnotify message. This may allow a
9
- context-dependent attacker to execute arbitrary commands.
10
- cvss_v2: 7.5
11
- patched_versions:
@@ -1,14 +0,0 @@
1
- ---
2
- gem: wicked
3
- cve: 2013-4413
4
- osvdb: 98270
5
- url: http://www.osvdb.org/show/osvdb/98270
6
- title: Wicked Gem for Ruby contains a flaw
7
- date: 2013-10-08
8
- description: Wicked Gem for Ruby contains a flaw that is due to the program
9
- failing to properly sanitize input passed via the 'the_step' parameter
10
- upon submission to the render_redirect.rb script.
11
- This may allow a remote attacker to gain access to arbitrary files.
12
- cvss_v2:
13
- patched_versions:
14
- - '>= 1.0.1'
@@ -1,15 +0,0 @@
1
- ---
2
- gem: will_paginate
3
- osvdb: 101138
4
- cve: 2013-6459
5
- url: http://osvdb.org/show/osvdb/101138
6
- title: will_paginate Gem for Ruby Generated Pagination Link Unspecified XSS
7
- date: 2013-09-19
8
- description: will_paginate Gem for Ruby contains a flaw that allows a cross-site scripting (XSS) attack.
9
- This flaw exists because the application does not validate certain unspecified input related to
10
- generated pagination links before returning it to the user. This may allow an attacker to create
11
- a specially crafted request that would execute arbitrary script code in a users browser within the
12
- trust relationship between their browser and the server.
13
- cvss_v2: 4.3
14
- patched_versions:
15
- - ">= 3.0.5"
@@ -1,87 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
-
4
- require 'pry'
5
- require 'mechanize'
6
- require 'yaml'
7
- require 'date'
8
-
9
- class OSVDB
10
- attr_accessor :osvdb, :cve, :title, :description, :date, :cvss_v2, :gem, :url, :patched_versions, :page
11
- def initialize(url)
12
- self.url = url
13
- parse!
14
- end
15
-
16
- def parse!
17
- mech = Mechanize.new
18
- self.page = mech.get(url)
19
-
20
- page.search(".show_vuln_table").search("td ul li").each do |li|
21
- case li.children[0].text.strip
22
- when "CVE ID:"
23
- self.cve = li.children[1].text
24
- when "Vendor URL:"
25
- self.set_gem(li.children[1].text)
26
- end
27
- end
28
-
29
- self.description = page.search(".show_vuln_table").search("tr td tr .white_content p")[0].text
30
- self.date = page.search(".show_vuln_table").search("tr td tr .white_content tr td")[0].text
31
- self.title = page.search("title").text.gsub(/\d+: /, "")
32
- self.osvdb = page.search("title").text.match(/\d+/)[0]
33
- if cvss_p = page.search(".show_vuln_table").search("tr td tr .white_content div p")[0]
34
- self.set_cvss(cvss_p.children[0].text)
35
- end
36
- end
37
-
38
- def set_gem(vendortext)
39
- ["https://rubygems.org/gems/", "http://rubygems.org/gems/"].each do |str|
40
- if vendortext.match(str)
41
- self.gem = vendortext.gsub(str,"")
42
- end
43
- end
44
- end
45
-
46
- def set_cvss(text)
47
- self.cvss_v2 = text.strip.gsub("CVSSv2 Base Score = ", "")
48
- end
49
-
50
- def date
51
- Date.parse(@date)
52
- end
53
-
54
- def cvss_v2
55
- @cvss_v2.nil? ? nil : @cvss_v2.to_f
56
- end
57
-
58
- def gem
59
- @gem.nil? ? "unknown" : @gem
60
- end
61
-
62
- def to_yaml
63
- { 'gem' => gem,
64
- 'cve' => cve,
65
- 'osvdb' => osvdb.to_i,
66
- 'url' => url,
67
- 'title' => title,
68
- 'date' => date,
69
- 'description' => description,
70
- 'cvss_v2' => cvss_v2,
71
- 'patched_versions' => patched_versions }.to_yaml
72
- end
73
-
74
- def filename
75
- "OSVDB-#{osvdb}.yml"
76
- end
77
-
78
- def to_advisory!
79
- gems_path = File.join(File.dirname(__FILE__), "..", "gems")
80
- adv_path = File.absolute_path(File.join(gems_path, self.gem))
81
-
82
- FileUtils.mkdir(adv_path) unless File.exists?(adv_path)
83
- File.open(File.join(adv_path, filename), "w") do |io|
84
- io.puts self.to_yaml
85
- end
86
- end
87
- end
@@ -1,165 +0,0 @@
1
- load File.join(File.dirname(__FILE__), 'spec_helper.rb')
2
- require 'yaml'
3
-
4
- shared_examples_for 'Advisory' do |path|
5
- advisory = YAML.load_file(path)
6
-
7
- describe path do
8
- let(:gem) { File.basename(File.dirname(path)) }
9
- let(:filename_cve) do
10
- if File.basename(path).start_with?('CVE-')
11
- File.basename(path).gsub('CVE-','').chomp('.yml')
12
- else
13
- nil
14
- end
15
- end
16
- let(:filename_osvdb) do
17
- if File.basename(path).start_with?('OSVDB-')
18
- File.basename(path).gsub('OSVDB-','').chomp('.yml')
19
- else
20
- nil
21
- end
22
- end
23
-
24
- it "should have CVE or OSVDB" do
25
- (advisory['cve'] || advisory['osvdb']).should_not be_nil
26
- end
27
-
28
- describe "gem" do
29
- subject { advisory['gem'] }
30
-
31
- it { should be_kind_of(String) }
32
- it { should == gem }
33
- end
34
-
35
- describe "framework" do
36
- subject { advisory['framework'] }
37
-
38
- it "may be nil or a String" do
39
- [NilClass, String].should include(subject.class)
40
- end
41
- end
42
-
43
- describe "platform" do
44
- subject { advisory['platform'] }
45
-
46
- it "may be nil or a String" do
47
- [NilClass, String].should include(subject.class)
48
- end
49
- end
50
-
51
- describe "cve" do
52
- subject { advisory['cve'] }
53
-
54
- it "may be nil or a String" do
55
- [NilClass, String].should include(subject.class)
56
- end
57
- it "should be id in filename if filename is CVE-XXX" do
58
- if filename_cve
59
- should == filename_cve
60
- end
61
- end
62
- end
63
-
64
- describe "osvdb" do
65
- subject { advisory['osvdb'] }
66
- it "may be nil or a Fixnum" do
67
- [NilClass, Fixnum].should include(subject.class)
68
- end
69
- it "should be id in filename if filename is OSVDB-XXX" do
70
- if filename_osvdb
71
- should == filename_osvdb.to_i
72
- end
73
- end
74
- end
75
-
76
- describe "url" do
77
- subject { advisory['url'] }
78
-
79
- it { should be_kind_of(String) }
80
- it { should_not be_empty }
81
- end
82
-
83
- describe "title" do
84
- subject { advisory['title'] }
85
-
86
- it { should be_kind_of(String) }
87
- it { should_not be_empty }
88
- end
89
-
90
- describe "date" do
91
- subject { advisory['date'] }
92
-
93
- it { should be_kind_of(Date) }
94
- end
95
-
96
- describe "description" do
97
- subject { advisory['description'] }
98
-
99
- it { should be_kind_of(String) }
100
- it { should_not be_empty }
101
- end
102
-
103
- describe "cvss_v2" do
104
- subject { advisory['cvss_v2'] }
105
-
106
- it "may be nil or a Float" do
107
- [NilClass, Float].should include(subject.class)
108
- end
109
-
110
- case advisory['cvss_v2']
111
- when Float
112
- context "when a Float" do
113
- it { ((0.0)..(10.0)).should include(subject) }
114
- end
115
- end
116
- end
117
-
118
- describe "patched_versions" do
119
- subject { advisory['patched_versions'] }
120
-
121
- it "may be nil or an Array" do
122
- [NilClass, Array].should include(subject.class)
123
- end
124
-
125
- describe "each patched version" do
126
- if advisory['patched_versions']
127
- advisory['patched_versions'].each do |version|
128
- describe version do
129
- subject { version.split(', ') }
130
-
131
- it "should contain valid RubyGem version requirements" do
132
- lambda {
133
- Gem::Requirement.new(*subject)
134
- }.should_not raise_error
135
- end
136
- end
137
- end
138
- end
139
- end
140
- end
141
-
142
- describe "unaffected_versions" do
143
- subject { advisory['unaffected_versions'] }
144
-
145
- it "may be nil or an Array" do
146
- [NilClass, Array].should include(subject.class)
147
- end
148
-
149
- case advisory['unaffected_versions']
150
- when Array
151
- advisory['unaffected_versions'].each do |version|
152
- describe version do
153
- subject { version.split(', ') }
154
-
155
- it "should contain valid RubyGem version requirements" do
156
- lambda {
157
- Gem::Requirement.new(*subject)
158
- }.should_not raise_error
159
- end
160
- end
161
- end
162
- end
163
- end
164
- end
165
- end