dawnscanner 1.6.8 → 2.0.0.rc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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