vrt 0.12.6 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/lib/data/1.14/deprecated-node-mapping.json +239 -0
  3. data/lib/data/1.14/mappings/cvss_v3/cvss_v3.json +1441 -0
  4. data/lib/data/1.14/mappings/cvss_v3/cvss_v3.schema.json +59 -0
  5. data/lib/data/1.14/mappings/cwe/cwe.json +818 -0
  6. data/lib/data/1.14/mappings/cwe/cwe.schema.json +63 -0
  7. data/lib/data/1.14/mappings/remediation_advice/remediation_advice.json +2080 -0
  8. data/lib/data/1.14/mappings/remediation_advice/remediation_advice.schema.json +75 -0
  9. data/lib/data/1.14/third-party-mappings/remediation_training/secure-code-warrior-links.json +438 -0
  10. data/lib/data/1.14/vrt.schema.json +63 -0
  11. data/lib/data/1.14/vulnerability-rating-taxonomy.json +2730 -0
  12. data/lib/data/1.14.1/deprecated-node-mapping.json +239 -0
  13. data/lib/data/1.14.1/mappings/cvss_v3/cvss_v3.json +1441 -0
  14. data/lib/data/1.14.1/mappings/cvss_v3/cvss_v3.schema.json +59 -0
  15. data/lib/data/1.14.1/mappings/cwe/cwe.json +818 -0
  16. data/lib/data/1.14.1/mappings/cwe/cwe.schema.json +63 -0
  17. data/lib/data/1.14.1/mappings/remediation_advice/remediation_advice.json +2080 -0
  18. data/lib/data/1.14.1/mappings/remediation_advice/remediation_advice.schema.json +75 -0
  19. data/lib/data/1.14.1/third-party-mappings/remediation_training/secure-code-warrior-links.json +438 -0
  20. data/lib/data/1.14.1/vrt.schema.json +63 -0
  21. data/lib/data/1.14.1/vulnerability-rating-taxonomy.json +2730 -0
  22. data/lib/vrt/cross_version_mapping.rb +2 -2
  23. data/lib/vrt/map.rb +2 -2
  24. data/lib/vrt/mapping.rb +9 -5
  25. data/lib/vrt/node.rb +2 -2
  26. data/lib/vrt/third_party_links.rb +1 -1
  27. data/lib/vrt/version.rb +1 -1
  28. data/lib/vrt.rb +1 -1
  29. metadata +36 -14
@@ -32,14 +32,14 @@ module VRT
32
32
  def find_deprecated_node(vrt_id, new_version = nil, max_depth = 'variant')
33
33
  version = latest_version_for_deprecated_node(vrt_id)
34
34
  node_id = deprecated_node_json[vrt_id][new_version] || deprecated_node_json[vrt_id][version]
35
- new_node = VRT::Map.new(new_version).find_node(node_id, max_depth: max_depth)
35
+ new_node = VRT::Map.new(new_version).find_node(node_id, max_depth:)
36
36
  new_node.nil? ? find_deprecated_node(node_id, new_version, max_depth) : new_node
37
37
  end
38
38
 
39
39
  def find_valid_parent_node(vrt_id, new_version, max_depth)
40
40
  new_map = VRT::Map.new(new_version)
41
41
  if new_map.valid?(vrt_id)
42
- new_map.find_node(vrt_id, max_depth: max_depth)
42
+ new_map.find_node(vrt_id, max_depth:)
43
43
  else
44
44
  parent = vrt_id.split('.')[0..-2].join('.')
45
45
  return nil if parent.empty?
data/lib/vrt/map.rb CHANGED
@@ -18,7 +18,7 @@ module VRT
18
18
  end
19
19
 
20
20
  def find_node(string, max_depth: 'variant')
21
- @_found_nodes[string + max_depth] ||= walk_node_tree(string, max_depth: max_depth)
21
+ @_found_nodes[string + max_depth] ||= walk_node_tree(string, max_depth:)
22
22
  end
23
23
 
24
24
  def valid?(vrt_id)
@@ -52,7 +52,7 @@ module VRT
52
52
  return unless valid_identifier?(string)
53
53
 
54
54
  lineage = ''
55
- walk_node_tree(string, max_depth: max_depth) do |ids, node, level|
55
+ walk_node_tree(string, max_depth:) do |ids, node, level|
56
56
  return unless node
57
57
 
58
58
  lineage += node.name
data/lib/vrt/mapping.rb CHANGED
@@ -13,6 +13,8 @@ module VRT
13
13
  # returns the most specific value provided in the mapping file for the given vrt id
14
14
  #
15
15
  # if no mapping file exists for the given version, the mapping file for the earliest version available will be used
16
+ # rubocop:disable Metrics/CyclomaticComplexity
17
+ # rubocop:disable Metrics/PerceivedComplexity
16
18
  def get(id_list, version)
