bundler-audit 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.md +16 -0
  3. data/README.md +23 -10
  4. data/data/ruby-advisory-db.ts +1 -1
  5. data/data/ruby-advisory-db/.gitignore +1 -0
  6. data/data/ruby-advisory-db/.travis.yml +18 -0
  7. data/data/ruby-advisory-db/CONTRIBUTING.md +53 -3
  8. data/data/ruby-advisory-db/CONTRIBUTORS.md +17 -2
  9. data/data/ruby-advisory-db/Gemfile +8 -2
  10. data/data/ruby-advisory-db/Rakefile +1 -2
  11. data/data/ruby-advisory-db/gems/{arabic-prawn → Arabic-Prawn}/OSVDB-104365.yml +3 -6
  12. data/data/ruby-advisory-db/gems/RedCloth/OSVDB-115941.yml +16 -0
  13. data/data/ruby-advisory-db/gems/VladTheEnterprising/CVE-2014-4995.yml +13 -0
  14. data/data/ruby-advisory-db/gems/VladTheEnterprising/CVE-2014-4996.yml +13 -0
  15. data/data/ruby-advisory-db/gems/actionpack/CVE-2014-0130.yml +23 -0
  16. data/data/ruby-advisory-db/gems/actionpack/CVE-2014-7818.yml +24 -0
  17. data/data/ruby-advisory-db/gems/actionpack/CVE-2014-7829.yml +26 -0
  18. data/data/ruby-advisory-db/gems/actionpack/CVE-2015-7576.yml +116 -0
  19. data/data/ruby-advisory-db/gems/actionpack/CVE-2015-7581.yml +55 -0
  20. data/data/ruby-advisory-db/gems/actionpack/CVE-2016-0751.yml +71 -0
  21. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100524.yml +1 -1
  22. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100525.yml +2 -2
  23. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100526.yml +6 -6
  24. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100527.yml +2 -2
  25. data/data/ruby-advisory-db/gems/actionpack/OSVDB-100528.yml +2 -2
  26. data/data/ruby-advisory-db/gems/actionpack/OSVDB-103439.yml +1 -1
  27. data/data/ruby-advisory-db/gems/actionpack/OSVDB-103440.yml +1 -1
  28. data/data/ruby-advisory-db/gems/actionpack/OSVDB-74616.yml +18 -0
  29. data/data/ruby-advisory-db/gems/actionpack/OSVDB-77199.yml +23 -0
  30. data/data/ruby-advisory-db/gems/actionpack/OSVDB-84243.yml +4 -4
  31. data/data/ruby-advisory-db/gems/actionpack/OSVDB-91452.yml +4 -4
  32. data/data/ruby-advisory-db/gems/actionpack/OSVDB-91454.yml +4 -4
  33. data/data/ruby-advisory-db/gems/actionview/CVE-2016-0752.yml +92 -0
  34. data/data/ruby-advisory-db/gems/activemodel/CVE-2016-0753.yml +92 -0
  35. data/data/ruby-advisory-db/gems/activerecord-jdbc-adapter/OSVDB-114854.yml +20 -0
  36. data/data/ruby-advisory-db/gems/activerecord-oracle_enhanced-adapter/OSVDB-95376.yml +15 -0
  37. data/data/ruby-advisory-db/gems/activerecord/CVE-2014-3514.yml +23 -0
  38. data/data/ruby-advisory-db/gems/activerecord/CVE-2015-7577.yml +107 -0
  39. data/data/ruby-advisory-db/gems/activerecord/OSVDB-108664.yml +23 -0
  40. data/data/ruby-advisory-db/gems/activerecord/OSVDB-108665.yml +24 -0
  41. data/data/ruby-advisory-db/gems/activerecord/OSVDB-88661.yml +20 -0
  42. data/data/ruby-advisory-db/gems/activerecord/OSVDB-90072.yml +3 -3
  43. data/data/ruby-advisory-db/gems/activerecord/OSVDB-90073.yml +3 -3
  44. data/data/ruby-advisory-db/gems/activeresource/OSVDB-95749.yml +15 -0
  45. data/data/ruby-advisory-db/gems/activesupport/CVE-2015-3226.yml +54 -0
  46. data/data/ruby-advisory-db/gems/activesupport/CVE-2015-3227.yml +32 -0
  47. data/data/ruby-advisory-db/gems/as/OSVDB-112683.yml +10 -0
  48. data/data/ruby-advisory-db/gems/authlogic/OSVDB-89064.yml +15 -0
  49. data/data/ruby-advisory-db/gems/auto_awesomplete/OSVDB-132800.yml +11 -0
  50. data/data/ruby-advisory-db/gems/auto_select2/OSVDB-132800.yml +13 -0
  51. data/data/ruby-advisory-db/gems/awesome_spawn/CVE-2014-0156.yml +19 -0
  52. data/data/ruby-advisory-db/gems/backup-agoddard/OSVDB-108578.yml +8 -0
  53. data/data/ruby-advisory-db/gems/backup_checksum/OSVDB-108569.yml +12 -0
  54. data/data/ruby-advisory-db/gems/backup_checksum/OSVDB-108570.yml +10 -0
  55. data/data/ruby-advisory-db/gems/bcrypt-ruby/OSVDB-62067.yml +19 -0
  56. data/data/ruby-advisory-db/gems/bcrypt/OSVDB-62067.yml +17 -0
  57. data/data/ruby-advisory-db/gems/bio-basespace-sdk/OSVDB-101031.yml +8 -0
  58. data/data/ruby-advisory-db/gems/brbackup/OSVDB-108899.yml +12 -0
  59. data/data/ruby-advisory-db/gems/brbackup/OSVDB-108900.yml +11 -0
  60. data/data/ruby-advisory-db/gems/brbackup/OSVDB-108901.yml +11 -0
  61. data/data/ruby-advisory-db/gems/bson/CVE-2015-4412.yml +16 -0
  62. data/data/ruby-advisory-db/gems/builder/OSVDB-95668.yml +13 -0
  63. data/data/ruby-advisory-db/gems/bundler/OSVDB-110004.yml +15 -0
  64. data/data/ruby-advisory-db/gems/bundler/OSVDB-115090.yml +13 -0
  65. data/data/ruby-advisory-db/gems/bundler/OSVDB-115091.yml +12 -0
  66. data/data/ruby-advisory-db/gems/bundler/OSVDB-115917.yml +12 -0
  67. data/data/ruby-advisory-db/gems/cap-strap/OSVDB-108574.yml +8 -0
  68. data/data/ruby-advisory-db/gems/cap-strap/OSVDB-108575.yml +7 -0
  69. data/data/ruby-advisory-db/gems/ciborg/OSVDB-108586.yml +8 -0
  70. data/data/ruby-advisory-db/gems/codders-dataset/OSVDB-108582.yml +8 -0
  71. data/data/ruby-advisory-db/gems/codders-dataset/OSVDB-108583.yml +8 -0
  72. data/data/ruby-advisory-db/gems/colorscore/CVE-2015-7541.yml +20 -0
  73. data/data/ruby-advisory-db/gems/command_wrap/OSVDB-91450.yml +0 -1
  74. data/data/ruby-advisory-db/gems/cremefraiche/OSVDB-93395.yml +4 -4
  75. data/data/ruby-advisory-db/gems/curb/OSVDB-114600.yml +12 -0
  76. data/data/ruby-advisory-db/gems/curl/OSVDB-91230.yml +7 -6
  77. data/data/ruby-advisory-db/gems/devise-two-factor/CVE-2015-7225.yml +22 -0
  78. data/data/ruby-advisory-db/gems/devise/CVE-2015-8314.yml +14 -0
  79. data/data/ruby-advisory-db/gems/devise/OSVDB-114435.yml +17 -0
  80. data/data/ruby-advisory-db/gems/devise/OSVDB-89642.yml +1 -1
  81. data/data/ruby-advisory-db/gems/doorkeeper/CVE-2014-8144.yml +26 -0
  82. data/data/ruby-advisory-db/gems/doorkeeper/OSVDB-118830.yml +17 -0
  83. data/data/ruby-advisory-db/gems/dragonfly/OSVDB-110439.yml +13 -0
  84. data/data/ruby-advisory-db/gems/dragonfly/OSVDB-90647.yml +8 -11
  85. data/data/ruby-advisory-db/gems/dragonfly/OSVDB-96798.yml +14 -0
  86. data/data/ruby-advisory-db/gems/dragonfly/OSVDB-97854.yml +12 -0
  87. data/data/ruby-advisory-db/gems/echor/OSVDB-102129.yml +7 -6
  88. data/data/ruby-advisory-db/gems/echor/OSVDB-102130.yml +6 -5
  89. data/data/ruby-advisory-db/gems/ember-source/CVE-2013-4170.yml +25 -0
  90. data/data/ruby-advisory-db/gems/ember-source/CVE-2014-0013.yml +33 -0
  91. data/data/ruby-advisory-db/gems/ember-source/CVE-2014-0014.yml +30 -0
  92. data/data/ruby-advisory-db/gems/ember-source/CVE-2014-0046.yml +26 -0
  93. data/data/ruby-advisory-db/gems/ember-source/CVE-2015-1866.yml +26 -0
  94. data/data/ruby-advisory-db/gems/ember-source/CVE-2015-7565.yml +30 -0
  95. data/data/ruby-advisory-db/gems/fastreader/OSVDB-91232.yml +6 -5
  96. data/data/ruby-advisory-db/gems/fat_free_crm/OSVDB-101445.yml +17 -0
  97. data/data/ruby-advisory-db/gems/fat_free_crm/OSVDB-101446.yml +19 -0
  98. data/data/ruby-advisory-db/gems/fat_free_crm/OSVDB-101447.yml +17 -0
  99. data/data/ruby-advisory-db/gems/fat_free_crm/OSVDB-101448.yml +19 -0
  100. data/data/ruby-advisory-db/gems/fat_free_crm/OSVDB-101700.yml +16 -0
  101. data/data/ruby-advisory-db/gems/fat_free_crm/OSVDB-110420.yml +19 -0
  102. data/data/ruby-advisory-db/gems/fat_free_crm/OSVDB-118465.yml +17 -0
  103. data/data/ruby-advisory-db/gems/features/OSVDB-96975.yml +8 -0
  104. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90715.yml +0 -3
  105. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90716.yml +0 -3
  106. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90717.yml +0 -2
  107. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90718.yml +7 -0
  108. data/data/ruby-advisory-db/gems/flash_tool/OSVDB-90829.yml +0 -1
  109. data/data/ruby-advisory-db/gems/flavour_saver/OSVDB-110796.yml +14 -0
  110. data/data/ruby-advisory-db/gems/flukso4r/OSVDB-101577.yml +7 -0
  111. data/data/ruby-advisory-db/gems/fog-dragonfly/OSVDB-110439.yml +15 -0
  112. data/data/ruby-advisory-db/gems/fog-dragonfly/OSVDB-90647.yml +16 -0
  113. data/data/ruby-advisory-db/gems/fog-dragonfly/OSVDB-96798.yml +9 -6
  114. data/data/ruby-advisory-db/gems/fog-dragonfly/OSVDB-97854.yml +12 -0
  115. data/data/ruby-advisory-db/gems/gnms/OSVDB-108594.yml +7 -0
  116. data/data/ruby-advisory-db/gems/gollum-grit_adapter/CVE-2014-9489.yml +23 -0
  117. data/data/ruby-advisory-db/gems/gollum/CVE-2015-7314.yml +13 -0
  118. data/data/ruby-advisory-db/gems/gyazo/OSVDB-108563.yml +10 -0
  119. data/data/ruby-advisory-db/gems/handlebars-source/OSVDB-131671.yml +17 -0
  120. data/data/ruby-advisory-db/gems/http/CVE-2015-1828.yml +14 -0
  121. data/data/ruby-advisory-db/gems/jquery-rails/CVE-2015-1840.yml +36 -0
  122. data/data/ruby-advisory-db/gems/jquery-ujs/CVE-2015-1840.yml +35 -0
  123. data/data/ruby-advisory-db/gems/jruby-openssl/CVE-2009-4123.yml +16 -0
  124. data/data/ruby-advisory-db/gems/jruby-sandbox/OSVDB-106279.yml +12 -0
  125. data/data/ruby-advisory-db/gems/json/OSVDB-101137.yml +17 -0
  126. data/data/ruby-advisory-db/gems/json/OSVDB-101157.yml +14 -0
  127. data/data/ruby-advisory-db/gems/json/OSVDB-90074.yml +1 -1
  128. data/data/ruby-advisory-db/gems/kafo/OSVDB-106826.yml +15 -0
  129. data/data/ruby-advisory-db/gems/kajam/OSVDB-108529.yml +12 -0
  130. data/data/ruby-advisory-db/gems/kajam/OSVDB-108530.yml +11 -0
  131. data/data/ruby-advisory-db/gems/karo/OSVDB-108573.yml +10 -0
  132. data/data/ruby-advisory-db/gems/karteek-docsplit/OSVDB-92117.yml +0 -1
  133. data/data/ruby-advisory-db/gems/kcapifony/OSVDB-108571.yml +8 -0
  134. data/data/ruby-advisory-db/gems/kcapifony/OSVDB-108572.yml +7 -0
  135. data/data/ruby-advisory-db/gems/kelredd-pruview/OSVDB-92228.yml +0 -1
  136. data/data/ruby-advisory-db/gems/kompanee-recipes/OSVDB-108593.yml +12 -0
  137. data/data/ruby-advisory-db/gems/lawn-login/OSVDB-108576.yml +8 -0
  138. data/data/ruby-advisory-db/gems/ldap_fluff/OSVDB-90579.yml +15 -0
  139. data/data/ruby-advisory-db/gems/ldoce/OSVDB-91870.yml +0 -1
  140. data/data/ruby-advisory-db/gems/lean-ruport/OSVDB-108581.yml +8 -0
  141. data/data/ruby-advisory-db/gems/lingq/OSVDB-108585.yml +7 -0
  142. data/data/ruby-advisory-db/gems/lynx/OSVDB-108579.yml +7 -0
  143. data/data/ruby-advisory-db/gems/lynx/OSVDB-108580.yml +8 -0
  144. data/data/ruby-advisory-db/gems/mail/OSVDB-131677.yml +19 -0
  145. data/data/ruby-advisory-db/gems/mapbox-rails/OSVDB-129854.yml +21 -0
  146. data/data/ruby-advisory-db/gems/mapbox-rails/OSVDB-132871.yml +22 -0
  147. data/data/ruby-advisory-db/gems/md2pdf/OSVDB-92290.yml +0 -1
  148. data/data/ruby-advisory-db/gems/mini_magick/OSVDB-91231.yml +5 -5
  149. data/data/ruby-advisory-db/gems/moped/CVE-2015-4410.yml +17 -0
  150. data/data/ruby-advisory-db/gems/mustache-js-rails/OSVDB-131671.yml +17 -0
  151. data/data/ruby-advisory-db/gems/net-ldap/OSVDB-106108.yml +14 -0
  152. data/data/ruby-advisory-db/gems/nokogiri/CVE-2015-1819.yml +52 -0
  153. data/data/ruby-advisory-db/gems/nokogiri/CVE-2015-5312.yml +92 -0
  154. data/data/ruby-advisory-db/gems/nokogiri/CVE-2015-7499.yml +37 -0
  155. data/data/ruby-advisory-db/gems/nokogiri/OSVDB-101179.yml +11 -5
  156. data/data/ruby-advisory-db/gems/nokogiri/OSVDB-118481.yml +15 -0
  157. data/data/ruby-advisory-db/gems/nokogiri/OSVDB-90946.yml +15 -0
  158. data/data/ruby-advisory-db/gems/open-uri-cached/OSVDB-121701.yml +13 -0
  159. data/data/ruby-advisory-db/gems/paperclip/CVE-2015-2963.yml +16 -0
  160. data/data/ruby-advisory-db/gems/paratrooper-newrelic/OSVDB-101839.yml +6 -5
  161. data/data/ruby-advisory-db/gems/paratrooper-pingdom/OSVDB-101847.yml +6 -6
  162. data/data/ruby-advisory-db/gems/passenger/CVE-2014-1831.yml +13 -0
  163. data/data/ruby-advisory-db/gems/passenger/CVE-2014-1832.yml +13 -0
  164. data/data/ruby-advisory-db/gems/passenger/CVE-2015-7519.yml +17 -0
  165. data/data/ruby-advisory-db/gems/passenger/OSVDB-90738.yml +16 -0
  166. data/data/ruby-advisory-db/gems/passenger/OSVDB-93752.yml +15 -0
  167. data/data/ruby-advisory-db/gems/passenger/OSVDB-94074.yml +14 -0
  168. data/data/ruby-advisory-db/gems/point-cli/OSVDB-108577.yml +8 -0
  169. data/data/ruby-advisory-db/gems/quick_magick/OSVDB-106954.yml +7 -0
  170. data/data/ruby-advisory-db/gems/rack-attack/OSVDB-132234.yml +26 -0
  171. data/data/ruby-advisory-db/gems/rack-ssl/OSVDB-104734.yml +11 -0
  172. data/data/ruby-advisory-db/gems/rack/CVE-2015-3225.yml +18 -0
  173. data/data/ruby-advisory-db/gems/rack/OSVDB-78121.yml +21 -0
  174. data/data/ruby-advisory-db/gems/rack/OSVDB-89317.yml +21 -0
  175. data/data/ruby-advisory-db/gems/rack/OSVDB-89320.yml +19 -0
  176. data/data/ruby-advisory-db/gems/rack/OSVDB-89327.yml +20 -0
  177. data/data/ruby-advisory-db/gems/rack/OSVDB-89938.yml +18 -0
  178. data/data/ruby-advisory-db/gems/rack/OSVDB-89939.yml +9 -9
  179. data/data/ruby-advisory-db/gems/rails-html-sanitizer/CVE-2015-7578.yml +47 -0
  180. data/data/ruby-advisory-db/gems/rails-html-sanitizer/CVE-2015-7579.yml +75 -0
  181. data/data/ruby-advisory-db/gems/rails-html-sanitizer/CVE-2015-7580.yml +70 -0
  182. data/data/ruby-advisory-db/gems/rbovirt/OSVDB-104080.yml +1 -1
  183. data/data/ruby-advisory-db/gems/redcarpet/CVE-2015-5147.yml +17 -0
  184. data/data/ruby-advisory-db/gems/redcarpet/OSVDB-120415.yml +16 -0
  185. data/data/ruby-advisory-db/gems/redis-namespace/OSVDB-96425.yml +4 -5
  186. data/data/ruby-advisory-db/gems/refile/OSVDB-120857.yml +16 -0
  187. data/data/ruby-advisory-db/gems/rest-client/CVE-2015-1820.yml +23 -0
  188. data/data/ruby-advisory-db/gems/rest-client/OSVDB-117461.yml +13 -0
  189. data/data/ruby-advisory-db/gems/rgpg/OSVDB-95948.yml +9 -8
  190. data/data/ruby-advisory-db/gems/ruby-saml/OSVDB-117903.yml +13 -0
  191. data/data/ruby-advisory-db/gems/ruby-saml/OSVDB-124383.yml +11 -0
  192. data/data/ruby-advisory-db/gems/ruby-saml/OSVDB-124991.yml +13 -0
  193. data/data/ruby-advisory-db/gems/screen_capture/OSVDB-107783.yml +7 -0
  194. data/data/ruby-advisory-db/gems/sentry-raven/OSVDB-115654.yml +14 -0
  195. data/data/ruby-advisory-db/gems/sfpagent/OSVDB-105971.yml +9 -7
  196. data/data/ruby-advisory-db/gems/show_in_browser/OSVDB-93490.yml +8 -0
  197. data/data/ruby-advisory-db/gems/sidekiq-pro/OSVDB-126329.yml +12 -0
  198. data/data/ruby-advisory-db/gems/sidekiq-pro/OSVDB-126330.yml +10 -0
  199. data/data/ruby-advisory-db/gems/sidekiq-pro/OSVDB-126331.yml +14 -0
  200. data/data/ruby-advisory-db/gems/sidekiq/OSVDB-125675.yml +9 -0
  201. data/data/ruby-advisory-db/gems/sidekiq/OSVDB-125676.yml +14 -0
  202. data/data/ruby-advisory-db/gems/sidekiq/OSVDB-125678.yml +9 -0
  203. data/data/ruby-advisory-db/gems/sounder/OSVDB-96278.yml +5 -4
  204. data/data/ruby-advisory-db/gems/spree/OSVDB-119205.yml +18 -0
  205. data/data/ruby-advisory-db/gems/spree/OSVDB-125699.yml +18 -0
  206. data/data/ruby-advisory-db/gems/spree/OSVDB-125701.yml +17 -0
  207. data/data/ruby-advisory-db/gems/spree/OSVDB-125712.yml +16 -0
  208. data/data/ruby-advisory-db/gems/spree/OSVDB-125713.yml +15 -0
  209. data/data/ruby-advisory-db/gems/spree/OSVDB-69098.yml +19 -0
  210. data/data/ruby-advisory-db/gems/spree/OSVDB-73751.yml +11 -0
  211. data/data/ruby-advisory-db/gems/spree/OSVDB-76011.yml +15 -0
  212. data/data/ruby-advisory-db/gems/spree/OSVDB-81505.yml +14 -0
  213. data/data/ruby-advisory-db/gems/spree/OSVDB-81506.yml +16 -0
  214. data/data/ruby-advisory-db/gems/spree/OSVDB-90865.yml +20 -0
  215. data/data/ruby-advisory-db/gems/spree/OSVDB-91216.yml +9 -3
  216. data/data/ruby-advisory-db/gems/spree/OSVDB-91217.yml +9 -3
  217. data/data/ruby-advisory-db/gems/spree/OSVDB-91218.yml +9 -3
  218. data/data/ruby-advisory-db/gems/spree/OSVDB-91219.yml +9 -3
  219. data/data/ruby-advisory-db/gems/spree_auth/OSVDB-90865.yml +16 -0
  220. data/data/ruby-advisory-db/gems/spree_auth_devise/OSVDB-90865.yml +20 -0
  221. data/data/ruby-advisory-db/gems/sprockets/CVE-2014-7819.yml +27 -0
  222. data/data/ruby-advisory-db/gems/sprout/OSVDB-100598.yml +7 -5
  223. data/data/ruby-advisory-db/gems/sup/CVE-2013-4478.yml +14 -0
  224. data/data/ruby-advisory-db/gems/sup/CVE-2013-4479.yml +14 -0
  225. data/data/ruby-advisory-db/gems/thumbshooter/OSVDB-91839.yml +0 -1
  226. data/data/ruby-advisory-db/gems/twitter-bootstrap-rails/OSVDB-109206.yml +22 -0
  227. data/data/ruby-advisory-db/gems/uglifier/OSVDB-126747.yml +19 -0
  228. data/data/ruby-advisory-db/gems/web-console/CVE-2015-3224.yml +22 -0
  229. data/data/ruby-advisory-db/gems/web-console/OSVDB-112346.yml +12 -0
  230. data/data/ruby-advisory-db/gems/webbynode/OSVDB-100920.yml +4 -3
  231. data/data/ruby-advisory-db/gems/wicked/OSVDB-98270.yml +2 -2
  232. data/data/ruby-advisory-db/gems/xaviershay-dm-rails/OSVDB-118579.yml +13 -0
  233. data/data/ruby-advisory-db/lib/cf_scrape.py +5 -0
  234. data/data/ruby-advisory-db/lib/{scrape.rb → osvdb_scrape.rb} +16 -11
  235. data/data/ruby-advisory-db/libraries/rubygems/CVE-2013-4287.yml +19 -0
  236. data/data/ruby-advisory-db/libraries/rubygems/CVE-2013-4363.yml +20 -0
  237. data/data/ruby-advisory-db/libraries/rubygems/CVE-2015-3900.yml +19 -0
  238. data/data/ruby-advisory-db/libraries/rubygems/CVE-2015-4020.yml +19 -0
  239. data/data/ruby-advisory-db/libraries/rubygems/OSVDB-33561.yml +17 -0
  240. data/data/ruby-advisory-db/libraries/rubygems/OSVDB-81444.yml +14 -0
  241. data/data/ruby-advisory-db/libraries/rubygems/OSVDB-85809.yml +16 -0
  242. data/data/ruby-advisory-db/rubies/jruby/CVE-2010-1330.yml +17 -0
  243. data/data/ruby-advisory-db/rubies/jruby/CVE-2011-4838.yml +15 -0
  244. data/data/ruby-advisory-db/rubies/jruby/CVE-2012-5370.yml +17 -0
  245. data/data/ruby-advisory-db/rubies/jruby/OSVDB-94644.yml +12 -0
  246. data/data/ruby-advisory-db/rubies/rbx/OSVDB-78119.yml +13 -0
  247. data/data/ruby-advisory-db/rubies/rbx/OSVDB-87861.yml +17 -0
  248. data/data/ruby-advisory-db/rubies/ruby/CVE-2007-5162.yml +16 -0
  249. data/data/ruby-advisory-db/rubies/ruby/CVE-2007-5770.yml +17 -0
  250. data/data/ruby-advisory-db/rubies/ruby/CVE-2008-1447.yml +15 -0
  251. data/data/ruby-advisory-db/rubies/ruby/CVE-2008-1891.yml +21 -0
  252. data/data/ruby-advisory-db/rubies/ruby/CVE-2008-2376.yml +18 -0
  253. data/data/ruby-advisory-db/rubies/ruby/CVE-2008-3443.yml +17 -0
  254. data/data/ruby-advisory-db/rubies/ruby/CVE-2008-3655.yml +18 -0
  255. data/data/ruby-advisory-db/rubies/ruby/CVE-2008-3656.yml +19 -0
  256. data/data/ruby-advisory-db/rubies/ruby/CVE-2008-3657.yml +16 -0
  257. data/data/ruby-advisory-db/rubies/ruby/CVE-2008-3905.yml +17 -0
  258. data/data/ruby-advisory-db/rubies/ruby/CVE-2009-0642.yml +17 -0
  259. data/data/ruby-advisory-db/rubies/ruby/CVE-2009-5147.yml +13 -0
  260. data/data/ruby-advisory-db/rubies/ruby/CVE-2011-0188.yml +17 -0
  261. data/data/ruby-advisory-db/rubies/ruby/CVE-2011-2686.yml +17 -0
  262. data/data/ruby-advisory-db/rubies/ruby/CVE-2011-2705.yml +16 -0
  263. data/data/ruby-advisory-db/rubies/ruby/CVE-2011-3009.yml +17 -0
  264. data/data/ruby-advisory-db/rubies/ruby/CVE-2012-4464.yml +17 -0
  265. data/data/ruby-advisory-db/rubies/ruby/CVE-2012-4466.yml +16 -0
  266. data/data/ruby-advisory-db/rubies/ruby/CVE-2012-4481.yml +15 -0
  267. data/data/ruby-advisory-db/rubies/ruby/CVE-2015-7551.yml +19 -0
  268. data/data/ruby-advisory-db/rubies/ruby/OSVDB-100113.yml +17 -0
  269. data/data/ruby-advisory-db/rubies/ruby/OSVDB-105027.yml +20 -0
  270. data/data/ruby-advisory-db/rubies/ruby/OSVDB-107478.yml +16 -0
  271. data/data/ruby-advisory-db/rubies/ruby/OSVDB-108971.yml +17 -0
  272. data/data/ruby-advisory-db/rubies/ruby/OSVDB-113747.yml +19 -0
  273. data/data/ruby-advisory-db/rubies/ruby/OSVDB-114641.yml +22 -0
  274. data/data/ruby-advisory-db/rubies/ruby/OSVDB-120541.yml +22 -0
  275. data/data/ruby-advisory-db/rubies/ruby/OSVDB-46550.yml +22 -0
  276. data/data/ruby-advisory-db/rubies/ruby/OSVDB-46551.yml +21 -0
  277. data/data/ruby-advisory-db/rubies/ruby/OSVDB-46552.yml +21 -0
  278. data/data/ruby-advisory-db/rubies/ruby/OSVDB-46553.yml +22 -0
  279. data/data/ruby-advisory-db/rubies/ruby/OSVDB-46554.yml +18 -0
  280. data/data/ruby-advisory-db/rubies/ruby/OSVDB-47753.yml +16 -0
  281. data/data/ruby-advisory-db/rubies/ruby/OSVDB-55031.yml +17 -0
  282. data/data/ruby-advisory-db/rubies/ruby/OSVDB-60880.yml +17 -0
  283. data/data/ruby-advisory-db/rubies/ruby/OSVDB-61774.yml +20 -0
  284. data/data/ruby-advisory-db/rubies/ruby/OSVDB-65556.yml +17 -0
  285. data/data/ruby-advisory-db/rubies/ruby/OSVDB-66040.yml +17 -0
  286. data/data/ruby-advisory-db/rubies/ruby/OSVDB-70957.yml +15 -0
  287. data/data/ruby-advisory-db/rubies/ruby/OSVDB-70958.yml +20 -0
  288. data/data/ruby-advisory-db/rubies/ruby/OSVDB-74829.yml +18 -0
  289. data/data/ruby-advisory-db/rubies/ruby/OSVDB-78118.yml +14 -0
  290. data/data/ruby-advisory-db/rubies/ruby/OSVDB-87280.yml +17 -0
  291. data/data/ruby-advisory-db/rubies/ruby/OSVDB-87863.yml +18 -0
  292. data/data/ruby-advisory-db/rubies/ruby/OSVDB-87917.yml +16 -0
  293. data/data/ruby-advisory-db/rubies/ruby/OSVDB-90587.yml +16 -0
  294. data/data/ruby-advisory-db/rubies/ruby/OSVDB-93414.yml +19 -0
  295. data/data/ruby-advisory-db/rubies/ruby/OSVDB-94628.yml +21 -0
  296. data/data/ruby-advisory-db/scripts/post-advisories.sh +18 -0
  297. data/data/ruby-advisory-db/spec/advisory_example.rb +59 -37
  298. data/data/ruby-advisory-db/spec/gem_example.rb +22 -0
  299. data/data/ruby-advisory-db/spec/gems_spec.rb +18 -2
  300. data/data/ruby-advisory-db/spec/library_example.rb +21 -0
  301. data/data/ruby-advisory-db/spec/ruby_example.rb +23 -0
  302. data/lib/bundler/audit.rb +1 -1
  303. data/lib/bundler/audit/advisory.rb +21 -1
  304. data/lib/bundler/audit/cli.rb +14 -2
  305. data/lib/bundler/audit/database.rb +7 -4
  306. data/lib/bundler/audit/scanner.rb +24 -9
  307. data/lib/bundler/audit/task.rb +31 -0
  308. data/lib/bundler/audit/version.rb +2 -2
  309. data/spec/advisory_spec.rb +68 -24
  310. data/spec/cli_spec.rb +44 -0
  311. data/spec/integration_spec.rb +22 -0
  312. data/spec/spec_helper.rb +1 -0
  313. metadata +246 -4
