dawnscanner 1.6.8 → 2.0.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (387) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.ruby-version +1 -1
  4. data/Changelog.md +27 -1
  5. data/LICENSE.txt +1 -1
  6. data/README.md +59 -57
  7. data/Rakefile +10 -242
  8. data/Roadmap.md +15 -23
  9. data/VERSION +1 -1
  10. data/bin/dawn +17 -273
  11. data/checksum/dawnscanner-1.6.8.gem.sha1 +1 -0
  12. data/checksum/dawnscanner-2.0.0.rc1.gem.sha1 +1 -0
  13. data/checksum/dawnscanner-2.0.0.rc2.gem.sha1 +1 -0
  14. data/checksum/dawnscanner-2.0.0.rc3.gem.sha1 +1 -0
  15. data/dawnscanner.gemspec +10 -9
  16. data/doc/change.sh +13 -0
  17. data/doc/kickstart_kb.tar.gz +0 -0
  18. data/doc/knowledge_base.rb +650 -0
  19. data/docs/.placeholder +0 -0
  20. data/docs/CNAME +1 -0
  21. data/docs/_config.yml +1 -0
  22. data/lib/dawn/cli/dawn_cli.rb +139 -0
  23. data/lib/dawn/core.rb +8 -7
  24. data/lib/dawn/engine.rb +93 -34
  25. data/lib/dawn/gemfile_lock.rb +2 -2
  26. data/lib/dawn/kb/basic_check.rb +1 -2
  27. data/lib/dawn/kb/combo_check.rb +1 -1
  28. data/lib/dawn/kb/dependency_check.rb +1 -1
  29. data/lib/dawn/kb/operating_system_check.rb +1 -1
  30. data/lib/dawn/kb/pattern_match_check.rb +10 -9
  31. data/lib/dawn/kb/ruby_version_check.rb +11 -10
  32. data/lib/dawn/kb/{gem_check.rb → rubygem_check.rb} +1 -1
  33. data/lib/dawn/kb/unsafe_depedency_check.rb +44 -0
  34. data/lib/dawn/kb/version_check.rb +41 -24
  35. data/lib/dawn/knowledge_base.rb +259 -595
  36. data/lib/dawn/reporter.rb +2 -1
  37. data/lib/dawn/utils.rb +5 -2
  38. data/lib/dawn/version.rb +5 -5
  39. data/lib/dawnscanner.rb +7 -6
  40. data/spec/lib/kb/codesake_unsafe_dependency_check_spec.rb +29 -0
  41. data/spec/lib/kb/dependency_check.yml +29 -0
  42. metadata +30 -496
  43. checksums.yaml.gz.sig +0 -0
  44. data.tar.gz.sig +0 -0
  45. data/certs/paolo_at_dawnscanner_dot_org.pem +0 -21
  46. data/lib/dawn/kb/cve_2004_0755.rb +0 -33
  47. data/lib/dawn/kb/cve_2004_0983.rb +0 -31
  48. data/lib/dawn/kb/cve_2005_1992.rb +0 -31
  49. data/lib/dawn/kb/cve_2005_2337.rb +0 -33
  50. data/lib/dawn/kb/cve_2006_1931.rb +0 -30
  51. data/lib/dawn/kb/cve_2006_2582.rb +0 -28
  52. data/lib/dawn/kb/cve_2006_3694.rb +0 -31
  53. data/lib/dawn/kb/cve_2006_4112.rb +0 -27
  54. data/lib/dawn/kb/cve_2006_5467.rb +0 -28
  55. data/lib/dawn/kb/cve_2006_6303.rb +0 -28
  56. data/lib/dawn/kb/cve_2006_6852.rb +0 -27
  57. data/lib/dawn/kb/cve_2006_6979.rb +0 -29
  58. data/lib/dawn/kb/cve_2007_0469.rb +0 -29
  59. data/lib/dawn/kb/cve_2007_5162.rb +0 -28
  60. data/lib/dawn/kb/cve_2007_5379.rb +0 -27
  61. data/lib/dawn/kb/cve_2007_5380.rb +0 -29
  62. data/lib/dawn/kb/cve_2007_5770.rb +0 -30
  63. data/lib/dawn/kb/cve_2007_6077.rb +0 -31
  64. data/lib/dawn/kb/cve_2007_6612.rb +0 -30
  65. data/lib/dawn/kb/cve_2008_1145.rb +0 -38
  66. data/lib/dawn/kb/cve_2008_1891.rb +0 -38
  67. data/lib/dawn/kb/cve_2008_2376.rb +0 -30
  68. data/lib/dawn/kb/cve_2008_2662.rb +0 -33
  69. data/lib/dawn/kb/cve_2008_2663.rb +0 -32
  70. data/lib/dawn/kb/cve_2008_2664.rb +0 -33
  71. data/lib/dawn/kb/cve_2008_2725.rb +0 -31
  72. data/lib/dawn/kb/cve_2008_3655.rb +0 -37
  73. data/lib/dawn/kb/cve_2008_3657.rb +0 -37
  74. data/lib/dawn/kb/cve_2008_3790.rb +0 -30
  75. data/lib/dawn/kb/cve_2008_3905.rb +0 -36
  76. data/lib/dawn/kb/cve_2008_4094.rb +0 -27
  77. data/lib/dawn/kb/cve_2008_4310.rb +0 -100
  78. data/lib/dawn/kb/cve_2008_5189.rb +0 -27
  79. data/lib/dawn/kb/cve_2008_7248.rb +0 -27
  80. data/lib/dawn/kb/cve_2009_4078.rb +0 -29
  81. data/lib/dawn/kb/cve_2009_4124.rb +0 -30
  82. data/lib/dawn/kb/cve_2009_4214.rb +0 -27
  83. data/lib/dawn/kb/cve_2010_1330.rb +0 -28
  84. data/lib/dawn/kb/cve_2010_2489.rb +0 -60
  85. data/lib/dawn/kb/cve_2010_3933.rb +0 -27
  86. data/lib/dawn/kb/cve_2011_0188.rb +0 -67
  87. data/lib/dawn/kb/cve_2011_0446.rb +0 -28
  88. data/lib/dawn/kb/cve_2011_0447.rb +0 -28
  89. data/lib/dawn/kb/cve_2011_0739.rb +0 -28
  90. data/lib/dawn/kb/cve_2011_0995.rb +0 -61
  91. data/lib/dawn/kb/cve_2011_1004.rb +0 -34
  92. data/lib/dawn/kb/cve_2011_1005.rb +0 -31
  93. data/lib/dawn/kb/cve_2011_2197.rb +0 -27
  94. data/lib/dawn/kb/cve_2011_2686.rb +0 -29
  95. data/lib/dawn/kb/cve_2011_2705.rb +0 -32
  96. data/lib/dawn/kb/cve_2011_2929.rb +0 -27
  97. data/lib/dawn/kb/cve_2011_2930.rb +0 -28
  98. data/lib/dawn/kb/cve_2011_2931.rb +0 -30
  99. data/lib/dawn/kb/cve_2011_2932.rb +0 -27
  100. data/lib/dawn/kb/cve_2011_3009.rb +0 -28
  101. data/lib/dawn/kb/cve_2011_3186.rb +0 -29
  102. data/lib/dawn/kb/cve_2011_3187.rb +0 -29
  103. data/lib/dawn/kb/cve_2011_4319.rb +0 -30
  104. data/lib/dawn/kb/cve_2011_4815.rb +0 -28
  105. data/lib/dawn/kb/cve_2011_5036.rb +0 -26
  106. data/lib/dawn/kb/cve_2012_1098.rb +0 -30
  107. data/lib/dawn/kb/cve_2012_1099.rb +0 -27
  108. data/lib/dawn/kb/cve_2012_1241.rb +0 -27
  109. data/lib/dawn/kb/cve_2012_2139.rb +0 -26
  110. data/lib/dawn/kb/cve_2012_2140.rb +0 -27
  111. data/lib/dawn/kb/cve_2012_2660.rb +0 -28
  112. data/lib/dawn/kb/cve_2012_2661.rb +0 -27
  113. data/lib/dawn/kb/cve_2012_2671.rb +0 -28
  114. data/lib/dawn/kb/cve_2012_2694.rb +0 -30
  115. data/lib/dawn/kb/cve_2012_2695.rb +0 -27
  116. data/lib/dawn/kb/cve_2012_3424.rb +0 -29
  117. data/lib/dawn/kb/cve_2012_3463.rb +0 -27
  118. data/lib/dawn/kb/cve_2012_3464.rb +0 -27
  119. data/lib/dawn/kb/cve_2012_3465.rb +0 -26
  120. data/lib/dawn/kb/cve_2012_4464.rb +0 -27
  121. data/lib/dawn/kb/cve_2012_4466.rb +0 -27
  122. data/lib/dawn/kb/cve_2012_4481.rb +0 -26
  123. data/lib/dawn/kb/cve_2012_4522.rb +0 -27
  124. data/lib/dawn/kb/cve_2012_5370.rb +0 -27
  125. data/lib/dawn/kb/cve_2012_5371.rb +0 -27
  126. data/lib/dawn/kb/cve_2012_5380.rb +0 -28
  127. data/lib/dawn/kb/cve_2012_6109.rb +0 -25
  128. data/lib/dawn/kb/cve_2012_6134.rb +0 -27
  129. data/lib/dawn/kb/cve_2012_6496.rb +0 -28
  130. data/lib/dawn/kb/cve_2012_6497.rb +0 -28
  131. data/lib/dawn/kb/cve_2012_6684.rb +0 -28
  132. data/lib/dawn/kb/cve_2013_0155.rb +0 -29
  133. data/lib/dawn/kb/cve_2013_0156.rb +0 -27
  134. data/lib/dawn/kb/cve_2013_0162.rb +0 -28
  135. data/lib/dawn/kb/cve_2013_0175.rb +0 -27
  136. data/lib/dawn/kb/cve_2013_0183.rb +0 -25
  137. data/lib/dawn/kb/cve_2013_0184.rb +0 -25
  138. data/lib/dawn/kb/cve_2013_0233.rb +0 -26
  139. data/lib/dawn/kb/cve_2013_0256.rb +0 -59
  140. data/lib/dawn/kb/cve_2013_0262.rb +0 -26
  141. data/lib/dawn/kb/cve_2013_0263.rb +0 -26
  142. data/lib/dawn/kb/cve_2013_0269.rb +0 -27
  143. data/lib/dawn/kb/cve_2013_0276.rb +0 -28
  144. data/lib/dawn/kb/cve_2013_0277.rb +0 -25
  145. data/lib/dawn/kb/cve_2013_0284.rb +0 -27
  146. data/lib/dawn/kb/cve_2013_0285.rb +0 -27
  147. data/lib/dawn/kb/cve_2013_0333.rb +0 -28
  148. data/lib/dawn/kb/cve_2013_0334.rb +0 -25
  149. data/lib/dawn/kb/cve_2013_1607.rb +0 -25
  150. data/lib/dawn/kb/cve_2013_1655.rb +0 -65
  151. data/lib/dawn/kb/cve_2013_1656.rb +0 -28
  152. data/lib/dawn/kb/cve_2013_1756.rb +0 -26
  153. data/lib/dawn/kb/cve_2013_1800.rb +0 -26
  154. data/lib/dawn/kb/cve_2013_1801.rb +0 -27
  155. data/lib/dawn/kb/cve_2013_1802.rb +0 -27
  156. data/lib/dawn/kb/cve_2013_1812.rb +0 -27
  157. data/lib/dawn/kb/cve_2013_1821.rb +0 -28
  158. data/lib/dawn/kb/cve_2013_1854.rb +0 -26
  159. data/lib/dawn/kb/cve_2013_1855.rb +0 -25
  160. data/lib/dawn/kb/cve_2013_1856.rb +0 -26
  161. data/lib/dawn/kb/cve_2013_1857.rb +0 -27
  162. data/lib/dawn/kb/cve_2013_1875.rb +0 -27
  163. data/lib/dawn/kb/cve_2013_1898.rb +0 -27
  164. data/lib/dawn/kb/cve_2013_1911.rb +0 -28
  165. data/lib/dawn/kb/cve_2013_1933.rb +0 -27
  166. data/lib/dawn/kb/cve_2013_1947.rb +0 -27
  167. data/lib/dawn/kb/cve_2013_1948.rb +0 -27
  168. data/lib/dawn/kb/cve_2013_2065.rb +0 -29
  169. data/lib/dawn/kb/cve_2013_2090.rb +0 -28
  170. data/lib/dawn/kb/cve_2013_2105.rb +0 -26
  171. data/lib/dawn/kb/cve_2013_2119.rb +0 -27
  172. data/lib/dawn/kb/cve_2013_2512.rb +0 -26
  173. data/lib/dawn/kb/cve_2013_2513.rb +0 -25
  174. data/lib/dawn/kb/cve_2013_2516.rb +0 -26
  175. data/lib/dawn/kb/cve_2013_2615.rb +0 -27
  176. data/lib/dawn/kb/cve_2013_2616.rb +0 -27
  177. data/lib/dawn/kb/cve_2013_2617.rb +0 -28
  178. data/lib/dawn/kb/cve_2013_3221.rb +0 -27
  179. data/lib/dawn/kb/cve_2013_4164.rb +0 -30
  180. data/lib/dawn/kb/cve_2013_4203.rb +0 -25
  181. data/lib/dawn/kb/cve_2013_4389.rb +0 -26
  182. data/lib/dawn/kb/cve_2013_4413.rb +0 -27
  183. data/lib/dawn/kb/cve_2013_4457.rb +0 -29
  184. data/lib/dawn/kb/cve_2013_4478.rb +0 -26
  185. data/lib/dawn/kb/cve_2013_4479.rb +0 -26
  186. data/lib/dawn/kb/cve_2013_4489.rb +0 -28
  187. data/lib/dawn/kb/cve_2013_4491.rb +0 -29
  188. data/lib/dawn/kb/cve_2013_4492.rb +0 -29
  189. data/lib/dawn/kb/cve_2013_4562.rb +0 -27
  190. data/lib/dawn/kb/cve_2013_4593.rb +0 -27
  191. data/lib/dawn/kb/cve_2013_5647.rb +0 -29
  192. data/lib/dawn/kb/cve_2013_5671.rb +0 -26
  193. data/lib/dawn/kb/cve_2013_6414.rb +0 -30
  194. data/lib/dawn/kb/cve_2013_6415.rb +0 -29
  195. data/lib/dawn/kb/cve_2013_6416.rb +0 -29
  196. data/lib/dawn/kb/cve_2013_6417.rb +0 -30
  197. data/lib/dawn/kb/cve_2013_6421.rb +0 -28
  198. data/lib/dawn/kb/cve_2013_6459.rb +0 -28
  199. data/lib/dawn/kb/cve_2013_6460.rb +0 -53
  200. data/lib/dawn/kb/cve_2013_6461.rb +0 -57
  201. data/lib/dawn/kb/cve_2013_7086.rb +0 -27
  202. data/lib/dawn/kb/cve_2014_0036.rb +0 -27
  203. data/lib/dawn/kb/cve_2014_0080.rb +0 -29
  204. data/lib/dawn/kb/cve_2014_0081.rb +0 -27
  205. data/lib/dawn/kb/cve_2014_0082.rb +0 -27
  206. data/lib/dawn/kb/cve_2014_0130.rb +0 -27
  207. data/lib/dawn/kb/cve_2014_1233.rb +0 -27
  208. data/lib/dawn/kb/cve_2014_1234.rb +0 -26
  209. data/lib/dawn/kb/cve_2014_2322.rb +0 -28
  210. data/lib/dawn/kb/cve_2014_2525.rb +0 -59
  211. data/lib/dawn/kb/cve_2014_2538.rb +0 -26
  212. data/lib/dawn/kb/cve_2014_3482.rb +0 -28
  213. data/lib/dawn/kb/cve_2014_3483.rb +0 -28
  214. data/lib/dawn/kb/cve_2014_3916.rb +0 -29
  215. data/lib/dawn/kb/cve_2014_4975.rb +0 -28
  216. data/lib/dawn/kb/cve_2014_7818.rb +0 -27
  217. data/lib/dawn/kb/cve_2014_7819.rb +0 -31
  218. data/lib/dawn/kb/cve_2014_7829.rb +0 -30
  219. data/lib/dawn/kb/cve_2014_8090.rb +0 -30
  220. data/lib/dawn/kb/cve_2014_9490.rb +0 -29
  221. data/lib/dawn/kb/cve_2015_1819.rb +0 -34
  222. data/lib/dawn/kb/cve_2015_1840/cve_2015_1840_a.rb +0 -28
  223. data/lib/dawn/kb/cve_2015_1840/cve_2015_1840_b.rb +0 -28
  224. data/lib/dawn/kb/cve_2015_2963.rb +0 -27
  225. data/lib/dawn/kb/cve_2015_3224.rb +0 -26
  226. data/lib/dawn/kb/cve_2015_3225.rb +0 -28
  227. data/lib/dawn/kb/cve_2015_3226.rb +0 -27
  228. data/lib/dawn/kb/cve_2015_3227.rb +0 -28
  229. data/lib/dawn/kb/cve_2015_3448.rb +0 -29
  230. data/lib/dawn/kb/cve_2015_4020.rb +0 -34
  231. data/lib/dawn/kb/cve_2015_5312.rb +0 -30
  232. data/lib/dawn/kb/cve_2015_7497.rb +0 -32
  233. data/lib/dawn/kb/cve_2015_7498.rb +0 -32
  234. data/lib/dawn/kb/cve_2015_7499.rb +0 -32
  235. data/lib/dawn/kb/cve_2015_7500.rb +0 -32
  236. data/lib/dawn/kb/cve_2015_7519.rb +0 -31
  237. data/lib/dawn/kb/cve_2015_7541.rb +0 -31
  238. data/lib/dawn/kb/cve_2015_7576.rb +0 -35
  239. data/lib/dawn/kb/cve_2015_7577.rb +0 -34
  240. data/lib/dawn/kb/cve_2015_7578.rb +0 -30
  241. data/lib/dawn/kb/cve_2015_7579.rb +0 -30
  242. data/lib/dawn/kb/cve_2015_7581.rb +0 -33
  243. data/lib/dawn/kb/cve_2015_8241.rb +0 -32
  244. data/lib/dawn/kb/cve_2015_8242.rb +0 -32
  245. data/lib/dawn/kb/cve_2015_8317.rb +0 -32
  246. data/lib/dawn/kb/cve_2016_0751.rb +0 -32
  247. data/lib/dawn/kb/cve_2016_0752.rb +0 -35
  248. data/lib/dawn/kb/cve_2016_0753.rb +0 -31
  249. data/lib/dawn/kb/cve_2016_2097.rb +0 -35
  250. data/lib/dawn/kb/cve_2016_2098.rb +0 -35
  251. data/lib/dawn/kb/cve_2016_5697.rb +0 -30
  252. data/lib/dawn/kb/cve_2016_6316.rb +0 -33
  253. data/lib/dawn/kb/cve_2016_6317.rb +0 -32
  254. data/lib/dawn/kb/cve_2016_6582.rb +0 -43
  255. data/lib/dawn/kb/not_revised_code.rb +0 -22
  256. data/lib/dawn/kb/osvdb_105971.rb +0 -29
  257. data/lib/dawn/kb/osvdb_108530.rb +0 -27
  258. data/lib/dawn/kb/osvdb_108563.rb +0 -28
  259. data/lib/dawn/kb/osvdb_108569.rb +0 -28
  260. data/lib/dawn/kb/osvdb_108570.rb +0 -27
  261. data/lib/dawn/kb/osvdb_115654.rb +0 -33
  262. data/lib/dawn/kb/osvdb_116010.rb +0 -30
  263. data/lib/dawn/kb/osvdb_117903.rb +0 -30
  264. data/lib/dawn/kb/osvdb_118579.rb +0 -31
  265. data/lib/dawn/kb/osvdb_118830.rb +0 -32
  266. data/lib/dawn/kb/osvdb_118954.rb +0 -33
  267. data/lib/dawn/kb/osvdb_119878.rb +0 -32
  268. data/lib/dawn/kb/osvdb_119927.rb +0 -33
  269. data/lib/dawn/kb/osvdb_120415.rb +0 -31
  270. data/lib/dawn/kb/osvdb_120857.rb +0 -34
  271. data/lib/dawn/kb/osvdb_121701.rb +0 -30
  272. data/lib/dawn/kb/osvdb_132234.rb +0 -34
  273. data/lib/dawn/kb/owasp_ror_cheatsheet.rb +0 -33
  274. data/lib/dawn/kb/owasp_ror_cheatsheet/check_for_backup_files.rb +0 -18
  275. data/lib/dawn/kb/owasp_ror_cheatsheet/check_for_safe_redirect_and_forward.rb +0 -57
  276. data/lib/dawn/kb/owasp_ror_cheatsheet/command_injection.rb +0 -28
  277. data/lib/dawn/kb/owasp_ror_cheatsheet/csrf.rb +0 -29
  278. data/lib/dawn/kb/owasp_ror_cheatsheet/mass_assignment_in_model.rb +0 -33
  279. data/lib/dawn/kb/owasp_ror_cheatsheet/security_related_headers.rb +0 -35
  280. data/lib/dawn/kb/owasp_ror_cheatsheet/sensitive_files.rb +0 -29
  281. data/lib/dawn/kb/owasp_ror_cheatsheet/session_stored_in_database.rb +0 -31
  282. data/lib/dawn/kb/simpleform_xss_20131129.rb +0 -28
  283. data/lib/dawn/knowledge_base_experimental.rb +0 -245
  284. data/spec/lib/kb/cve_2011_2705_spec.rb +0 -35
  285. data/spec/lib/kb/cve_2011_2930_spec.rb +0 -31
  286. data/spec/lib/kb/cve_2011_3009_spec.rb +0 -25
  287. data/spec/lib/kb/cve_2011_3187_spec.rb +0 -24
  288. data/spec/lib/kb/cve_2011_4319_spec.rb +0 -44
  289. data/spec/lib/kb/cve_2011_5036_spec.rb +0 -95
  290. data/spec/lib/kb/cve_2012_1098_spec.rb +0 -36
  291. data/spec/lib/kb/cve_2012_2139_spec.rb +0 -20
  292. data/spec/lib/kb/cve_2012_2671_spec.rb +0 -23
  293. data/spec/lib/kb/cve_2012_6109_spec.rb +0 -112
  294. data/spec/lib/kb/cve_2012_6684_spec.rb +0 -16
  295. data/spec/lib/kb/cve_2013_0162_spec.rb +0 -23
  296. data/spec/lib/kb/cve_2013_0183_spec.rb +0 -54
  297. data/spec/lib/kb/cve_2013_0184_spec.rb +0 -115
  298. data/spec/lib/kb/cve_2013_0256_spec.rb +0 -34
  299. data/spec/lib/kb/cve_2013_0262_spec.rb +0 -44
  300. data/spec/lib/kb/cve_2013_0263_spec.rb +0 -11
  301. data/spec/lib/kb/cve_2013_0334_spec.rb +0 -35
  302. data/spec/lib/kb/cve_2013_1607_spec.rb +0 -15
  303. data/spec/lib/kb/cve_2013_1655_spec.rb +0 -31
  304. data/spec/lib/kb/cve_2013_1756_spec.rb +0 -23
  305. data/spec/lib/kb/cve_2013_2090_spec.rb +0 -15
  306. data/spec/lib/kb/cve_2013_2105_spec.rb +0 -11
  307. data/spec/lib/kb/cve_2013_2119_spec.rb +0 -27
  308. data/spec/lib/kb/cve_2013_2512_spec.rb +0 -15
  309. data/spec/lib/kb/cve_2013_2513_spec.rb +0 -15
  310. data/spec/lib/kb/cve_2013_2516_spec.rb +0 -15
  311. data/spec/lib/kb/cve_2013_4203_spec.rb +0 -15
  312. data/spec/lib/kb/cve_2013_4413_spec.rb +0 -16
  313. data/spec/lib/kb/cve_2013_4489_spec.rb +0 -63
  314. data/spec/lib/kb/cve_2013_4491_spec.rb +0 -16
  315. data/spec/lib/kb/cve_2013_4593_spec.rb +0 -16
  316. data/spec/lib/kb/cve_2013_5647_spec.rb +0 -19
  317. data/spec/lib/kb/cve_2013_5671_spec.rb +0 -27
  318. data/spec/lib/kb/cve_2013_6414_spec.rb +0 -26
  319. data/spec/lib/kb/cve_2013_6416_spec.rb +0 -31
  320. data/spec/lib/kb/cve_2013_6459_spec.rb +0 -15
  321. data/spec/lib/kb/cve_2013_7086_spec.rb +0 -22
  322. data/spec/lib/kb/cve_2014_0036_spec.rb +0 -15
  323. data/spec/lib/kb/cve_2014_0080_spec.rb +0 -33
  324. data/spec/lib/kb/cve_2014_0081_spec.rb +0 -50
  325. data/spec/lib/kb/cve_2014_0082_spec.rb +0 -52
  326. data/spec/lib/kb/cve_2014_0130_spec.rb +0 -19
  327. data/spec/lib/kb/cve_2014_1233_spec.rb +0 -15
  328. data/spec/lib/kb/cve_2014_1234_spec.rb +0 -16
  329. data/spec/lib/kb/cve_2014_2322_spec.rb +0 -15
  330. data/spec/lib/kb/cve_2014_2538_spec.rb +0 -15
  331. data/spec/lib/kb/cve_2014_3482_spec.rb +0 -15
  332. data/spec/lib/kb/cve_2014_3483_spec.rb +0 -27
  333. data/spec/lib/kb/cve_2014_7818_spec.rb +0 -42
  334. data/spec/lib/kb/cve_2014_7819_spec.rb +0 -139
  335. data/spec/lib/kb/cve_2014_7829_spec.rb +0 -50
  336. data/spec/lib/kb/cve_2014_9490_spec.rb +0 -17
  337. data/spec/lib/kb/cve_2015_1819_spec.rb +0 -16
  338. data/spec/lib/kb/cve_2015_1840_spec.rb +0 -39
  339. data/spec/lib/kb/cve_2015_2963_spec.rb +0 -17
  340. data/spec/lib/kb/cve_2015_3224_spec.rb +0 -16
  341. data/spec/lib/kb/cve_2015_3225_spec.rb +0 -27
  342. data/spec/lib/kb/cve_2015_3226_spec.rb +0 -35
  343. data/spec/lib/kb/cve_2015_3227_spec.rb +0 -31
  344. data/spec/lib/kb/cve_2015_3448_spec.rb +0 -16
  345. data/spec/lib/kb/cve_2015_4020_spec.rb +0 -24
  346. data/spec/lib/kb/cve_2015_5312_spec.rb +0 -31
  347. data/spec/lib/kb/cve_2015_7497_spec.rb +0 -31
  348. data/spec/lib/kb/cve_2015_7498_spec.rb +0 -31
  349. data/spec/lib/kb/cve_2015_7499_spec.rb +0 -31
  350. data/spec/lib/kb/cve_2015_7500_spec.rb +0 -31
  351. data/spec/lib/kb/cve_2015_7519_spec.rb +0 -23
  352. data/spec/lib/kb/cve_2015_7541_spec.rb +0 -15
  353. data/spec/lib/kb/cve_2015_7576_spec.rb +0 -51
  354. data/spec/lib/kb/cve_2015_7577_spec.rb +0 -63
  355. data/spec/lib/kb/cve_2015_7578_spec.rb +0 -15
  356. data/spec/lib/kb/cve_2015_7579_spec.rb +0 -23
  357. data/spec/lib/kb/cve_2015_7581_spec.rb +0 -51
  358. data/spec/lib/kb/cve_2015_8241_spec.rb +0 -31
  359. data/spec/lib/kb/cve_2015_8242_spec.rb +0 -31
  360. data/spec/lib/kb/cve_2015_8317_spec.rb +0 -31
  361. data/spec/lib/kb/cve_2016_0751_spec.rb +0 -55
  362. data/spec/lib/kb/cve_2016_0752_spec.rb +0 -51
  363. data/spec/lib/kb/cve_2016_0753_spec.rb +0 -51
  364. data/spec/lib/kb/cve_2016_2097_spec.rb +0 -35
  365. data/spec/lib/kb/cve_2016_2098_spec.rb +0 -55
  366. data/spec/lib/kb/cve_2016_5697_spec.rb +0 -15
  367. data/spec/lib/kb/cve_2016_6316_spec.rb +0 -44
  368. data/spec/lib/kb/cve_2016_6317_spec.rb +0 -35
  369. data/spec/lib/kb/cve_2016_6582_spec.rb +0 -29
  370. data/spec/lib/kb/osvdb_105971_spec.rb +0 -15
  371. data/spec/lib/kb/osvdb_108530_spec.rb +0 -22
  372. data/spec/lib/kb/osvdb_108563_spec.rb +0 -18
  373. data/spec/lib/kb/osvdb_108569_spec.rb +0 -17
  374. data/spec/lib/kb/osvdb_108570_spec.rb +0 -17
  375. data/spec/lib/kb/osvdb_115654_spec.rb +0 -15
  376. data/spec/lib/kb/osvdb_116010_spec.rb +0 -15
  377. data/spec/lib/kb/osvdb_117903_spec.rb +0 -23
  378. data/spec/lib/kb/osvdb_118579_spec.rb +0 -8
  379. data/spec/lib/kb/osvdb_118830_spec.rb +0 -16
  380. data/spec/lib/kb/osvdb_118954_spec.rb +0 -20
  381. data/spec/lib/kb/osvdb_119878_spec.rb +0 -92
  382. data/spec/lib/kb/osvdb_119927_spec.rb +0 -16
  383. data/spec/lib/kb/osvdb_120415_spec.rb +0 -16
  384. data/spec/lib/kb/osvdb_120857_spec.rb +0 -32
  385. data/spec/lib/kb/osvdb_121701_spec.rb +0 -15
  386. data/spec/lib/kb/osvdb_132234_spec.rb +0 -15
  387. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: be00270c083b8265e402c4db5af3a5ea77097978