17
19
  # update the vrt id to the first version we have a mapping file for
18
20
  unless @mappings.key?(version)
@@ -29,15 +31,17 @@ module VRT
29
31
  # { remediation_advice: { remediation_advice: '...', references: [...] } }
30
32
  keys.each_with_object({}) do |key, acc|
31
33
  acc[key.to_sym] = get_key(
32
- id_list: id_list,
33
- mapping: mapping,
34
- key: key
34
+ id_list:,
35
+ mapping:,
36
+ key:
35
37
  ) || default&.dig(key)
36
38
  end
37
39
  else
38
- get_key(id_list: id_list, mapping: mapping, key: @scheme) || default
40
+ get_key(id_list:, mapping:, key: @scheme) || default
39
41
  end
40
42
  end
43
+ # rubocop:enable Metrics/CyclomaticComplexity
44
+ # rubocop:enable Metrics/PerceivedComplexity
41
45
 
42
46
  private
43
47
 
@@ -74,7 +78,7 @@ module VRT
74
78
  if mapping.is_a?(Array) && mapping.first.is_a?(Hash) && mapping.first.key?('id')
75
79
  mapping.each_with_object({}) { |entry, acc| acc[entry['id'].to_sym] = key_by_id(entry) }
76
80
  elsif mapping.is_a?(Hash)
77
- mapping.each_with_object({}) { |(key, value), acc| acc[key] = key_by_id(value) }
81
+ mapping.transform_values { |value| key_by_id(value) }
78
82
  else
79
83
  mapping
80
84
  end
data/lib/vrt/node.rb CHANGED
@@ -24,11 +24,11 @@ module VRT
24
24
  end
25
25
 
26
26
  def mappings
27
- Hash[VRT.mappings.map { |name, map| [name, map.get(id_list, @version)] }]
27
+ VRT.mappings.transform_values { |map| map.get(id_list, @version) }
28
28
  end
29
29
 
30
30
  def third_party_links
31
- Hash[VRT.third_party_links.map { |name, map| [name, map.get(id_list, @version)] }]
31
+ VRT.third_party_links.transform_values { |map| map.get(id_list, @version) }
32
32
  end
33
33
 
34
34
  def id_list
@@ -27,7 +27,7 @@ module VRT
27
27
 
28
28
  # For flat third party links ther is no hierarchical step up
29
29
  def get_key(id_list:, mapping:, key: nil) # rubocop:disable Lint/UnusedMethodArgument
30
- mapping.dig(id_list.join('.'))
30
+ mapping[id_list.join('.')]
31
31
  end
32
32
  end
33
33
  end
data/lib/vrt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vrt
2
- VERSION = '0.12.6'.freeze
2
+ VERSION = '0.13.1'.freeze
3
3
  end
data/lib/vrt.rb CHANGED
@@ -81,7 +81,7 @@ module VRT
81
81
  def find_node(vrt_id:, preferred_version: nil, max_depth: 'variant', version: nil) # rubocop:disable Lint/UnusedMethodArgument
82
82
  new_version = preferred_version || current_version
83
83
  if get_map(version: new_version).valid?(vrt_id)
84
- get_map(version: new_version).find_node(vrt_id, max_depth: max_depth)
84
+ get_map(version: new_version).find_node(vrt_id, max_depth:)
85
85
  elsif deprecated_node?(vrt_id)
86
86
  find_deprecated_node(vrt_id, preferred_version, max_depth)
87
87
  else
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vrt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.6
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Barnett Klane
8
8
  - Max Schwenk
9
9
  - Adam David
10
+ - Abhinav Nain
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2024-04-03 00:00:00.000000000 Z
14
+ date: 2024-07-18 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: bundler
@@ -18,75 +19,76 @@ dependencies:
18
19
  requirements:
19
20
  - - "~>"
20
21
  - !ruby/object:Gem::Version
21
- version: '2.1'
22
+ version: 2.5.14
22
23
  type: :development
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
26
  requirements:
26
27
  - - "~>"
27
28
  - !ruby/object:Gem::Version
28
- version: '2.1'
29
+ version: 2.5.14
29
30
  - !ruby/object:Gem::Dependency
30
31
  name: pry
31
32
  requirement: !ruby/object:Gem::Requirement
32
33
  requirements:
33
34
  - - "~>"
34
35
  - !ruby/object:Gem::Version
35
- version: '0.11'
36
+ version: 0.14.2
36
37
  type: :development
37
38
  prerelease: false
38
39
  version_requirements: !ruby/object:Gem::Requirement
39
40
  requirements:
40
41
  - - "~>"
41
42
  - !ruby/object:Gem::Version
42
- version: '0.11'
43
+ version: 0.14.2
43
44
  - !ruby/object:Gem::Dependency
44
45
  name: rake
45
46
  requirement: !ruby/object:Gem::Requirement