@@ -5,38 +5,33 @@ shared_examples_for 'Advisory' do |path|
5
5
  advisory = YAML.load_file(path)
6
6
 
7
7
  describe path do
8
- let(:gem) { File.basename(File.dirname(path)) }
8
+ let(:filename) { File.basename(path).chomp('.yml') }
9
+
9
10
  let(:filename_cve) do
10
- if File.basename(path).start_with?('CVE-')
11
- File.basename(path).gsub('CVE-','').chomp('.yml')
12
- else
13
- nil
11
+ if filename.start_with?('CVE-')
12
+ filename.gsub('CVE-','')
14
13
  end
15
14
  end
15
+
16
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
17
+ if filename.start_with?('OSVDB-')
18
+ filename.gsub('OSVDB-','')
21
19
  end
22
20
  end
23
21
 
24
- it "should have CVE or OSVDB" do
25
- (advisory['cve'] || advisory['osvdb']).should_not be_nil
22
+ it "should be correctly named CVE-XXX or OSVDB-XXX" do
23
+ expect(filename).to match(/^(CVE-\d{4}-(0\d{3}|[1-9]\d{3,})|OSVDB-\d+)$/)
26
24
  end
27
25
 
28
- describe "gem" do
29
- subject { advisory['gem'] }
30
-
31
- it { should be_kind_of(String) }
32
- it { should == gem }
26
+ it "should have CVE or OSVDB" do
27
+ expect(advisory['cve'] || advisory['osvdb']).not_to be_nil
33
28
  end