4
- data.tar.gz: 1abf4048b91c6a0f8a4c3116880c4c11dbe58a60
2
+ SHA256:
3
+ metadata.gz: b9ae4a53a59b132a6ce6c85407f0d4fddd88eda75958474a1aee0ce2369b4cf4
4
+ data.tar.gz: '01479eaa5129162d83ddcce897f74f250b5fe4b0cbe5e7c5e3bb2444b9cffce8'
5
5
  SHA512:
6
- metadata.gz: 733ab01256a79072b93276bf4cd7b737effa5c46cbe0263c7a512dd1d2c52d0059d5d235cbc841aeac0c230b5df10eaf9cd3ab90cfa2d6f37861d7fcd759574e
7
- data.tar.gz: 26e104ea9e588b0e3251e10897daa63cb8a92a165a7f558ff19498b48f931f2956f3e21147dcfc0307743f3c56bec191a47f4fd79c7daf22ba7459b953ccbd7f
6
+ metadata.gz: b2ddc397e425922f848612c1244b8e0ace964a766673b9a6f70317e441c00dd35c2687de1040fcfa0ef5203c5f7304d274e4a9091637670a8b5c3ccefec33804
7
+ data.tar.gz: '0345397057005fcd021910298c1befb282eddfcad7e13f876e5d36a8715579d71990dd18bcb9cd3ca3f8387fe99e962ad8e97224d5060dad1f711f49a82e62d2'
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ test/tmp
19
19
  test/version_tmp
