dradis-nipper 4.0.0 → 4.3.0
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 +4 -4
- data/CHANGELOG.md +14 -9
- data/CHANGELOG.template +12 -0
- data/dradis-nipper.gemspec +1 -1
- data/lib/dradis/plugins/nipper/gem_version.rb +1 -1
- data/lib/nipper/issue.rb +19 -5
- data/spec/fixtures/files/sample_v2.5.xml +68 -0
- data/spec/fixtures/files/{sample.xml → sample_v2.8.xml} +0 -0
- data/spec/upload_v2.5_spec.rb +44 -0
- data/spec/{upload_spec.rb → upload_v2.8_spec.rb} +0 -0
- data/templates/issue.fields +4 -0
- data/templates/issue.sample +6 -0
- data/templates/issue.template +12 -0
- metadata +13 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d5b3a50e0fab0b8201df36436a1c99e5a94e30c1b372aae61772d9fbbb541dcb
|
|
4
|
+
data.tar.gz: fa028894c61eb6a6b77209b496ae347dec4131bc89087b3cd056e6a469b12ab6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a09e5ee41c4902b8447eb4b7dc15d10f50609eebb451f273965aad9d4cf6788a075bd1678b8daf101e30f46c07a89f6090efedd845cbed0b6f5eae4795e5985a
|
|
7
|
+
data.tar.gz: 8410ae54c6d470460df3b3070867a51f3d0db9766b86e1117a6f1b96b7836143752f23da5d05729af757da8481126b1c9c5ba660a1bef9a75179f96a5da952ff
|
data/CHANGELOG.md
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
v4.3.0 (April 2022)
|
|
2
|
+
- No changes
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
v4.2.0 (February 2022)
|
|
5
|
+
- Add Nipperv1 fields to issues
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
v4.1.0 (November 2021)
|
|
8
|
+
- No changes
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
v4.0.0 (July 2021)
|
|
11
|
+
- Include multiple paragraphs when importing fields
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
v3.22.0 (April 2021)
|
|
14
|
+
- No changes
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
v3.21.0 (February 2021)
|
|
17
|
+
- No changes
|
|
12
18
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* Initial version.
|
|
19
|
+
v3.20.0 (December 2020)
|
|
20
|
+
- Initial version
|
data/CHANGELOG.template
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
[v#.#.#] ([month] [YYYY])
|
|
2
|
+
- [future tense verb] [feature]
|
|
3
|
+
- Upgraded gems:
|
|
4
|
+
- [gem]
|
|
5
|
+
- Bugs fixes:
|
|
6
|
+
- [future tense verb] [bug fix]
|
|
7
|
+
- Bug tracker items:
|
|
8
|
+
- [item]
|
|
9
|
+
- Security Fixes:
|
|
10
|
+
- High: (Authenticated|Unauthenticated) (admin|author|contributor) [vulnerability description]
|
|
11
|
+
- Medium: (Authenticated|Unauthenticated) (admin|author|contributor) [vulnerability description]
|
|
12
|
+
- Low: (Authenticated|Unauthenticated) (admin|author|contributor) [vulnerability description]
|
data/dradis-nipper.gemspec
CHANGED
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.files = `git ls-files`.split($\)
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
20
20
|
|
|
21
|
-
spec.add_dependency 'dradis-plugins', '~> 4.0
|
|
21
|
+
spec.add_dependency 'dradis-plugins', '~> 4.0'
|
|
22
22
|
|
|
23
23
|
spec.add_development_dependency 'bundler', '~> 2.1'
|
|
24
24
|
spec.add_development_dependency 'rake', '~> 13.0'
|
data/lib/nipper/issue.rb
CHANGED
|
@@ -9,8 +9,9 @@ module Nipper
|
|
|
9
9
|
:cvss_base, :cvss_base_vector,
|
|
10
10
|
:cvss_environmental, :cvss_environmental_vector,
|
|
11
11
|
:cvss_temporal, :cvss_temporal_vector,
|
|
12
|
-
:ease, :finding, :impact, :
|
|
13
|
-
:
|
|
12
|
+
:ease, :finding, :impact, :nipperv1_ease, :nipperv1_fix,
|
|
13
|
+
:nipperv1_impact, :nipperv1_rating,
|
|
14
|
+
:recommendation, :title
|
|
14
15
|
]
|
|
15
16
|
end
|
|
16
17
|
|
|
@@ -40,6 +41,8 @@ module Nipper
|
|
|
40
41
|
@xml.attr('title')
|
|
41
42
|
elsif method.to_s.starts_with?('cvss')
|
|
42
43
|
process_cvss_field(method)
|
|
44
|
+
elsif method.to_s.starts_with?('nipperv1')
|
|
45
|
+
process_nipperv1_field(method)
|
|
43
46
|
else
|
|
44
47
|
collect_text(@xml.xpath("./#{translations_table[method]}"))
|
|
45
48
|
end
|
|
@@ -47,9 +50,9 @@ module Nipper
|
|
|
47
50
|
|
|
48
51
|
def process_cvss_field(method)
|
|
49
52
|
translations_table = {
|
|
50
|
-
cvss_base: 'issuedetails/ratings/cvssv2-base',
|
|
51
|
-
cvss_temporal: 'issuedetails/ratings/cvssv2-temporal',
|
|
52
|
-
cvss_environmental: 'issuedetails/ratings/cvssv2-environmental'
|
|
53
|
+
cvss_base: 'issuedetails/ratings[@type="CVSSv2"]/cvssv2-base',
|
|
54
|
+
cvss_temporal: 'issuedetails/ratings[@type="CVSSv2"]/cvssv2-temporal',
|
|
55
|
+
cvss_environmental: 'issuedetails/ratings[@type="CVSSv2"]/cvssv2-environmental'
|
|
53
56
|
}
|
|
54
57
|
|
|
55
58
|
base_method = method.to_s.sub('_vector', '').to_sym
|
|
@@ -61,6 +64,17 @@ module Nipper
|
|
|
61
64
|
end
|
|
62
65
|
end
|
|
63
66
|
|
|
67
|
+
def process_nipperv1_field(method)
|
|
68
|
+
translations_table = {
|
|
69
|
+
nipperv1_ease: 'issuedetails/ratings[@type="Nipperv1"]/ease',
|
|
70
|
+
nipperv1_fix: 'issuedetails/ratings[@type="Nipperv1"]/fix',
|
|
71
|
+
nipperv1_impact: 'issuedetails/ratings[@type="Nipperv1"]/impact',
|
|
72
|
+
nipperv1_rating: 'issuedetails/ratings[@type="Nipperv1"]/rating'
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@xml.xpath("./#{translations_table[method]}").text
|
|
76
|
+
end
|
|
77
|
+
|
|
64
78
|
private
|
|
65
79
|
|
|
66
80
|
def collect_text(xml_field)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<document nipperstudio="2.5.5.5804" xmlrevision="3" xmlversion="2">
|
|
3
|
+
<information>
|
|
4
|
+
<title>Firewall Review Report</title>
|
|
5
|
+
<author>Compass IT Compliance</author>
|
|
6
|
+
<authorlogo>C:/Nipper Photos/CompassITC-logo-HiRes-TSP.png</authorlogo>
|
|
7
|
+
<date>Friday, September 11, 2020</date>
|
|
8
|
+
<generator>
|
|
9
|
+
<product>Nipper Studio</product>
|
|
10
|
+
<manufacturer>Titania</manufacturer>
|
|
11
|
+
<website>www.titania.com</website>
|
|
12
|
+
<version>2.8.0</version>
|
|
13
|
+
</generator>
|
|
14
|
+
<devices>
|
|
15
|
+
<device name="PA-200" os="PANOS" osversion="7.0.0" type="Palo Alto Firewall"/>
|
|
16
|
+
</devices>
|
|
17
|
+
</information>
|
|
18
|
+
<report>
|
|
19
|
+
<part index="2" title="Security Audit" ref="SECURITYAUDIT">
|
|
20
|
+
<section index="1.1" ref="INTRODUCTION" title="Introduction">
|
|
21
|
+
<issuedetails>
|
|
22
|
+
<devices>
|
|
23
|
+
<device name="PA-200" osversion="7.0.0" type="Palo Alto Firewall"/>
|
|
24
|
+
</devices>
|
|
25
|
+
<ratings type="Nipperv1">
|
|
26
|
+
<rating>High</rating>
|
|
27
|
+
<impact>Critical</impact>
|
|
28
|
+
<ease>Moderate</ease>
|
|
29
|
+
<fix>Quick</fix>
|
|
30
|
+
</ratings>
|
|
31
|
+
</issuedetails>
|
|
32
|
+
<section index="2.2.1" ref="FINDING" title="Finding">
|
|
33
|
+
<table index="10" ref="AUTHENTICATION.USERS.WEAKPASSWORD.1" title="Table Title">
|
|
34
|
+
<headings>
|
|
35
|
+
<heading>Heading 1</heading>
|
|
36
|
+
<heading>Heading 2</heading>
|
|
37
|
+
<heading>Heading 3</heading>
|
|
38
|
+
</headings>
|
|
39
|
+
<tablebody>
|
|
40
|
+
<tablerow>
|
|
41
|
+
<tablecell>
|
|
42
|
+
<item>Row 1A</item>
|
|
43
|
+
</tablecell>
|
|
44
|
+
<tablecell>
|
|
45
|
+
<item>Row 1B</item>
|
|
46
|
+
</tablecell>
|
|
47
|
+
<tablecell>
|
|
48
|
+
<item>Row 1C</item>
|
|
49
|
+
</tablecell>
|
|
50
|
+
</tablerow>
|
|
51
|
+
<tablerow>
|
|
52
|
+
<tablecell>
|
|
53
|
+
<item>Row 2A</item>
|
|
54
|
+
</tablecell>
|
|
55
|
+
<tablecell>
|
|
56
|
+
<item>Row 2B</item>
|
|
57
|
+
</tablecell>
|
|
58
|
+
<tablecell>
|
|
59
|
+
<item>Row 2C</item>
|
|
60
|
+
</tablecell>
|
|
61
|
+
</tablerow>
|
|
62
|
+
</tablebody>
|
|
63
|
+
</table>
|
|
64
|
+
</section>
|
|
65
|
+
</section>
|
|
66
|
+
</part>
|
|
67
|
+
</report>
|
|
68
|
+
</document>
|
|
File without changes
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'rails_helper'
|
|
2
|
+
|
|
3
|
+
describe 'Nipper upload plugin' do
|
|
4
|
+
describe 'importer' do
|
|
5
|
+
before(:each) do
|
|
6
|
+
# Stub template service
|
|
7
|
+
templates_dir = File.expand_path('../../templates', __FILE__)
|
|
8
|
+
expect_any_instance_of(Dradis::Plugins::TemplateService)
|
|
9
|
+
.to receive(:default_templates_dir).and_return(templates_dir)
|
|
10
|
+
|
|
11
|
+
plugin = Dradis::Plugins::Nipper
|
|
12
|
+
|
|
13
|
+
@content_service = Dradis::Plugins::ContentService::Base.new(plugin: plugin)
|
|
14
|
+
|
|
15
|
+
@importer = plugin::Importer.new(
|
|
16
|
+
content_service: @content_service
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context 'nipper v2.5 output' do
|
|
21
|
+
it 'imports Nipperv1 fields and findings table' do
|
|
22
|
+
expect(@content_service).to receive(:create_node) do |args|
|
|
23
|
+
expect(args[:label]).to eq('PA-200')
|
|
24
|
+
expect(args[:type]).to eq(:host)
|
|
25
|
+
@node = Node.create(label: args[:label])
|
|
26
|
+
end.once
|
|
27
|
+
expect(@content_service).to receive(:create_issue) do |args|
|
|
28
|
+
OpenStruct.new(args)
|
|
29
|
+
@issue = Issue.create(text: args[:text])
|
|
30
|
+
end.exactly(1).times
|
|
31
|
+
expect(@content_service).to receive(:create_evidence) do |args|
|
|
32
|
+
OpenStruct.new(args)
|
|
33
|
+
end.exactly(1).times
|
|
34
|
+
|
|
35
|
+
@importer.import(file: File.expand_path('../spec/fixtures/files/sample_v2.5.xml', __dir__))
|
|
36
|
+
|
|
37
|
+
expect(@issue.fields['Nipperv1.Ease']).to eq('Moderate')
|
|
38
|
+
expect(@issue.fields['Nipperv1.Fix']).to eq('Quick')
|
|
39
|
+
expect(@issue.fields['Nipperv1.Impact']).to eq('Critical')
|
|
40
|
+
expect(@issue.fields['Nipperv1.Rating']).to eq('High')
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
File without changes
|
data/templates/issue.fields
CHANGED
data/templates/issue.sample
CHANGED
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
<cvssv2-environmental score="5.6">CDP:ND/TD:ND/CR:ND/IR:ND/AR:ND</cvssv2-environmental>
|
|
11
11
|
<FindingID>TEST-ISSUE</FindingID>
|
|
12
12
|
</ratings>
|
|
13
|
+
<ratings type="Nipperv1">
|
|
14
|
+
<rating>Test Nipperv1 Rating</rating>
|
|
15
|
+
<impact>Test Nipperv1 Impact</impact>
|
|
16
|
+
<ease>Test Nipperv1 Ease</ease>
|
|
17
|
+
<fix>Test Nipperv1 Fix</fix>
|
|
18
|
+
</ratings>
|
|
13
19
|
</issuedetails>
|
|
14
20
|
<section index="2.3.1" title="Finding" ref="FINDING">
|
|
15
21
|
<text>Test Finding</text>
|
data/templates/issue.template
CHANGED
|
@@ -19,5 +19,17 @@
|
|
|
19
19
|
#[Ease]#
|
|
20
20
|
%issue.ease%
|
|
21
21
|
|
|
22
|
+
#[Nipperv1.Ease]#
|
|
23
|
+
%issue.nipperv1_ease%
|
|
24
|
+
|
|
25
|
+
#[Nipperv1.Fix]#
|
|
26
|
+
%issue.nipperv1_fix%
|
|
27
|
+
|
|
28
|
+
#[Nipperv1.Impact]#
|
|
29
|
+
%issue.nipperv1_impact%
|
|
30
|
+
|
|
31
|
+
#[Nipperv1.Rating]#
|
|
32
|
+
%issue.nipperv1_rating%
|
|
33
|
+
|
|
22
34
|
#[Recommendation]#
|
|
23
35
|
%issue.recommendation%
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dradis-nipper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dradis Team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-04-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dradis-plugins
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 4.0
|
|
19
|
+
version: '4.0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 4.0
|
|
26
|
+
version: '4.0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: bundler
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -89,6 +89,7 @@ extra_rdoc_files: []
|
|
|
89
89
|
files:
|
|
90
90
|
- ".gitignore"
|
|
91
91
|
- CHANGELOG.md
|
|
92
|
+
- CHANGELOG.template
|
|
92
93
|
- CONTRIBUTING.md
|
|
93
94
|
- Gemfile
|
|
94
95
|
- LICENSE
|
|
@@ -106,9 +107,11 @@ files:
|
|
|
106
107
|
- lib/nipper/issue.rb
|
|
107
108
|
- lib/tasks/thorfile.rb
|
|
108
109
|
- spec/fixtures/files/invalid.xml
|
|
109
|
-
- spec/fixtures/files/
|
|
110
|
+
- spec/fixtures/files/sample_v2.5.xml
|
|
111
|
+
- spec/fixtures/files/sample_v2.8.xml
|
|
110
112
|
- spec/spec_helper.rb
|
|
111
|
-
- spec/
|
|
113
|
+
- spec/upload_v2.5_spec.rb
|
|
114
|
+
- spec/upload_v2.8_spec.rb
|
|
112
115
|
- templates/evidence.fields
|
|
113
116
|
- templates/evidence.sample
|
|
114
117
|
- templates/evidence.template
|
|
@@ -140,6 +143,8 @@ specification_version: 4
|
|
|
140
143
|
summary: Nipper upload add-on for Dradis Framework.
|
|
141
144
|
test_files:
|
|
142
145
|
- spec/fixtures/files/invalid.xml
|
|
143
|
-
- spec/fixtures/files/
|
|
146
|
+
- spec/fixtures/files/sample_v2.5.xml
|
|
147
|
+
- spec/fixtures/files/sample_v2.8.xml
|
|
144
148
|
- spec/spec_helper.rb
|
|
145
|
-
- spec/
|
|
149
|
+
- spec/upload_v2.5_spec.rb
|
|
150
|
+
- spec/upload_v2.8_spec.rb
|