34
29
 
35
30
  describe "framework" do
36
31
  subject { advisory['framework'] }
37
32
 
38
33
  it "may be nil or a String" do
39
- [NilClass, String].should include(subject.class)
34
+ expect(subject).to be_kind_of(String).or(be_nil)
40
35
  end
41
36
  end
42
37
 
@@ -44,7 +39,7 @@ shared_examples_for 'Advisory' do |path|
44
39
  subject { advisory['platform'] }
45
40
 
46
41
  it "may be nil or a String" do
47
- [NilClass, String].should include(subject.class)
42
+ expect(subject).to be_kind_of(String).or(be_nil)
48
43
  end
49
44
  end
50
45
 
@@ -52,23 +47,25 @@ shared_examples_for 'Advisory' do |path|
52
47
  subject { advisory['cve'] }
53
48
 
54
49
  it "may be nil or a String" do
55
- [NilClass, String].should include(subject.class)
50
+ expect(subject).to be_kind_of(String).or(be_nil)
56
51
  end
57
52
  it "should be id in filename if filename is CVE-XXX" do
58
53
  if filename_cve
59
- should == filename_cve
54
+ is_expected.to eq(filename_cve)
60
55
  end
61
56
  end
62
57
  end
63
58
 
64
59
  describe "osvdb" do