20
20
  tmp
21
21
  db/*
22
+ tags
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3.1
1
+ 3
data/Changelog.md CHANGED
@@ -5,7 +5,33 @@ It supports [Sinatra](http://www.sinatrarb.com),
5
5
  [Padrino](http://www.padrinorb.com) and [Ruby on Rails](http://rubyonrails.org)
6
6
  frameworks.
7
7
 
8
- _latest update: Tue Nov 1 22:47:56 CET 2016_
8
+ _latest update: mer 28 nov 2018, 11.03.53, CET_
9
+
10
+ ## Version 2.0.0 - codename: Finn McMissile (2019-xx-xx)
11
+
12
+ * New knowledge base, YAML based and distributed separately from the ruby gem.
13
+ * New CLI based on Thor library. Please read README.md file to know how to
14
+ invoke dawn the right way or use the 'dawn help' command
15
+ * Added a new debug\_verbosely API for engines and checks
16
+ * Removed rake osvdb[name] and rake cve[name] tasks
17
+ * Adding telemetry
18
+ * Dawn::Utils include refactory. Now it's available application wide
19
+ * debug information refactory.
20
+ * engine class, apply_all method now accepts an optional parameter containing a
21
+ list of security checks to be excluded (issue #230).
22
+ * Fix issue #244. Now the KB path is no more hardcoded but it is relative to
23
+ $HOME and 'dawnscanner' folder where results are stored.
24
+ * Fix issue #245. Pattern matching check is skipped on empty files.
25
+
26
+ ## Version 1.6.9 - codename: Tow Mater (2018-11-28)
27
+
28
+ * Removed signing certificate. This will solve issue #233 and #229
29
+ * Removed datamapper support. I will change to active\_record sooner or later.
30
+ This will solve issue #232 and issue #218
31
+
32
+ ## Version 1.6.8 - codename: Tow Mater (2017-04-07)
33
+
34
+ * Update signing certficate
9
35
 
10
36
  ## Version 1.6.7 - codename: Tow Mater (2016-11-24)
11
37
 
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013-2015 Paolo Perego
1
+ Copyright (c) 2013-2021 Paolo Perego
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,22 +1,40 @@
1
1
  # Dawnscanner - The raising security scanner for ruby web applications
2
2
 
3
- dawnscanner is a source code scanner designed to review your ruby code for security
4
- issues.
3
+ dawnscanner is a source code scanner designed to review your web applications for
4
+ security issues.
5
5
 
6
- dawnscanner is able to scan plain ruby scripts (e.g. command line applications) but
7
- all its features are unleashed when dealing with web applications source code.
8
- dawnscanner is able to scan major MVC (Model View Controller) frameworks, out of the
9
- box:
6
+ dawnscanner is able to scan web applications written in Ruby and it supports all
7
+ major MVC (Model View Controller) frameworks, out of the box:
10
8
 
11
9
  * [Ruby on Rails](http://rubyonrails.org)
12
10
  * [Sinatra](http://www.sinatrarb.com)
13
11
  * [Padrino](http://www.padrinorb.com)
14
12
 
13
+ ## Quick update from April, 2019
14
+
15
+ We just released version 2.0.0 release candidate 1 with a YAML powered revamped
16
+ knowledge base. Please note that dawnscanner will include a telemetry facility
17
+ sending a POST on https://dawnscanner.org/telemetry with an application id and
18
+ some information about version and knowledge base.
19
+
20
+ We won't now and ever collect your source code on our side.
21
+
22
+ ## Quick update from November, 2018
23
+
24
+ As you can see dawnscanner is on hold since more then an year. Sorry for that.
25
+ It's life. I was overwhelmed by tons of stuff and I dedicated free time to
26
+ Offensive Security certifications. True to be told, I'm starting OSCE journey
27
+ really soon.
28
+
29
+ The dawnscanner project will be updated soon with new security checks and
30
+ kickstarted again.
31
+
32
+ Paolo
33
+
15
34
  ---
16
35
 
17
36
  [![Gem Version](https://badge.fury.io/rb/dawnscanner.png)](http://badge.fury.io/rb/dawnscanner)
18
37
  [![Build Status](https://travis-ci.org/thesp0nge/dawnscanner.png?branch=master)](https://travis-ci.org/thesp0nge/dawnscanner)
19
- [![Dependency Status](https://gemnasium.com/thesp0nge/dawnscanner.png)](https://gemnasium.com/thesp0nge/dawnscanner)
20
38
  [![Coverage Status](https://coveralls.io/repos/thesp0nge/dawnscanner/badge.png)](https://coveralls.io/r/thesp0nge/dawnscanner)
21
39
  [![Code Triagers Badge](https://www.codetriage.com/thesp0nge/dawnscanner/badges/users.svg)](https://www.codetriage.com/thesp0nge/dawnscanner)
22
40
  [![Inline docs](http://inch-ci.org/github/thesp0nge/dawnscanner.png?branch=master)](http://inch-ci.org/github/thesp0nge/dawnscanner)
@@ -50,30 +68,11 @@ application.
50
68
 
51
69
  ## Installation
52
70
 
53
- dawnscanner rubygem is cryptographically signed. To be sure the gem you
54
- install hasn’t been tampered, you must first add ```paolo@dawnscanner.org```
55
- public signing certificate as trusted to your gem specific keyring.
56
-
57
- ```
58
- $ gem cert --add <(curl -Ls https://raw.githubusercontent.com/thesp0nge/dawnscanner/master/certs/paolo_at_dawnscanner_dot_org.pem)
59
- ```
60
-
61
71
  You can install latest dawnscanner version, fetching it from
62
72
  [Rubygems](https://rubygems.org) by typing:
63
73
 
64
74
  ```
65
- $ gem install dawnscanner -P MediumSecurity
66
- ```
67
-
68
- The MediumSecurity trust profile will verify signed gems, but allow the
69
- installation of unsigned dependencies. This is necessary because not all of
70
- dawnscanner’s dependencies are signed, so we cannot use HighSecurity.
71
-
72
- In order to install a release candidate version, the gem install command line
73
- is the following:
74
-
75
- ```
76
- $ gem install dawnscanner --pre -P MediumSecurity
75
+ $ gem install dawnscanner
77
76
  ```
78
77
 
79
78
  If you want to add dawn to your project Gemfile, you must add the following:
@@ -123,44 +122,47 @@ $ dawn -h
123
122
  Usage: dawn [options] target_directory
124
123
 
125
124
  Examples:
126
- $ dawn a_sinatra_webapp_directory
127
- $ dawn -C the_rails_blog_engine
128
- $ dawn -C --json a_sinatra_webapp_directory
129
- $ dawn --ascii-tabular-report my_rails_blog_ecommerce
130
- $ dawn --html -F my_report.html my_rails_blog_ecommerce
131
-
132
- -r, --rails force dawn to consider the target a rails application
133
- -s, --sinatra force dawn to consider the target a sinatra application
134
- -p, --padrino force dawn to consider the target a padrino application
135
- -G, --gem-lock force dawn to scan only for vulnerabilities affecting dependencies in Gemfile.lock
136
- -a, --ascii-tabular-report cause dawn to format findings using table in ascii art
137
- -j, --json cause dawn to format findings using json
138
- -C, --count-only dawn will only count vulnerabilities (useful for scripts)
139
- -z, --exit-on-warn dawn will return number of found vulnerabilities as exit code
140
- -F, --file filename tells dawn to write output to filename
141
- -c, --config-file filename tells dawn to load configuration from filename
125
+ $ dawn a_sinatra_webapp_directory
126
+ $ dawn -C the_rails_blog_engine
127
+ $ dawn -C --json a_sinatra_webapp_directory
128
+ $ dawn --ascii-tabular-report my_rails_blog_ecommerce
129
+ $ dawn --html -F my_report.html my_rails_blog_ecommerce
130
+
131
+ -G, --gem-lock force dawn to scan only for vulnerabilities affecting dependencies in Gemfile.lock (DEPRECATED)
132
+ -d, --dependencies force dawn to scan only for vulnerabilities affecting dependencies in Gemfile.lock
133
+
134
+ Reporting
135
+
136
+ -a, --ascii-tabular-report cause dawn to format findings using tables in ascii art (DEPRECATED)
137
+ -j, --json cause dawn to format findings using json
138
+ -K, --console cause dawn to format findings using plain ascii text
139
+ -C, --count-only dawn will only count vulnerabilities (useful for scripts)
140
+ -z, --exit-on-warn dawn will return number of found vulnerabilities as exit code
141
+ -F, --file filename tells dawn to write output to filename
142
+ -c, --config-file filename tells dawn to load configuration from filename
142
143
 
143
144
  Disable security check family
144
145
 
145
- --disable-cve-bulletins disable all CVE security checks
146
- --disable-code-quality disable all code quality checks
147
- --disable-code-style disable all code style checks
148
- --disable-owasp-ror-cheatsheet disable all Owasp Ruby on Rails cheatsheet checks
149
- --disable-owasp-top-10 disable all Owasp Top 10 checks
146
+ --disable-cve-bulletins disable all CVE security checks
147
+ --disable-code-quality disable all code quality checks
148
+ --disable-code-style disable all code style checks
149
+ --disable-owasp-ror-cheatsheet disable all Owasp Ruby on Rails cheatsheet checks
150
+ --disable-owasp-top-10 disable all Owasp Top 10 checks
150
151
 
151
- Flags useful to query dawnscanner
152
+ Flags useful to query Dawn
152
153
 
153
- -S, --search-knowledge-base [check_name] search check_name in the knowledge base
154
- --list-knowledge-base list knowledge-base content
155
- --list-known-families list security check families contained in dawn's knowledge base
156
- --list-known-framework list ruby MVC frameworks supported by dawn
154
+ -S, --search-knowledge-base [check_name] search check_name in the knowledge base
155
+ --list-knowledge-base list knowledge-base content
156
+ --list-known-families list security check families contained in dawn's knowledge base
157
+ --list-known-framework list ruby MVC frameworks supported by dawn
158
+ --list-scan-registry list past scan informations stored in scan registry
157
159
 
158
160
  Service flags
159
161
 
160
- -D, --debug enters dawn debug mode
161
- -V, --verbose the output will be more verbose
162
- -v, --version show version information
163
- -h, --help show this help
162
+ -D, --debug enters dawn debug mode
163
+ -V, --verbose the output will be more verbose
164
+ -v, --version show version information
165
+ -h, --help show this help
164
166
  ```
165
167
 
166
168
  ### Rake task
data/Rakefile CHANGED
@@ -8,7 +8,6 @@ require 'cucumber/rake/task'
8
8
  require 'fileutils'
9
9
  require "dawn/utils"
10
10
  require "dawn/knowledge_base"
11
- require "dawn/knowledge_base_experimental"
12
11
 
13
12
  Cucumber::Rake::Task.new(:features) do |t|
14
13
  t.cucumber_opts = "features --format pretty -x"
@@ -45,7 +44,7 @@ namespace :version do
45
44
  f.puts("module Dawn")
46
45
 
47
46
  puts "#{branch_name}|"
48
- if branch_name != "master"
47
+ if branch_name != "main"
49
48
  av = version.split('.')
50
49
  f.puts " VERSION = \"#{av[0]}.#{av[1]}.#{commit_hash.chop}\""
51
50
  f.puts " CODENAME = \"#{codename.lstrip!.chop}\""
@@ -63,214 +62,6 @@ namespace :version do
63
62
  end
64
63
  end
65
64
 
66
- # namespace :check do
67
- # desc "Create a dependency check"
68
- # task :dependency, :name do |t, args|
69
- # end
70
-
71
- # end
72
- desc "Create a new CVE test"
73
- task :cve, :name do |t,args|
74
- name = args.name
75
- SRC_DIR = "./lib/dawn/kb/"
76
- SPEC_DIR = "./spec/lib/kb/"
77
-
78
- raise "### It seems that #{name} is already in Dawn knowledge base" unless Dawn::KnowledgeBase.find(nil, name).nil?
79
- raise "### Invalid CVE title: #{name}" if name.nil? or name.empty? or /CVE-\d{4}-\d{4}/.match(name).nil?
80
- raise "### No target directory: #{SRC_DIR}" unless Dir.exists?(SRC_DIR)
81
- raise "### No rspec directory: #{SPEC_DIR}" unless Dir.exists?(SPEC_DIR)
82
-
83
- puts "Adding #{name} to knowledge base..."
84
-
85
- rb_filename = SRC_DIR+name.downcase.gsub("-", "_")+".rb"
86
- spec_filename = SPEC_DIR+name.downcase.gsub("-", "_")+"_spec.rb"
87
- class_name = name.gsub("-", "_")
88
-
89
- open(rb_filename, "w") do |file|
90
- file.puts "module Dawn"
91
- file.puts "\t\tmodule Kb"
92
- file.puts "\t\t\t# Automatically created with rake on #{Time.now.strftime('%Y-%m-%d')}"
93
- file.puts "\t\t\tclass #{class_name}"
94
- file.puts "\t\t\t\t# Include the testing skeleton for this CVE"
95
- file.puts "\t\t\t\t# include PatternMatchCheck"
96
- file.puts "\t\t\t\t# include DependencyCheck"
97
- file.puts "\t\t\t\t# include RubyVersionCheck"
98
- file.puts ""
99
- file.puts "\t\t\t\tdef initialize"
100
- file.puts "\t\t\t\t\ttitle = \"\""
101
- file.puts "\t\t\t\t\tmessage = \"\""
102
- file.puts "\t\t\t\tend"
103
- file.puts "\t\t\tend"
104
- file.puts "\t\tend"
105
- file.puts "end"
106
- end
107
- puts "#{rb_filename} created"
108
-
109
- open(spec_filename, "w") do |file|
110
- file.puts "require 'spec_helper'"
111
-
112
- file.puts "describe \"The #{name} vulnerability\" do"
113
- file.puts "\tbefore(:all) do"
114
- file.puts "\t\t@check = Dawn::Kb::#{class_name}.new"
115
- file.puts "\t\t# @check.debug = true"
116
- file.puts "\tend"
117
- file.puts "\tit \"is reported when the vulnerable gem is detected\" do"
118
- file.puts "\t\t@check.dependencies = [{:name=>\"\", :version=>\"\"}]"
119
- file.puts "\t\texpect(@check.vuln?).to eq(true)"
120
- file.puts "\tend"
121
- file.puts "\tit \"is not reported when a fixed release is detected\" do"
122
- file.puts "\t\t@check.dependencies = [{:name=>\"\", :version=>\"\"}]"
123
- file.puts "\t\texpect(@check.vuln?).to eq(false)"
124
- file.puts "\tend"
125
- file.puts "end"
126
- end
127
- puts "#{spec_filename} created"
128
-
129
- puts "*** PLEASE IMPLEMENT TEST FOR #{name} IN ./spec/lib/dawn/codesake_knowledgebase_spec.rb in order to reflect changes"
130
- puts "*** PLEASE ADD THIS CODE IN ./lib/dawn/knowledge_base.rb in order to reflect changes"
131
- puts "require \"dawn/kb/#{class_name.downcase}\""
132
- puts "it \"must have test for #{name}\" do"
133
- puts " sc = kb.find(\"#{name}\")"
134
- puts " expect(sc).not_to be_nil"
135
- puts " expect(sc.class).to eq(Dawn::Kb::#{class_name})"
136
- puts "end"
137
-
138
-
139
- end
140
-
141
- desc "Create a new OSVDB security check"
142
- task :osvdb, :name do |t,args|
143
- name = args.name
144
- SRC_DIR = "./lib/dawn/kb/"
145
- SPEC_DIR = "./spec/lib/kb/"
146
-
147
- raise "### It seems that #{name} is already in Dawn knowledge base" unless Dawn::KnowledgeBase.find(nil, name).nil?
148
- raise "### Invalid OSVDB identifier: #{name}" if name.nil? or name.empty? or /\d{6}/.match(name).nil?
149
- raise "### No target directory: #{SRC_DIR}" unless Dir.exists?(SRC_DIR)
150
- raise "### No rspec directory: #{SPEC_DIR}" unless Dir.exists?(SPEC_DIR)
151
-
152
- puts "Adding #{name} to knowledge base..."
153
-
154
- name = "OSVDB_"+name
155
-
156
- rb_filename = SRC_DIR+name.downcase.gsub("-", "_")+".rb"
157
- spec_filename = SPEC_DIR+name.downcase.gsub("-", "_")+"_spec.rb"
158
- class_name = name.gsub("-", "_")
159
-
160
- open(rb_filename, "w") do |file|
161
- file.puts "module Dawn"
162
- file.puts "\t\tmodule Kb"
163
- file.puts "\t\t\t# Automatically created with rake on #{Time.now.strftime('%Y-%m-%d')}"
164
- file.puts "\t\t\tclass #{class_name}"
165
- file.puts "\t\t\t\t# Include the testing skeleton for this Security Check"
166
- file.puts "\t\t\t\t# include PatternMatchCheck"
167
- file.puts "\t\t\t\t# include DependencyCheck"
168
- file.puts "\t\t\t\t# include RubyVersionCheck"
169
- file.puts ""
170
- file.puts "\t\t\t\tdef initialize"
171
- file.puts "\t\t\t\t\ttitle = \"\""
172
- file.puts "\t\t\t\t\tmessage = \"\""
173
- file.puts "\t\t\t\tend"
174
- file.puts "\t\t\tend"
175
- file.puts "\t\tend"
176
- file.puts "end"
177
- end
178
- puts "#{rb_filename} created"
179
-
180
- open(spec_filename, "w") do |file|
181
- file.puts "require 'spec_helper'"
182
-
183
- file.puts "describe \"The #{name} vulnerability\" do"
184
- file.puts "\tbefore(:all) do"
185
- file.puts "\t\t@check = Dawn::Kb::#{class_name}.new"
186
- file.puts "\t\t# @check.debug = true"
187
- file.puts "\tend"
188
- file.puts "\tit \"is reported when the vulnerable gem is detected\" do"
189
- file.puts "\t\t@check.dependencies = [{:name=>\"\", :version=>\"\"}]"
190
- file.puts "\t\texpect(@check.vuln?).to eq(true)"
191
- file.puts "\tend"
192
- file.puts "\tit \"is not reported when a fixed release is detected\" do"
193
- file.puts "\t\t@check.dependencies = [{:name=>\"\", :version=>\"\"}]"
194
- file.puts "\t\texpect(@check.vuln?).to eq(false)"
195
- file.puts "\tend"
196
- file.puts "end"
197
- end
198
- puts "#{spec_filename} created"
199
-
200
-
201
- puts "*** PLEASE IMPLEMENT TEST FOR #{name} IN ./spec/lib/dawn/codesake_knowledgebase_spec.rb in order to reflect changes"
202
- puts "*** PLEASE ADD THIS CODE IN ./lib/dawn/knowledge_base.rb in order to reflect changes"
203
- puts "require \"dawn/kb/#{class_name.downcase}\""
204
- puts "it \"must have test for #{name}\" do"
205
- puts " sc = kb.find(\"#{name}\")"
206
- puts " expect(sc).not_to be_nil"
207
- puts " expect(sc.class).to eq(Dawn::Kb::#{class_name})"
208
- puts "end"
209
-
210
- end
211
-
212
-
213
-
214
- desc "Create a new Generic security check"
215
- task :check, :name do |t,args|
216
- name = args.name
217
- SRC_DIR = "./lib/dawn/kb/"
218
- SPEC_DIR = "./spec/lib/kb/"
219
-
220
- raise "### It seems that #{name} is already in Dawn knowledge base" unless Dawn::KnowledgeBase.find(nil, name).nil?
221
- raise "### No target directory: #{SRC_DIR}" unless Dir.exists?(SRC_DIR)
222
- raise "### No rspec directory: #{SPEC_DIR}" unless Dir.exists?(SPEC_DIR)
223
-
224
- puts "Adding #{name} to knowledge base..."
225
-
226
- rb_filename = SRC_DIR+name.downcase.gsub("-", "_")+".rb"
227
- spec_filename = SPEC_DIR+name.downcase.gsub("-", "_")+"_spec.rb"
228
- class_name = name.gsub("-", "_")
229
-
230
- open(rb_filename, "w") do |file|
231
- file.puts "module Dawn"
232
- file.puts "\t\tmodule Kb"
233
- file.puts "\t\t\t# Automatically created with rake on #{Time.now.strftime('%Y-%m-%d')}"
234
- file.puts "\t\t\tclass #{class_name}"
235
- file.puts "\t\t\t\t# Include the testing skeleton for this Security Check"
236
- file.puts "\t\t\t\t# include PatternMatchCheck"
237
- file.puts "\t\t\t\t# include DependencyCheck"
238
- file.puts "\t\t\t\t# include RubyVersionCheck"
239
- file.puts ""
240
- file.puts "\t\t\t\tdef initialize"
241
- file.puts "\t\t\t\tend"
242
- file.puts "\t\t\tend"
243
- file.puts "\t\tend"
244
- file.puts "end"
245
- end
246
- puts "#{rb_filename} created"
247
-
248
- open(spec_filename, "w") do |file|
249
- file.puts "require 'spec_helper'"
250
-
251
- file.puts "describe \"The #{name} vulnerability\" do"
252
- file.puts "\tbefore(:all) do"
253
- file.puts "\t\t@check = Dawn::Kb::#{class_name}.new"
254
- file.puts "\t\t# @check.debug = true"
255
- file.puts "\tend"
256
- file.puts "\tit \"is reported when...\""
257
- file.puts "end"
258
- end
259
- puts "#{spec_filename} created"
260
-
261
-
262
- puts "*** PLEASE IMPLEMENT TEST FOR #{name} IN ./spec/lib/dawn/codesake_knowledgebase_spec.rb in order to reflect changes"
263
- puts "*** PLEASE ADD THIS CODE IN ./lib/dawn/knowledge_base.rb in order to reflect changes"
264
- puts "require \"dawn/kb/#{class_name.downcase}\""
265
- puts "it \"must have test for #{name}\" do"
266
- puts " sc = kb.find(\"#{name}\")"
267
- puts " sc.should_not be_nil"
268
- puts " sc.class.should == Dawn::Kb::#{class_name}"
269
- puts "end"
270
-
271
-
272
- end
273
-
274
65
  namespace :kb do
275
66
  desc 'Check information lint'
276
67
  task :lint do
@@ -283,27 +74,8 @@ namespace :kb do
283
74
  desc 'Pack the library for shipping'
284
75
 
285
76
  task :pack do
286
- YAML_KB = File.join(Dir.pwd, 'db')
287
- __kb_pack
288
- end
289
-
290
- desc 'Transform all checks to YAML file and pack the library for shipping'
291
- task :to_yaml do
292
- YAML_KB = File.join(Dir.pwd, 'db')
293
- FileUtils.rm_rf YAML_KB
294
- FileUtils.mkdir_p YAML_KB
295
-
296
- Dawn::KnowledgeBase.new.all.each do |check|
297
- out_dir = File.join(YAML_KB, check.check_family.to_s)
298
- FileUtils.mkdir_p(out_dir) unless Dir.exists? out_dir
299
-
300
- filename = File.join(out_dir, check.name.gsub(" ", "_").gsub("-", "_") + '.yml')
301
- open(filename, 'w') do |f|
302
- f.puts(check.to_yaml)
303
- end
304
- puts "#{filename} created"
305
- end
306
-
77
+ YAML_KB = File.join(Dir.home, "dawnscanner", 'db')
78
+ FileUtils.mkdir_p(YAML_KB)
307
79
  __kb_pack
308
80
  end
309
81
 
@@ -393,50 +165,46 @@ end
393
165
 
394
166
  def __kb_pack
395
167
  if Dir.exists? "#{YAML_KB}/bulletin"
396
- system "tar cfvz #{YAML_KB}/bulletin.tar.gz #{YAML_KB}/bulletin"
168
+ system "tar cfvz #{YAML_KB}/bulletin.tar.gz -C #{YAML_KB} bulletin"
397
169
  system "rm -rf #{YAML_KB}/bulletin"
398
170
  system "shasum -a 256 #{YAML_KB}/bulletin.tar.gz > #{YAML_KB}/bulletin.tar.gz.sig"
399
171
  end
400
172
 
401
173
  if Dir.exists? "#{YAML_KB}/generic_check"
402
- system "tar cfvz #{YAML_KB}/generic_check.tar.gz #{YAML_KB}/generic_check"
174
+ system "tar cfvz #{YAML_KB}/generic_check.tar.gz -C #{YAML_KB} generic_check"
403
175
  system "rm -rf #{YAML_KB}/generic_check"
404
176
  system "shasum -a 256 #{YAML_KB}/generic_check.tar.gz > #{YAML_KB}/generic_check.tar.gz.sig"
405
177
  end
406
178
 
407
179
  if Dir.exists? "#{YAML_KB}/owasp_ror_cheatsheet"
408
- system "tar cfvz #{YAML_KB}/owasp_ror_cheatsheet.tar.gz #{YAML_KB}/owasp_ror_cheatsheet"
180
+ system "tar cfvz #{YAML_KB}/owasp_ror_cheatsheet.tar.gz -C #{YAML_KB} owasp_ror_cheatsheet"
409
181
  system "rm -rf #{YAML_KB}/owasp_ror_cheatsheet"
410
182
  system "shasum -a 256 #{YAML_KB}/owasp_ror_cheatsheet.tar.gz > #{YAML_KB}/owasp_ror_cheatsheet.tar.gz.sig"
411
183
  end
412
184
 
413
185
  if Dir.exists? "#{YAML_KB}/code_style"
414
- system "tar cfvz #{YAML_KB}/code_style.tar.gz #{YAML_KB}/code_style"
186
+ system "tar cfvz #{YAML_KB}/code_style.tar.gz -C #{YAML_KB} code_style"
415
187
  system "rm -rf #{YAML_KB}/code_style"
416
188
  system "shasum -a 256 #{YAML_KB}/code_style.tar.gz > #{YAML_KB}/code_style.tar.gz.sig"
417
189
  end
418
190
  if Dir.exists? "#{YAML_KB}/code_quality"
419
- system "tar cfvz #{YAML_KB}/code_quality.tar.gz #{YAML_KB}/code_quality"
191
+ system "tar cfvz #{YAML_KB}/code_quality.tar.gz -C #{YAML_KB} code_quality"
420
192
  system "rm -rf #{YAML_KB}/code_quality"
421
193
  system "shasum -a 256 #{YAML_KB}/code_quality.tar.gz > #{YAML_KB}/code_quality.tar.gz.sig"
422
194
  end
423
195
  if Dir.exists? "#{YAML_KB}/owasp_top_10"
424
- system "tar cfvz #{YAML_KB}/owasp_top_10.tar.gz #{YAML_KB}/owasp_top_10"
196
+ system "tar cfvz #{YAML_KB}/owasp_top_10.tar.gz -C #{YAML_KB} owasp_top_10"
425
197
  system "rm -rf #{YAML_KB}/owasp_top_10"
426
198
  system "shasum -a 256 #{YAML_KB}/owasp_top_10.tar.gz > #{YAML_KB}/owasp_top_10.tar.gz.sig"
427
199
  end
428
200
 
429
201
 
430
202
  open(File.join(YAML_KB, "kb.yaml"), 'w') do |f|
431
- f.puts(Dawn::KnowledgeBaseExperimental.kb_descriptor)
203
+ f.puts(Dawn::KnowledgeBase.kb_descriptor)
432
204
  end
433
205
  puts "kb.yaml created"
434
206
  system "shasum -a 256 #{YAML_KB}/kb.yaml > #{YAML_KB}/kb.yaml.sig"
435
207
 
436
- system "tar cfvz #{YAML_KB}/signatures.tar.gz #{YAML_KB}/*.tar.gz.sig"
437
- system "rm -rf #{YAML_KB}/*.tar.gz.sig "
438
- puts "#{YAML_KB}/signatures.tar.gz created"
439
-
440
208
  puts "Library ready to be shipped"
441
209
 
442
210
  end