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.
- 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
|
[](http://badge.fury.io/rb/dawnscanner)
|
|
18
37
|
[](https://travis-ci.org/thesp0nge/dawnscanner)
|
|
19
|
-
[](https://gemnasium.com/thesp0nge/dawnscanner)
|
|
20
38
|
[](https://coveralls.io/r/thesp0nge/dawnscanner)
|
|
21
39
|
[](https://www.codetriage.com/thesp0nge/dawnscanner)
|
|
22
40
|
[](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
|