65
60
  subject { advisory['osvdb'] }
61
+
66
62
  it "may be nil or a Fixnum" do
67
- [NilClass, Fixnum].should include(subject.class)
63
+ expect(subject).to be_kind_of(Fixnum).or(be_nil)
68
64
  end
65
+
69
66
  it "should be id in filename if filename is OSVDB-XXX" do
70
67
  if filename_osvdb
71
- should == filename_osvdb.to_i
68
+ is_expected.to eq(filename_osvdb.to_i)
72
69
  end
73
70
  end
74
71
  end
@@ -76,41 +73,41 @@ shared_examples_for 'Advisory' do |path|
76
73
  describe "url" do
77
74
  subject { advisory['url'] }
78
75
 
79
- it { should be_kind_of(String) }
80
- it { should_not be_empty }
76
+ it { is_expected.to be_kind_of(String) }
77
+ it { is_expected.not_to be_empty }
81
78
  end
82
79
 
83
80
  describe "title" do
84
81
  subject { advisory['title'] }
85
82
 
86
- it { should be_kind_of(String) }
87
- it { should_not be_empty }
83
+ it { is_expected.to be_kind_of(String) }
84
+ it { is_expected.not_to be_empty }
88
85
  end
89
86
 
90
87
  describe "date" do
91
88
  subject { advisory['date'] }
