contrast-agent 7.5.0 → 7.6.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/ext/cs__common/cs__common.c +5 -5
- data/ext/cs__contrast_patch/cs__contrast_patch.c +2 -1
- data/ext/cs__scope/cs__scope.c +6 -5
- data/lib/contrast/agent/assess/events/event_data.rb +11 -2
- data/lib/contrast/agent/assess/finalizers/freeze.rb +1 -0
- data/lib/contrast/agent/assess/finalizers/hash.rb +7 -0
- data/lib/contrast/agent/assess/policy/patcher.rb +2 -0
- data/lib/contrast/agent/assess/policy/policy.rb +4 -0
- data/lib/contrast/agent/assess/policy/policy_node.rb +29 -7
- data/lib/contrast/agent/assess/policy/preshift.rb +34 -1
- data/lib/contrast/agent/assess/policy/propagation_method.rb +16 -1
- data/lib/contrast/agent/assess/policy/propagation_node.rb +40 -1
- data/lib/contrast/agent/assess/policy/propagator/append.rb +5 -0
- data/lib/contrast/agent/assess/policy/propagator/base.rb +10 -0
- data/lib/contrast/agent/assess/policy/propagator/buffer.rb +6 -0
- data/lib/contrast/agent/assess/policy/propagator/center.rb +14 -0
- data/lib/contrast/agent/assess/policy/propagator/custom.rb +6 -0
- data/lib/contrast/agent/assess/policy/propagator/database_write.rb +14 -0
- data/lib/contrast/agent/assess/policy/propagator/insert.rb +6 -0
- data/lib/contrast/agent/assess/policy/propagator/match_data.rb +38 -0
- data/lib/contrast/agent/assess/policy/propagator/next.rb +6 -0
- data/lib/contrast/agent/assess/policy/propagator/prepend.rb +5 -0
- data/lib/contrast/agent/assess/policy/propagator/remove.rb +4 -0
- data/lib/contrast/agent/assess/policy/propagator/replace.rb +5 -0
- data/lib/contrast/agent/assess/policy/propagator/reverse.rb +5 -0
- data/lib/contrast/agent/assess/policy/propagator/select.rb +30 -0
- data/lib/contrast/agent/assess/policy/propagator/splat.rb +10 -0
- data/lib/contrast/agent/assess/policy/source_node.rb +5 -1
- data/lib/contrast/agent/assess/policy/source_validation/cross_site_validator.rb +4 -0
- data/lib/contrast/agent/assess/policy/trigger/reflected_xss.rb +16 -0
- data/lib/contrast/agent/assess/policy/trigger/xpath.rb +19 -0
- data/lib/contrast/agent/assess/policy/trigger_method.rb +8 -1
- data/lib/contrast/agent/assess/policy/trigger_node.rb +11 -1
- data/lib/contrast/agent/assess/policy/trigger_validation/redos_validator.rb +4 -0
- data/lib/contrast/agent/assess/policy/trigger_validation/ssrf_validator.rb +6 -0
- data/lib/contrast/agent/assess/policy/trigger_validation/xss_validator.rb +6 -0
- data/lib/contrast/agent/hooks/at_exit_hook.rb +1 -0
- data/lib/contrast/agent/reporting/reporting_utilities/audit.rb +1 -1
- data/lib/contrast/agent/reporting/reporting_utilities/reporter_client.rb +1 -1
- data/lib/contrast/agent/reporting/reporting_utilities/reporter_client_utils.rb +1 -1
- data/lib/contrast/agent/reporting/reporting_utilities/response_handler.rb +3 -3
- data/lib/contrast/agent/reporting/reporting_utilities/response_handler_utils.rb +18 -6
- data/lib/contrast/agent/request/request_handler.rb +1 -0
- data/lib/contrast/agent/version.rb +1 -1
- data/lib/contrast/configuration.rb +1 -1
- data/lib/contrast/utils/middleware_utils.rb +9 -0
- data/lib/contrast/utils/routes_sent.rb +3 -2
- data/lib/contrast.rb +2 -2
- data/resources/assess/policy.json +50 -1
- data/ruby-agent.gemspec +13 -13
- metadata +23 -22
data/lib/contrast.rb
CHANGED
@@ -95,15 +95,15 @@ end
|
|
95
95
|
|
96
96
|
# This needs to be required very early, after component interfaces, and before instrumentation attempts
|
97
97
|
require 'contrast/funchook/funchook'
|
98
|
-
|
99
98
|
require 'contrast/agent/version'
|
100
99
|
|
101
100
|
# shared utils
|
102
101
|
require 'contrast/utils/timer'
|
103
|
-
|
104
102
|
require 'contrast/utils/assess/sampling_util'
|
105
103
|
require 'contrast/agent'
|
106
104
|
|
105
|
+
# Prepend fix for Ruby 3.0
|
106
|
+
# TODO: RUBY-99999 remove once obsolete.
|
107
107
|
if RUBY_VERSION >= '3.0.0' && RUBY_VERSION < '3.1.0'
|
108
108
|
# Put prepend back as it was.
|
109
109
|
Class.alias_method(:prepend, :cs__orig_prepend)
|
@@ -304,7 +304,15 @@
|
|
304
304
|
"class_name":"String",
|
305
305
|
"instance_method": true,
|
306
306
|
"method_visibility": "public",
|
307
|
-
"method_name":"capitalize
|
307
|
+
"method_name":"capitalize",
|
308
|
+
"source":"O",
|
309
|
+
"target":"R",
|
310
|
+
"action":"KEEP"
|
311
|
+
}, {
|
312
|
+
"class_name":"String",
|
313
|
+
"instance_method": true,
|
314
|
+
"method_visibility": "public",
|
315
|
+
"method_name":"html_safe",
|
308
316
|
"source":"O",
|
309
317
|
"target":"R",
|
310
318
|
"action":"KEEP"
|
@@ -908,6 +916,36 @@
|
|
908
916
|
"action":"SPLAT",
|
909
917
|
"tags":["HTML_ENCODED"],
|
910
918
|
"untags":["HTML_DECODED"]
|
919
|
+
}, {
|
920
|
+
"class_name": "ActiveSupport::CoreExt::ERBUtil",
|
921
|
+
"method_name": "html_escape",
|
922
|
+
"method_visibility": "public",
|
923
|
+
"instance_method": true,
|
924
|
+
"source": "P0",
|
925
|
+
"target": "R",
|
926
|
+
"action": "SPLAT",
|
927
|
+
"tags":["HTML_ENCODED"],
|
928
|
+
"untags":["HTML_DECODED"]
|
929
|
+
}, {
|
930
|
+
"class_name": "ActiveSupport::CoreExt::ERBUtil",
|
931
|
+
"method_name": "h",
|
932
|
+
"method_visibility": "public",
|
933
|
+
"instance_method": true,
|
934
|
+
"source": "P0",
|
935
|
+
"target": "R",
|
936
|
+
"action": "SPLAT",
|
937
|
+
"tags":["HTML_ENCODED"],
|
938
|
+
"untags":["HTML_DECODED"]
|
939
|
+
}, {
|
940
|
+
"class_name": "ActiveSupport::CoreExt::ERBUtil",
|
941
|
+
"method_name": "unwrapped_html_escape",
|
942
|
+
"method_visibility": "public",
|
943
|
+
"instance_method": true,
|
944
|
+
"source": "P0",
|
945
|
+
"target": "R",
|
946
|
+
"action": "SPLAT",
|
947
|
+
"tags":["HTML_ENCODED"],
|
948
|
+
"untags":["HTML_DECODED"]
|
911
949
|
}, {
|
912
950
|
"class_name":"ERB::Util",
|
913
951
|
"method_name":"h",
|
@@ -1028,6 +1066,17 @@
|
|
1028
1066
|
"target": "R",
|
1029
1067
|
"action": "SPLAT"
|
1030
1068
|
},
|
1069
|
+
{
|
1070
|
+
"class_name": "ActiveSupport::Multibyte::Unicode",
|
1071
|
+
"instance_method": true,
|
1072
|
+
"method_visibility": "public",
|
1073
|
+
"method_name":"tidy_bytes",
|
1074
|
+
"source":"P0",
|
1075
|
+
"target":"R",
|
1076
|
+
"action": "KEEP",
|
1077
|
+
"tags":["HTML_ENCODED"],
|
1078
|
+
"untags":["HTML_DECODED"]
|
1079
|
+
},
|
1031
1080
|
{
|
1032
1081
|
"class_name": "JSON",
|
1033
1082
|
"method_name": "generate",
|
data/ruby-agent.gemspec
CHANGED
@@ -9,14 +9,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
9
9
|
|
10
10
|
# Add the team as authors of the Agent
|
11
11
|
def self.add_authors spec
|
12
|
-
spec.authors = %w[
|
13
|
-
galen.palmer@contrastsecurity.com
|
14
|
-
harold.mcginnis@contrastsecurity.com
|
15
|
-
donald.propst@contrastsecurity.com
|
16
|
-
alex.macdonald@contrastsecurity.com
|
17
|
-
mark.petersen@contrastsecurity.com
|
18
|
-
joshua.reed@contrastsecurity.com
|
19
|
-
]
|
12
|
+
spec.authors = %w[ruby@contrastsecurity.com]
|
20
13
|
end
|
21
14
|
|
22
15
|
# Add those dependencies required to develop or test the Agent
|
@@ -44,7 +37,6 @@ end
|
|
44
37
|
def self.add_debuggers spec
|
45
38
|
spec.add_development_dependency 'pry'
|
46
39
|
spec.add_development_dependency 'pry-byebug', '>= 3.9'
|
47
|
-
spec.add_development_dependency 'ruby-debug-ide'
|
48
40
|
end
|
49
41
|
|
50
42
|
# Dependencies used for framework testing.
|
@@ -52,7 +44,7 @@ def self.add_frameworks spec
|
|
52
44
|
spec.add_development_dependency 'grape', '~> 1.5', '>= 1.5.2'
|
53
45
|
spec.add_development_dependency 'rack-protection', '>= 2'
|
54
46
|
spec.add_development_dependency 'rails', '>= 6', '~> 7'
|
55
|
-
spec.add_development_dependency 'sinatra', '>= 2'
|
47
|
+
spec.add_development_dependency 'sinatra', '>= 2', '<4.0.0'
|
56
48
|
end
|
57
49
|
|
58
50
|
# Dependencies used for linting prior to commit.
|
@@ -105,9 +97,14 @@ def self.add_tested_gems spec
|
|
105
97
|
spec.add_development_dependency 'async'
|
106
98
|
spec.add_development_dependency 'execjs'
|
107
99
|
spec.add_development_dependency 'rhino'
|
108
|
-
|
100
|
+
if ENV.fetch('CONTRAST__PIPELINE__RUN', nil) == 'true'
|
101
|
+
spec.add_development_dependency 'sqlite3', '1.6.6'
|
102
|
+
else
|
103
|
+
spec.add_development_dependency 'sqlite3'
|
104
|
+
end
|
109
105
|
spec.add_development_dependency 'tilt'
|
110
106
|
spec.add_development_dependency 'xpath'
|
107
|
+
spec.add_development_dependency 'ruby'
|
111
108
|
end
|
112
109
|
|
113
110
|
# Add those dependencies required to run the Agent in customer applications.
|
@@ -116,8 +113,11 @@ end
|
|
116
113
|
# dependencies.csv in this directory to indicate that and create a
|
117
114
|
# corresponding update to the fake gem server data in TeamServer.
|
118
115
|
def self.add_dependencies spec
|
119
|
-
|
120
|
-
|
116
|
+
if ENV.fetch('CONTRAST__PIPELINE__RUN', nil) == 'true'
|
117
|
+
spec.add_dependency 'ffi', '1.15.5'
|
118
|
+
else
|
119
|
+
spec.add_dependency 'ffi'
|
120
|
+
end
|
121
121
|
spec.add_dependency 'ougai', '>= 1.8', '< 3.0.0'
|
122
122
|
spec.add_dependency 'rack', '>= 2.0', '< 4.0.0'
|
123
123
|
|
metadata
CHANGED
@@ -1,19 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: contrast-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
- harold.mcginnis@contrastsecurity.com
|
9
|
-
- donald.propst@contrastsecurity.com
|
10
|
-
- alex.macdonald@contrastsecurity.com
|
11
|
-
- mark.petersen@contrastsecurity.com
|
12
|
-
- joshua.reed@contrastsecurity.com
|
7
|
+
- ruby@contrastsecurity.com
|
13
8
|
autorequire:
|
14
9
|
bindir: exe
|
15
10
|
cert_chain: []
|
16
|
-
date:
|
11
|
+
date: 2024-04-11 00:00:00.000000000 Z
|
17
12
|
dependencies:
|
18
13
|
- !ruby/object:Gem::Dependency
|
19
14
|
name: bundler
|
@@ -85,20 +80,6 @@ dependencies:
|
|
85
80
|
- - ">="
|
86
81
|
- !ruby/object:Gem::Version
|
87
82
|
version: '3.9'
|
88
|
-
- !ruby/object:Gem::Dependency
|
89
|
-
name: ruby-debug-ide
|
90
|
-
requirement: !ruby/object:Gem::Requirement
|
91
|
-
requirements:
|
92
|
-
- - ">="
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: '0'
|
95
|
-
type: :development
|
96
|
-
prerelease: false
|
97
|
-
version_requirements: !ruby/object:Gem::Requirement
|
98
|
-
requirements:
|
99
|
-
- - ">="
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
102
83
|
- !ruby/object:Gem::Dependency
|
103
84
|
name: debride
|
104
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -300,6 +281,9 @@ dependencies:
|
|
300
281
|
- - ">="
|
301
282
|
- !ruby/object:Gem::Version
|
302
283
|
version: '2'
|
284
|
+
- - "<"
|
285
|
+
- !ruby/object:Gem::Version
|
286
|
+
version: 4.0.0
|
303
287
|
type: :development
|
304
288
|
prerelease: false
|
305
289
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -307,6 +291,9 @@ dependencies:
|
|
307
291
|
- - ">="
|
308
292
|
- !ruby/object:Gem::Version
|
309
293
|
version: '2'
|
294
|
+
- - "<"
|
295
|
+
- !ruby/object:Gem::Version
|
296
|
+
version: 4.0.0
|
310
297
|
- !ruby/object:Gem::Dependency
|
311
298
|
name: async
|
312
299
|
requirement: !ruby/object:Gem::Requirement
|
@@ -391,6 +378,20 @@ dependencies:
|
|
391
378
|
- - ">="
|
392
379
|
- !ruby/object:Gem::Version
|
393
380
|
version: '0'
|
381
|
+
- !ruby/object:Gem::Dependency
|
382
|
+
name: ruby
|
383
|
+
requirement: !ruby/object:Gem::Requirement
|
384
|
+
requirements:
|
385
|
+
- - ">="
|
386
|
+
- !ruby/object:Gem::Version
|
387
|
+
version: '0'
|
388
|
+
type: :development
|
389
|
+
prerelease: false
|
390
|
+
version_requirements: !ruby/object:Gem::Requirement
|
391
|
+
requirements:
|
392
|
+
- - ">="
|
393
|
+
- !ruby/object:Gem::Version
|
394
|
+
version: '0'
|
394
395
|
- !ruby/object:Gem::Dependency
|
395
396
|
name: benchmark-ips
|
396
397
|
requirement: !ruby/object:Gem::Requirement
|