46
47
  requirements:
47
48
  - - "~>"
48
49
  - !ruby/object:Gem::Version
49
- version: '12.3'
50
+ version: 13.2.1
50
51
  type: :development
51
52
  prerelease: false
52
53
  version_requirements: !ruby/object:Gem::Requirement
53
54
  requirements:
54
55
  - - "~>"
55
56
  - !ruby/object:Gem::Version
56
- version: '12.3'
57
+ version: 13.2.1
57
58
  - !ruby/object:Gem::Dependency
58
59
  name: rspec
59
60
  requirement: !ruby/object:Gem::Requirement
60
61
  requirements:
61
62
  - - "~>"
62
63
  - !ruby/object:Gem::Version
63
- version: '3.6'
64
+ version: '3.13'
64
65
  type: :development
65
66
  prerelease: false
66
67
  version_requirements: !ruby/object:Gem::Requirement
67
68
  requirements:
68
69
  - - "~>"
69
70
  - !ruby/object:Gem::Version
70
- version: '3.6'
71
+ version: '3.13'
71
72
  - !ruby/object:Gem::Dependency
72
73
  name: rubocop
73
74
  requirement: !ruby/object:Gem::Requirement
74
75
  requirements:
75
76
  - - '='
76
77
  - !ruby/object:Gem::Version
77
- version: 0.56.0
78
+ version: 1.52.1
78
79
  type: :development
79
80
  prerelease: false
80
81
  version_requirements: !ruby/object:Gem::Requirement
81
82
  requirements:
82
83
  - - '='
83
84
  - !ruby/object:Gem::Version
84
- version: 0.56.0
85
+ version: 1.52.1
85
86
  description:
86
87
  email:
87
88
  - barnett@bugcrowd.com
88
89
  - max.schwenk@bugcrowd.com
89
90
  - adam.david@bugcrowd.com
91
+ - abhinav.nain@bugcrowd.com
90
92
  executables: []
91
93
  extensions: []
92
94
  extra_rdoc_files: []
@@ -146,6 +148,26 @@ files:
146
148
  - lib/data/1.13/third-party-mappings/remediation_training/secure-code-warrior-links.json
147
149
  - lib/data/1.13/vrt.schema.json
148
150
  - lib/data/1.13/vulnerability-rating-taxonomy.json
151
+ - lib/data/1.14.1/deprecated-node-mapping.json
152
+ - lib/data/1.14.1/mappings/cvss_v3/cvss_v3.json
153
+ - lib/data/1.14.1/mappings/cvss_v3/cvss_v3.schema.json
154
+ - lib/data/1.14.1/mappings/cwe/cwe.json
155
+ - lib/data/1.14.1/mappings/cwe/cwe.schema.json
156
+ - lib/data/1.14.1/mappings/remediation_advice/remediation_advice.json
157
+ - lib/data/1.14.1/mappings/remediation_advice/remediation_advice.schema.json
158
+ - lib/data/1.14.1/third-party-mappings/remediation_training/secure-code-warrior-links.json
159
+ - lib/data/1.14.1/vrt.schema.json
160
+ - lib/data/1.14.1/vulnerability-rating-taxonomy.json
161
+ - lib/data/1.14/deprecated-node-mapping.json
162
+ - lib/data/1.14/mappings/cvss_v3/cvss_v3.json
163
+ - lib/data/1.14/mappings/cvss_v3/cvss_v3.schema.json
164
+ - lib/data/1.14/mappings/cwe/cwe.json
165
+ - lib/data/1.14/mappings/cwe/cwe.schema.json
166
+ - lib/data/1.14/mappings/remediation_advice/remediation_advice.json
167
+ - lib/data/1.14/mappings/remediation_advice/remediation_advice.schema.json
168
+ - lib/data/1.14/third-party-mappings/remediation_training/secure-code-warrior-links.json
169
+ - lib/data/1.14/vrt.schema.json
170
+ - lib/data/1.14/vulnerability-rating-taxonomy.json
149
171
  - lib/data/1.2/deprecated-node-mapping.json
150
172
  - lib/data/1.2/vrt.schema.json
151
173
  - lib/data/1.2/vulnerability-rating-taxonomy.json
@@ -248,14 +270,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
248
270
  requirements:
249
271
  - - ">="
250
272
  - !ruby/object:Gem::Version
251
- version: '2.4'
273
+ version: '3.1'
252
274
  required_rubygems_version: !ruby/object:Gem::Requirement
253
275
  requirements:
254
276
  - - ">="
255
277
  - !ruby/object:Gem::Version
256
278
  version: '0'
257
279
  requirements: []
258
- rubygems_version: 3.5.3
280
+ rubygems_version: 3.5.9
259
281
  signing_key:
260
282
  specification_version: 4
261
283
  summary: Ruby wrapper for Bugcrowd's Vulnerability Rating Taxonomy