92
89
 
93
- it { should be_kind_of(Date) }
90
+ it { is_expected.to be_kind_of(Date) }
94
91
  end
95
92
 
96
93
  describe "description" do
97
94
  subject { advisory['description'] }
98
95
 
99
- it { should be_kind_of(String) }
100
- it { should_not be_empty }
96
+ it { is_expected.to be_kind_of(String) }
97
+ it { is_expected.not_to be_empty }
101
98
  end
102
99
 
103
100
  describe "cvss_v2" do
104
101
  subject { advisory['cvss_v2'] }
105
102
 
106
103
  it "may be nil or a Float" do
107
- [NilClass, Float].should include(subject.class)
104
+ expect(subject).to be_kind_of(Float).or(be_nil)
108
105
  end
109
106
 
110
107
  case advisory['cvss_v2']
111
108
  when Float
112
109
  context "when a Float" do
113
- it { ((0.0)..(10.0)).should include(subject) }
110
+ it { expect((0.0)..(10.0)).to include(subject) }
114
111
  end
115
112
  end
116
113
  end
@@ -119,7 +116,7 @@ shared_examples_for 'Advisory' do |path|
119
116
  subject { advisory['patched_versions'] }
120
117
 
121
118
  it "may be nil or an Array" do
122
- [NilClass, Array].should include(subject.class)
119
+ expect(subject).to be_kind_of(Array).or(be_nil)
123
120
  end
