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.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/Changelog.md +27 -1
- data/LICENSE.txt +1 -1
- data/README.md +59 -57
- data/Rakefile +10 -242
- data/Roadmap.md +15 -23
- data/VERSION +1 -1
- data/bin/dawn +17 -273
- data/checksum/dawnscanner-1.6.8.gem.sha1 +1 -0
- data/checksum/dawnscanner-2.0.0.rc1.gem.sha1 +1 -0
- data/checksum/dawnscanner-2.0.0.rc2.gem.sha1 +1 -0
- data/checksum/dawnscanner-2.0.0.rc3.gem.sha1 +1 -0
- data/dawnscanner.gemspec +10 -9
- data/doc/change.sh +13 -0
- data/doc/kickstart_kb.tar.gz +0 -0
- data/doc/knowledge_base.rb +650 -0
- data/docs/.placeholder +0 -0
- data/docs/CNAME +1 -0
- data/docs/_config.yml +1 -0
- data/lib/dawn/cli/dawn_cli.rb +139 -0
- data/lib/dawn/core.rb +8 -7
- data/lib/dawn/engine.rb +93 -34
- data/lib/dawn/gemfile_lock.rb +2 -2
- data/lib/dawn/kb/basic_check.rb +1 -2
- data/lib/dawn/kb/combo_check.rb +1 -1
- data/lib/dawn/kb/dependency_check.rb +1 -1
- data/lib/dawn/kb/operating_system_check.rb +1 -1
- data/lib/dawn/kb/pattern_match_check.rb +10 -9
- data/lib/dawn/kb/ruby_version_check.rb +11 -10
- data/lib/dawn/kb/{gem_check.rb → rubygem_check.rb} +1 -1
- data/lib/dawn/kb/unsafe_depedency_check.rb +44 -0
- data/lib/dawn/kb/version_check.rb +41 -24
- data/lib/dawn/knowledge_base.rb +259 -595
- data/lib/dawn/reporter.rb +2 -1
- data/lib/dawn/utils.rb +5 -2
- data/lib/dawn/version.rb +5 -5
- data/lib/dawnscanner.rb +7 -6
- data/spec/lib/kb/codesake_unsafe_dependency_check_spec.rb +29 -0
- data/spec/lib/kb/dependency_check.yml +29 -0
- metadata +30 -496
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/certs/paolo_at_dawnscanner_dot_org.pem +0 -21
- data/lib/dawn/kb/cve_2004_0755.rb +0 -33
- data/lib/dawn/kb/cve_2004_0983.rb +0 -31
- data/lib/dawn/kb/cve_2005_1992.rb +0 -31
- data/lib/dawn/kb/cve_2005_2337.rb +0 -33
- data/lib/dawn/kb/cve_2006_1931.rb +0 -30
- data/lib/dawn/kb/cve_2006_2582.rb +0 -28
- data/lib/dawn/kb/cve_2006_3694.rb +0 -31
- data/lib/dawn/kb/cve_2006_4112.rb +0 -27
- data/lib/dawn/kb/cve_2006_5467.rb +0 -28
- data/lib/dawn/kb/cve_2006_6303.rb +0 -28
- data/lib/dawn/kb/cve_2006_6852.rb +0 -27
- data/lib/dawn/kb/cve_2006_6979.rb +0 -29
- data/lib/dawn/kb/cve_2007_0469.rb +0 -29
- data/lib/dawn/kb/cve_2007_5162.rb +0 -28
- data/lib/dawn/kb/cve_2007_5379.rb +0 -27
- data/lib/dawn/kb/cve_2007_5380.rb +0 -29
- data/lib/dawn/kb/cve_2007_5770.rb +0 -30
- data/lib/dawn/kb/cve_2007_6077.rb +0 -31
- data/lib/dawn/kb/cve_2007_6612.rb +0 -30
- data/lib/dawn/kb/cve_2008_1145.rb +0 -38
- data/lib/dawn/kb/cve_2008_1891.rb +0 -38
- data/lib/dawn/kb/cve_2008_2376.rb +0 -30
- data/lib/dawn/kb/cve_2008_2662.rb +0 -33
- data/lib/dawn/kb/cve_2008_2663.rb +0 -32
- data/lib/dawn/kb/cve_2008_2664.rb +0 -33
- data/lib/dawn/kb/cve_2008_2725.rb +0 -31
- data/lib/dawn/kb/cve_2008_3655.rb +0 -37
- data/lib/dawn/kb/cve_2008_3657.rb +0 -37
- data/lib/dawn/kb/cve_2008_3790.rb +0 -30
- data/lib/dawn/kb/cve_2008_3905.rb +0 -36
- data/lib/dawn/kb/cve_2008_4094.rb +0 -27
- data/lib/dawn/kb/cve_2008_4310.rb +0 -100
- data/lib/dawn/kb/cve_2008_5189.rb +0 -27
- data/lib/dawn/kb/cve_2008_7248.rb +0 -27
- data/lib/dawn/kb/cve_2009_4078.rb +0 -29
- data/lib/dawn/kb/cve_2009_4124.rb +0 -30
- data/lib/dawn/kb/cve_2009_4214.rb +0 -27
- data/lib/dawn/kb/cve_2010_1330.rb +0 -28
- data/lib/dawn/kb/cve_2010_2489.rb +0 -60
- data/lib/dawn/kb/cve_2010_3933.rb +0 -27
- data/lib/dawn/kb/cve_2011_0188.rb +0 -67
- data/lib/dawn/kb/cve_2011_0446.rb +0 -28
- data/lib/dawn/kb/cve_2011_0447.rb +0 -28
- data/lib/dawn/kb/cve_2011_0739.rb +0 -28
- data/lib/dawn/kb/cve_2011_0995.rb +0 -61
- data/lib/dawn/kb/cve_2011_1004.rb +0 -34
- data/lib/dawn/kb/cve_2011_1005.rb +0 -31
- data/lib/dawn/kb/cve_2011_2197.rb +0 -27
- data/lib/dawn/kb/cve_2011_2686.rb +0 -29
- data/lib/dawn/kb/cve_2011_2705.rb +0 -32
- data/lib/dawn/kb/cve_2011_2929.rb +0 -27
- data/lib/dawn/kb/cve_2011_2930.rb +0 -28
- data/lib/dawn/kb/cve_2011_2931.rb +0 -30
- data/lib/dawn/kb/cve_2011_2932.rb +0 -27
- data/lib/dawn/kb/cve_2011_3009.rb +0 -28
- data/lib/dawn/kb/cve_2011_3186.rb +0 -29
- data/lib/dawn/kb/cve_2011_3187.rb +0 -29
- data/lib/dawn/kb/cve_2011_4319.rb +0 -30
- data/lib/dawn/kb/cve_2011_4815.rb +0 -28
- data/lib/dawn/kb/cve_2011_5036.rb +0 -26
- data/lib/dawn/kb/cve_2012_1098.rb +0 -30
- data/lib/dawn/kb/cve_2012_1099.rb +0 -27
- data/lib/dawn/kb/cve_2012_1241.rb +0 -27
- data/lib/dawn/kb/cve_2012_2139.rb +0 -26
- data/lib/dawn/kb/cve_2012_2140.rb +0 -27
- data/lib/dawn/kb/cve_2012_2660.rb +0 -28
- data/lib/dawn/kb/cve_2012_2661.rb +0 -27
- data/lib/dawn/kb/cve_2012_2671.rb +0 -28
- data/lib/dawn/kb/cve_2012_2694.rb +0 -30
- data/lib/dawn/kb/cve_2012_2695.rb +0 -27
- data/lib/dawn/kb/cve_2012_3424.rb +0 -29
- data/lib/dawn/kb/cve_2012_3463.rb +0 -27
- data/lib/dawn/kb/cve_2012_3464.rb +0 -27
- data/lib/dawn/kb/cve_2012_3465.rb +0 -26
- data/lib/dawn/kb/cve_2012_4464.rb +0 -27
- data/lib/dawn/kb/cve_2012_4466.rb +0 -27
- data/lib/dawn/kb/cve_2012_4481.rb +0 -26
- data/lib/dawn/kb/cve_2012_4522.rb +0 -27
- data/lib/dawn/kb/cve_2012_5370.rb +0 -27
- data/lib/dawn/kb/cve_2012_5371.rb +0 -27
- data/lib/dawn/kb/cve_2012_5380.rb +0 -28
- data/lib/dawn/kb/cve_2012_6109.rb +0 -25
- data/lib/dawn/kb/cve_2012_6134.rb +0 -27
- data/lib/dawn/kb/cve_2012_6496.rb +0 -28
- data/lib/dawn/kb/cve_2012_6497.rb +0 -28
- data/lib/dawn/kb/cve_2012_6684.rb +0 -28
- data/lib/dawn/kb/cve_2013_0155.rb +0 -29
- data/lib/dawn/kb/cve_2013_0156.rb +0 -27
- data/lib/dawn/kb/cve_2013_0162.rb +0 -28
- data/lib/dawn/kb/cve_2013_0175.rb +0 -27
- data/lib/dawn/kb/cve_2013_0183.rb +0 -25
- data/lib/dawn/kb/cve_2013_0184.rb +0 -25
- data/lib/dawn/kb/cve_2013_0233.rb +0 -26
- data/lib/dawn/kb/cve_2013_0256.rb +0 -59
- data/lib/dawn/kb/cve_2013_0262.rb +0 -26
- data/lib/dawn/kb/cve_2013_0263.rb +0 -26
- data/lib/dawn/kb/cve_2013_0269.rb +0 -27
- data/lib/dawn/kb/cve_2013_0276.rb +0 -28
- data/lib/dawn/kb/cve_2013_0277.rb +0 -25
- data/lib/dawn/kb/cve_2013_0284.rb +0 -27
- data/lib/dawn/kb/cve_2013_0285.rb +0 -27
- data/lib/dawn/kb/cve_2013_0333.rb +0 -28
- data/lib/dawn/kb/cve_2013_0334.rb +0 -25
- data/lib/dawn/kb/cve_2013_1607.rb +0 -25
- data/lib/dawn/kb/cve_2013_1655.rb +0 -65
- data/lib/dawn/kb/cve_2013_1656.rb +0 -28
- data/lib/dawn/kb/cve_2013_1756.rb +0 -26
- data/lib/dawn/kb/cve_2013_1800.rb +0 -26
- data/lib/dawn/kb/cve_2013_1801.rb +0 -27
- data/lib/dawn/kb/cve_2013_1802.rb +0 -27
- data/lib/dawn/kb/cve_2013_1812.rb +0 -27
- data/lib/dawn/kb/cve_2013_1821.rb +0 -28
- data/lib/dawn/kb/cve_2013_1854.rb +0 -26
- data/lib/dawn/kb/cve_2013_1855.rb +0 -25
- data/lib/dawn/kb/cve_2013_1856.rb +0 -26
- data/lib/dawn/kb/cve_2013_1857.rb +0 -27
- data/lib/dawn/kb/cve_2013_1875.rb +0 -27
- data/lib/dawn/kb/cve_2013_1898.rb +0 -27
- data/lib/dawn/kb/cve_2013_1911.rb +0 -28
- data/lib/dawn/kb/cve_2013_1933.rb +0 -27
- data/lib/dawn/kb/cve_2013_1947.rb +0 -27
- data/lib/dawn/kb/cve_2013_1948.rb +0 -27
- data/lib/dawn/kb/cve_2013_2065.rb +0 -29
- data/lib/dawn/kb/cve_2013_2090.rb +0 -28
- data/lib/dawn/kb/cve_2013_2105.rb +0 -26
- data/lib/dawn/kb/cve_2013_2119.rb +0 -27
- data/lib/dawn/kb/cve_2013_2512.rb +0 -26
- data/lib/dawn/kb/cve_2013_2513.rb +0 -25
- data/lib/dawn/kb/cve_2013_2516.rb +0 -26
- data/lib/dawn/kb/cve_2013_2615.rb +0 -27
- data/lib/dawn/kb/cve_2013_2616.rb +0 -27
- data/lib/dawn/kb/cve_2013_2617.rb +0 -28
- data/lib/dawn/kb/cve_2013_3221.rb +0 -27
- data/lib/dawn/kb/cve_2013_4164.rb +0 -30
- data/lib/dawn/kb/cve_2013_4203.rb +0 -25
- data/lib/dawn/kb/cve_2013_4389.rb +0 -26
- data/lib/dawn/kb/cve_2013_4413.rb +0 -27
- data/lib/dawn/kb/cve_2013_4457.rb +0 -29
- data/lib/dawn/kb/cve_2013_4478.rb +0 -26
- data/lib/dawn/kb/cve_2013_4479.rb +0 -26
- data/lib/dawn/kb/cve_2013_4489.rb +0 -28
- data/lib/dawn/kb/cve_2013_4491.rb +0 -29
- data/lib/dawn/kb/cve_2013_4492.rb +0 -29
- data/lib/dawn/kb/cve_2013_4562.rb +0 -27
- data/lib/dawn/kb/cve_2013_4593.rb +0 -27
- data/lib/dawn/kb/cve_2013_5647.rb +0 -29
- data/lib/dawn/kb/cve_2013_5671.rb +0 -26
- data/lib/dawn/kb/cve_2013_6414.rb +0 -30
- data/lib/dawn/kb/cve_2013_6415.rb +0 -29
- data/lib/dawn/kb/cve_2013_6416.rb +0 -29
- data/lib/dawn/kb/cve_2013_6417.rb +0 -30
- data/lib/dawn/kb/cve_2013_6421.rb +0 -28
- data/lib/dawn/kb/cve_2013_6459.rb +0 -28
- data/lib/dawn/kb/cve_2013_6460.rb +0 -53
- data/lib/dawn/kb/cve_2013_6461.rb +0 -57
- data/lib/dawn/kb/cve_2013_7086.rb +0 -27
- data/lib/dawn/kb/cve_2014_0036.rb +0 -27
- data/lib/dawn/kb/cve_2014_0080.rb +0 -29
- data/lib/dawn/kb/cve_2014_0081.rb +0 -27
- data/lib/dawn/kb/cve_2014_0082.rb +0 -27
- data/lib/dawn/kb/cve_2014_0130.rb +0 -27
- data/lib/dawn/kb/cve_2014_1233.rb +0 -27
- data/lib/dawn/kb/cve_2014_1234.rb +0 -26
- data/lib/dawn/kb/cve_2014_2322.rb +0 -28
- data/lib/dawn/kb/cve_2014_2525.rb +0 -59
- data/lib/dawn/kb/cve_2014_2538.rb +0 -26
- data/lib/dawn/kb/cve_2014_3482.rb +0 -28
- data/lib/dawn/kb/cve_2014_3483.rb +0 -28
- data/lib/dawn/kb/cve_2014_3916.rb +0 -29
- data/lib/dawn/kb/cve_2014_4975.rb +0 -28
- data/lib/dawn/kb/cve_2014_7818.rb +0 -27
- data/lib/dawn/kb/cve_2014_7819.rb +0 -31
- data/lib/dawn/kb/cve_2014_7829.rb +0 -30
- data/lib/dawn/kb/cve_2014_8090.rb +0 -30
- data/lib/dawn/kb/cve_2014_9490.rb +0 -29
- data/lib/dawn/kb/cve_2015_1819.rb +0 -34
- data/lib/dawn/kb/cve_2015_1840/cve_2015_1840_a.rb +0 -28
- data/lib/dawn/kb/cve_2015_1840/cve_2015_1840_b.rb +0 -28
- data/lib/dawn/kb/cve_2015_2963.rb +0 -27
- data/lib/dawn/kb/cve_2015_3224.rb +0 -26
- data/lib/dawn/kb/cve_2015_3225.rb +0 -28
- data/lib/dawn/kb/cve_2015_3226.rb +0 -27
- data/lib/dawn/kb/cve_2015_3227.rb +0 -28
- data/lib/dawn/kb/cve_2015_3448.rb +0 -29
- data/lib/dawn/kb/cve_2015_4020.rb +0 -34
- data/lib/dawn/kb/cve_2015_5312.rb +0 -30
- data/lib/dawn/kb/cve_2015_7497.rb +0 -32
- data/lib/dawn/kb/cve_2015_7498.rb +0 -32
- data/lib/dawn/kb/cve_2015_7499.rb +0 -32
- data/lib/dawn/kb/cve_2015_7500.rb +0 -32
- data/lib/dawn/kb/cve_2015_7519.rb +0 -31
- data/lib/dawn/kb/cve_2015_7541.rb +0 -31
- data/lib/dawn/kb/cve_2015_7576.rb +0 -35
- data/lib/dawn/kb/cve_2015_7577.rb +0 -34
- data/lib/dawn/kb/cve_2015_7578.rb +0 -30
- data/lib/dawn/kb/cve_2015_7579.rb +0 -30
- data/lib/dawn/kb/cve_2015_7581.rb +0 -33
- data/lib/dawn/kb/cve_2015_8241.rb +0 -32
- data/lib/dawn/kb/cve_2015_8242.rb +0 -32
- data/lib/dawn/kb/cve_2015_8317.rb +0 -32
- data/lib/dawn/kb/cve_2016_0751.rb +0 -32
- data/lib/dawn/kb/cve_2016_0752.rb +0 -35
- data/lib/dawn/kb/cve_2016_0753.rb +0 -31
- data/lib/dawn/kb/cve_2016_2097.rb +0 -35
- data/lib/dawn/kb/cve_2016_2098.rb +0 -35
- data/lib/dawn/kb/cve_2016_5697.rb +0 -30
- data/lib/dawn/kb/cve_2016_6316.rb +0 -33
- data/lib/dawn/kb/cve_2016_6317.rb +0 -32
- data/lib/dawn/kb/cve_2016_6582.rb +0 -43
- data/lib/dawn/kb/not_revised_code.rb +0 -22
- data/lib/dawn/kb/osvdb_105971.rb +0 -29
- data/lib/dawn/kb/osvdb_108530.rb +0 -27
- data/lib/dawn/kb/osvdb_108563.rb +0 -28
- data/lib/dawn/kb/osvdb_108569.rb +0 -28
- data/lib/dawn/kb/osvdb_108570.rb +0 -27
- data/lib/dawn/kb/osvdb_115654.rb +0 -33
- data/lib/dawn/kb/osvdb_116010.rb +0 -30
- data/lib/dawn/kb/osvdb_117903.rb +0 -30
- data/lib/dawn/kb/osvdb_118579.rb +0 -31
- data/lib/dawn/kb/osvdb_118830.rb +0 -32
- data/lib/dawn/kb/osvdb_118954.rb +0 -33
- data/lib/dawn/kb/osvdb_119878.rb +0 -32
- data/lib/dawn/kb/osvdb_119927.rb +0 -33
- data/lib/dawn/kb/osvdb_120415.rb +0 -31
- data/lib/dawn/kb/osvdb_120857.rb +0 -34
- data/lib/dawn/kb/osvdb_121701.rb +0 -30
- data/lib/dawn/kb/osvdb_132234.rb +0 -34
- data/lib/dawn/kb/owasp_ror_cheatsheet.rb +0 -33
- data/lib/dawn/kb/owasp_ror_cheatsheet/check_for_backup_files.rb +0 -18
- data/lib/dawn/kb/owasp_ror_cheatsheet/check_for_safe_redirect_and_forward.rb +0 -57
- data/lib/dawn/kb/owasp_ror_cheatsheet/command_injection.rb +0 -28
- data/lib/dawn/kb/owasp_ror_cheatsheet/csrf.rb +0 -29
- data/lib/dawn/kb/owasp_ror_cheatsheet/mass_assignment_in_model.rb +0 -33
- data/lib/dawn/kb/owasp_ror_cheatsheet/security_related_headers.rb +0 -35
- data/lib/dawn/kb/owasp_ror_cheatsheet/sensitive_files.rb +0 -29
- data/lib/dawn/kb/owasp_ror_cheatsheet/session_stored_in_database.rb +0 -31
- data/lib/dawn/kb/simpleform_xss_20131129.rb +0 -28
- data/lib/dawn/knowledge_base_experimental.rb +0 -245
- data/spec/lib/kb/cve_2011_2705_spec.rb +0 -35
- data/spec/lib/kb/cve_2011_2930_spec.rb +0 -31
- data/spec/lib/kb/cve_2011_3009_spec.rb +0 -25
- data/spec/lib/kb/cve_2011_3187_spec.rb +0 -24
- data/spec/lib/kb/cve_2011_4319_spec.rb +0 -44
- data/spec/lib/kb/cve_2011_5036_spec.rb +0 -95
- data/spec/lib/kb/cve_2012_1098_spec.rb +0 -36
- data/spec/lib/kb/cve_2012_2139_spec.rb +0 -20
- data/spec/lib/kb/cve_2012_2671_spec.rb +0 -23
- data/spec/lib/kb/cve_2012_6109_spec.rb +0 -112
- data/spec/lib/kb/cve_2012_6684_spec.rb +0 -16
- data/spec/lib/kb/cve_2013_0162_spec.rb +0 -23
- data/spec/lib/kb/cve_2013_0183_spec.rb +0 -54
- data/spec/lib/kb/cve_2013_0184_spec.rb +0 -115
- data/spec/lib/kb/cve_2013_0256_spec.rb +0 -34
- data/spec/lib/kb/cve_2013_0262_spec.rb +0 -44
- data/spec/lib/kb/cve_2013_0263_spec.rb +0 -11
- data/spec/lib/kb/cve_2013_0334_spec.rb +0 -35
- data/spec/lib/kb/cve_2013_1607_spec.rb +0 -15
- data/spec/lib/kb/cve_2013_1655_spec.rb +0 -31
- data/spec/lib/kb/cve_2013_1756_spec.rb +0 -23
- data/spec/lib/kb/cve_2013_2090_spec.rb +0 -15
- data/spec/lib/kb/cve_2013_2105_spec.rb +0 -11
- data/spec/lib/kb/cve_2013_2119_spec.rb +0 -27
- data/spec/lib/kb/cve_2013_2512_spec.rb +0 -15
- data/spec/lib/kb/cve_2013_2513_spec.rb +0 -15
- data/spec/lib/kb/cve_2013_2516_spec.rb +0 -15
- data/spec/lib/kb/cve_2013_4203_spec.rb +0 -15
- data/spec/lib/kb/cve_2013_4413_spec.rb +0 -16
- data/spec/lib/kb/cve_2013_4489_spec.rb +0 -63
- data/spec/lib/kb/cve_2013_4491_spec.rb +0 -16
- data/spec/lib/kb/cve_2013_4593_spec.rb +0 -16
- data/spec/lib/kb/cve_2013_5647_spec.rb +0 -19
- data/spec/lib/kb/cve_2013_5671_spec.rb +0 -27
- data/spec/lib/kb/cve_2013_6414_spec.rb +0 -26
- data/spec/lib/kb/cve_2013_6416_spec.rb +0 -31
- data/spec/lib/kb/cve_2013_6459_spec.rb +0 -15
- data/spec/lib/kb/cve_2013_7086_spec.rb +0 -22
- data/spec/lib/kb/cve_2014_0036_spec.rb +0 -15
- data/spec/lib/kb/cve_2014_0080_spec.rb +0 -33
- data/spec/lib/kb/cve_2014_0081_spec.rb +0 -50
- data/spec/lib/kb/cve_2014_0082_spec.rb +0 -52
- data/spec/lib/kb/cve_2014_0130_spec.rb +0 -19
- data/spec/lib/kb/cve_2014_1233_spec.rb +0 -15
- data/spec/lib/kb/cve_2014_1234_spec.rb +0 -16
- data/spec/lib/kb/cve_2014_2322_spec.rb +0 -15
- data/spec/lib/kb/cve_2014_2538_spec.rb +0 -15
- data/spec/lib/kb/cve_2014_3482_spec.rb +0 -15
- data/spec/lib/kb/cve_2014_3483_spec.rb +0 -27
- data/spec/lib/kb/cve_2014_7818_spec.rb +0 -42
- data/spec/lib/kb/cve_2014_7819_spec.rb +0 -139
- data/spec/lib/kb/cve_2014_7829_spec.rb +0 -50
- data/spec/lib/kb/cve_2014_9490_spec.rb +0 -17
- data/spec/lib/kb/cve_2015_1819_spec.rb +0 -16
- data/spec/lib/kb/cve_2015_1840_spec.rb +0 -39
- data/spec/lib/kb/cve_2015_2963_spec.rb +0 -17
- data/spec/lib/kb/cve_2015_3224_spec.rb +0 -16
- data/spec/lib/kb/cve_2015_3225_spec.rb +0 -27
- data/spec/lib/kb/cve_2015_3226_spec.rb +0 -35
- data/spec/lib/kb/cve_2015_3227_spec.rb +0 -31
- data/spec/lib/kb/cve_2015_3448_spec.rb +0 -16
- data/spec/lib/kb/cve_2015_4020_spec.rb +0 -24
- data/spec/lib/kb/cve_2015_5312_spec.rb +0 -31
- data/spec/lib/kb/cve_2015_7497_spec.rb +0 -31
- data/spec/lib/kb/cve_2015_7498_spec.rb +0 -31
- data/spec/lib/kb/cve_2015_7499_spec.rb +0 -31
- data/spec/lib/kb/cve_2015_7500_spec.rb +0 -31
- data/spec/lib/kb/cve_2015_7519_spec.rb +0 -23
- data/spec/lib/kb/cve_2015_7541_spec.rb +0 -15
- data/spec/lib/kb/cve_2015_7576_spec.rb +0 -51
- data/spec/lib/kb/cve_2015_7577_spec.rb +0 -63
- data/spec/lib/kb/cve_2015_7578_spec.rb +0 -15
- data/spec/lib/kb/cve_2015_7579_spec.rb +0 -23
- data/spec/lib/kb/cve_2015_7581_spec.rb +0 -51
- data/spec/lib/kb/cve_2015_8241_spec.rb +0 -31
- data/spec/lib/kb/cve_2015_8242_spec.rb +0 -31
- data/spec/lib/kb/cve_2015_8317_spec.rb +0 -31
- data/spec/lib/kb/cve_2016_0751_spec.rb +0 -55
- data/spec/lib/kb/cve_2016_0752_spec.rb +0 -51
- data/spec/lib/kb/cve_2016_0753_spec.rb +0 -51
- data/spec/lib/kb/cve_2016_2097_spec.rb +0 -35
- data/spec/lib/kb/cve_2016_2098_spec.rb +0 -55
- data/spec/lib/kb/cve_2016_5697_spec.rb +0 -15
- data/spec/lib/kb/cve_2016_6316_spec.rb +0 -44
- data/spec/lib/kb/cve_2016_6317_spec.rb +0 -35
- data/spec/lib/kb/cve_2016_6582_spec.rb +0 -29
- data/spec/lib/kb/osvdb_105971_spec.rb +0 -15
- data/spec/lib/kb/osvdb_108530_spec.rb +0 -22
- data/spec/lib/kb/osvdb_108563_spec.rb +0 -18
- data/spec/lib/kb/osvdb_108569_spec.rb +0 -17
- data/spec/lib/kb/osvdb_108570_spec.rb +0 -17
- data/spec/lib/kb/osvdb_115654_spec.rb +0 -15
- data/spec/lib/kb/osvdb_116010_spec.rb +0 -15
- data/spec/lib/kb/osvdb_117903_spec.rb +0 -23
- data/spec/lib/kb/osvdb_118579_spec.rb +0 -8
- data/spec/lib/kb/osvdb_118830_spec.rb +0 -16
- data/spec/lib/kb/osvdb_118954_spec.rb +0 -20
- data/spec/lib/kb/osvdb_119878_spec.rb +0 -92
- data/spec/lib/kb/osvdb_119927_spec.rb +0 -16
- data/spec/lib/kb/osvdb_120415_spec.rb +0 -16
- data/spec/lib/kb/osvdb_120857_spec.rb +0 -32
- data/spec/lib/kb/osvdb_121701_spec.rb +0 -15
- data/spec/lib/kb/osvdb_132234_spec.rb +0 -15
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b9ae4a53a59b132a6ce6c85407f0d4fddd88eda75958474a1aee0ce2369b4cf4
|
4
|
+
data.tar.gz: '01479eaa5129162d83ddcce897f74f250b5fe4b0cbe5e7c5e3bb2444b9cffce8'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b2ddc397e425922f848612c1244b8e0ace964a766673b9a6f70317e441c00dd35c2687de1040fcfa0ef5203c5f7304d274e4a9091637670a8b5c3ccefec33804
|
7
|
+
data.tar.gz: '0345397057005fcd021910298c1befb282eddfcad7e13f876e5d36a8715579d71990dd18bcb9cd3ca3f8387fe99e962ad8e97224d5060dad1f711f49a82e62d2'
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
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:
|
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
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
|
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
|
7
|
-
|
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
|
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
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
-
|
133
|
-
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
-
|
138
|
-
-
|
139
|
-
-
|
140
|
-
-
|
141
|
-
-
|
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
|
146
|
-
--disable-code-quality
|
147
|
-
--disable-code-style
|
148
|
-
--disable-owasp-ror-cheatsheet
|
149
|
-
--disable-owasp-top-10
|
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
|
152
|
+
Flags useful to query Dawn
|
152
153
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
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
|
161
|
-
-V, --verbose
|
162
|
-
-v, --version
|
163
|
-
-h, --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 != "
|
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.
|
287
|
-
|
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}
|
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}
|
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}
|
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}
|
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}
|
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}
|
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::
|
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
|