124
121
 
125
122
  describe "each patched version" do
@@ -129,9 +126,9 @@ shared_examples_for 'Advisory' do |path|
129
126
  subject { version.split(', ') }
130
127
 
131
128
  it "should contain valid RubyGem version requirements" do
132
- lambda {
129
+ expect {
133
130
  Gem::Requirement.new(*subject)
134
- }.should_not raise_error
131
+ }.not_to raise_error
135
132
  end
136
133
  end
137
134
  end
@@ -143,7 +140,7 @@ shared_examples_for 'Advisory' do |path|
143
140
  subject { advisory['unaffected_versions'] }
144
141
 
145
142
  it "may be nil or an Array" do
146
- [NilClass, Array].should include(subject.class)
143
+ expect(subject).to be_kind_of(Array).or(be_nil)
147
144
  end
148
145
 
149
146
  case advisory['unaffected_versions']
@@ -153,13 +150,38 @@ shared_examples_for 'Advisory' do |path|
153
150
  subject { version.split(', ') }
154
151
 
155
152
  it "should contain valid RubyGem version requirements" do
156
- lambda {
153
+ expect {
157
154
  Gem::Requirement.new(*subject)
158
- }.should_not raise_error
155
+ }.not_to raise_error
156
+ end
157
+ end
158
+ end
159
+ end
160
+ end
161
+
162
+ describe "related" do
163
+ subject { advisory['related'] }
164
+
165
+ it "may be nil or a Hash" do
166
+ expect(subject).to be_kind_of(Hash).or(be_nil)
167
+ end
168
+
169
+ case advisory["related"]
170
+ when Hash
171
+ advisory["related"].each_pair do |name, values|
172
+ describe name do
173
+ it "should be either a cve, an osvdb or a url" do
174
+ expect(["cve", "osvdb", "url"]).to include(name)
175
+ end
176
+
177
+ it "should always contain an array" do
178
+ expect(values).to be_kind_of(Array)
159
179
  end
160
180
  end
161
181
  end
162
182
  end
163
183
  end
184
+
185
+
164
186
  end
165
187
  end
@@ -0,0 +1,22 @@
1
+ load File.join(File.dirname(__FILE__), 'spec_helper.rb')
2
+ require 'advisory_example'
3
+
4
+ shared_examples_for "Gem Advisory" do |path|
5
+ include_examples 'Advisory', path
6
+
7
+ advisory = YAML.load_file(path)
8
+
9
+ describe path do
10
+ let(:gem) { File.basename(File.dirname(path)) }
11
+
12
+ describe "gem" do
13
+ subject { advisory['gem'] }
14
+
15
+ it { is_expected.to be_kind_of(String) }
16
+ it "should be equal to filename (case-insensitive)" do
17
+ expect(subject.downcase).to eq(gem.downcase)
18
+ end
19
+ end
20
+ end
21
+
22
+ end
@@ -1,7 +1,23 @@
1
1
  load File.join(File.dirname(__FILE__), 'spec_helper.rb')
2
- load File.join(File.dirname(__FILE__), 'advisory_example.rb')
2
+ require 'gem_example'
3
+ require 'library_example'
4
+ require 'ruby_example'
5
+
3
6
  describe "gems" do
4
7
  Dir.glob(File.join(File.dirname(__FILE__), '../gems/*/*.yml')) do |path|
5
- include_examples 'Advisory', path
8
+ include_examples 'Gem Advisory', path
6
9
  end
7
10
  end
11
+
12
+ describe "libraries" do
13
+ Dir.glob(File.join(File.dirname(__FILE__), '../libraries/*/*.yml')) do |path|
14
+ include_examples 'Libraries Advisory', path
15
+ end
16
+ end
17
+
18
+ describe "rubies" do
19
+ Dir.glob(File.join(File.dirname(__FILE__), '../rubies/*/*.yml')) do |path|
20
+ include_examples 'Rubies Advisory', path
21
+ end
22
+ end
23
+
@@ -0,0 +1,21 @@
1
+ load File.join(File.dirname(__FILE__), 'spec_helper.rb')
2
+ require 'advisory_example'
3
+
4
+ shared_examples_for "Libraries Advisory" do |path|
5
+ include_examples 'Advisory', path
6
+
7
+ advisory = YAML.load_file(path)
8
+
9
+ describe path do
10
+ let(:library) { File.basename(File.dirname(path)) }
11
+
12
+ describe "library" do
13
+ subject { advisory['library'] }
14
+
15
+ it { is_expected.to be_kind_of(String) }
16
+ it "should be equal to filename (case-insensitive)" do
17
+ expect(subject.downcase).to eq(library.downcase)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ load File.join(File.dirname(__FILE__), 'spec_helper.rb')
2
+ require 'advisory_example'
3
+
4
+ shared_examples_for "Rubies Advisory" do |path|
5
+ include_examples 'Advisory', path
6
+
7
+ advisory = YAML.load_file(path)
8
+
9
+ describe path do
10
+ let(:engine) { File.basename(File.dirname(path)) }
11
+
12
+ describe "engine" do
13
+ subject { advisory['engine'] }
14
+
15
+ it { is_expected.to be_kind_of(String) }
16
+ it "should be equal to filename (case-insensitive)" do
17
+ expect(subject.downcase).to eq(engine.downcase)
18
+ end
19
+ end
20
+ end
21
+
22
+ end
23
+
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2015 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2016 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2015 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2016 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -23,6 +23,7 @@ module Bundler
23
23
  :id,
24
24
  :url,
25
25
  :title,
26
+ :date,
26
27
  :description,
27
28
  :cvss_v2,
28
29
  :cve,
@@ -59,6 +60,7 @@ module Bundler
59
60
  id,
60
61
  data['url'],
61
62
  data['title'],
63
+ data['date'],
62
64
  data['description'],
63
65
  data['cvss_v2'],
64
66
  data['cve'],
@@ -68,6 +70,24 @@ module Bundler
68
70
  )
69
71
  end
70
72
 
73
+ #
74
+ # The CVE identifier.
75
+ #
76
+ # @return [String, nil]
77
+ #
78
+ def cve_id
79
+ "CVE-#{cve}" if cve
80
+ end
81
+
82
+ #
83
+ # The OSVDB identifier.
84
+ #
85
+ # @return [String, nil]
86
+ #
87
+ def osvdb_id
88
+ "OSVDB-#{osvdb}" if osvdb
89
+ end
90
+
71
91
  #
72
92
  # Determines how critical the vulnerability is.
73
93
  #
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2015 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2016 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -32,8 +32,11 @@ module Bundler
32
32
  desc 'check', 'Checks the Gemfile.lock for insecure dependencies'
33
33
  method_option :verbose, :type => :boolean, :aliases => '-v'
34
34
  method_option :ignore, :type => :array, :aliases => '-i'
35
+ method_option :update, :type => :boolean, :aliases => '-u'
35
36
 
36
37
  def check
38
+ update if options[:update]
39
+
37
40
  scanner = Scanner.new
38
41
  vulnerable = false
39
42
 
@@ -60,7 +63,16 @@ module Bundler
60
63
  def update
61
64
  say "Updating ruby-advisory-db ..."
62
65
 
63
- Database.update!
66
+ case Database.update!
67
+ when true
68
+ say "Updated ruby-advisory-db", :green
69
+ when false
70
+ say "Failed updating ruby-advisory-db!", :red
71
+ exit 1
72
+ when nil
73
+ say "Skipping update", :yellow
74
+ end
75
+
64
76
  puts "ruby-advisory-db: #{Database.new.size} advisories"
65
77
  end
66
78
 
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2013-2015 Hal Brodigan (postmodern.mod3 at gmail.com)
2
+ # Copyright (c) 2013-2016 Hal Brodigan (postmodern.mod3 at gmail.com)
3
3
  #
4
4
  # bundler-audit is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -82,8 +82,9 @@ module Bundler
82
82
  #
83
83
  # Updates the ruby-advisory-db.
84
84
  #
85
- # @return [Boolean]
85
+ # @return [Boolean, nil]
86
86
  # Specifies whether the update was successful.
87
+ # A `nil` indicates no update was performed.
87
88
  #
88
89
  # @note
89
90
  # Requires network access.
@@ -92,8 +93,10 @@ module Bundler
92
93
  #
93
94
  def self.update!
94
95
  if File.directory?(USER_PATH)
95
- Dir.chdir(USER_PATH) do
96
- system 'git', 'pull', 'origin', 'master'
96
+ if File.directory?(File.join(USER_PATH, ".git"))
97
+ Dir.chdir(USER_PATH) do
98
+ system 'git', 'pull', 'origin', 'master'
99
+ end
97
100
  end
98
101
  else
99
102
  system 'git', 'clone', URL, USER_PATH
@@ -101,12 +101,13 @@ module Bundler
101
101
  when Source::Git
102
102
  case source.uri
103
103
  when /^git:/, /^http:/
104
- next if internal_host?(source.uri)
105
- yield InsecureSource.new(source.uri)
104
+ unless internal_source?(source.uri)
105
+ yield InsecureSource.new(source.uri)
106
+ end
106
107
  end
107
108
  when Source::Rubygems
108
109
  source.remotes.each do |uri|
109
- if uri.scheme == 'http'
110
+ if (uri.scheme == 'http' && !internal_source?(uri))
110
111
  yield InsecureSource.new(uri.to_s)
111
112
  end
112
113
  end
@@ -144,7 +145,8 @@ module Bundler
144
145
 
145
146
  @lockfile.specs.each do |gem|
146
147
  @database.check_gem(gem) do |advisory|
147
- unless ignore.include?(advisory.id)
148
+ unless (ignore.include?(advisory.cve_id) ||
149
+ ignore.include?(advisory.osvdb_id))
148
150
  yield UnpatchedGem.new(gem,advisory)
149
151
  end
150
152
  end
@@ -154,15 +156,28 @@ module Bundler
154
156
  private
155
157
 
156
158
  #
157
- # Determines whether a URI is internal.
159
+ # Determines whether a source is internal.
160
+ #
161
+ # @param [URI, String] uri
162
+ # The URI.
163
+ #
164
+ # @return [Boolean]
165
+ #
166
+ def internal_source?(uri)
167
+ uri = URI(uri)
168
+
169
+ internal_host?(uri.host) if uri.host
170
+ end
171
+
172
+ #
173
+ # Determines whether a host is internal.
158
174
  #
159
- # @param [String] uri
160
- # The source URI.
175
+ # @param [String] host
176
+ # The hostname.
161
177
  #
162
178
  # @return [Boolean]
163
179
  #
164
- def internal_host?(uri)
165
- return unless host = URI.parse(uri).host
180
+ def internal_host?(host)
166
181
  Resolv.getaddresses(host).all? { |ip| internal_ip?(ip) }
167
182
  rescue URI::Error
168
183
  false