sqreen 1.24.0 → 1.25.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b43caee6a7702bfde6a56f9a3d9ad735de10b5a214ce5d097c3c26c3527f5918
4
- data.tar.gz: 803451b19b5277384c9e74b186e00e0a1d0d8a8a77cb5483cf486088a1705b0d
3
+ metadata.gz: 91d799812d8133a1915b8174bc71b1986028bbea556ed445cc8bd8c240176d96
4
+ data.tar.gz: d7f9e221109affd64736c772f030ba618dba20cdbaac1b5369772e2d151b12ff
5
5
  SHA512:
6
- metadata.gz: 2d35106412544c74a99bcf5eb39b1bc33d95720efbce196e139c15f40c1259b1aaf4646cab127849b9235d3f1cf0ce421c01859eb1c4bc6076683d3f7beeef33
7
- data.tar.gz: b0f5452dda0d2702397968e103313bf910bb996c09064354be78fcabb6492dbb15d898aa1caf5835307a5f21b878550fae59826fbc347382772cba1823cefea2
6
+ metadata.gz: 996a203e716bb890c32c00d75b89e534e78e7fad75dc1ec05acf1089cfc2865ab1d907ea5f364dacd377cbf3e102f3a1ca14ac246a1960a3986334cb5f3de698
7
+ data.tar.gz: 8af17107b023e921b9a660126cc368eb43893724b35c7af76afb6461c623e8d80c9d35f5537af9078b51df8d8f84d6a44b361595249e6db514e64c5e24594bd7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ## 1.25.0
2
+
3
+ * Switch from old sq_mini_racer to upstream mini_racer
4
+ * Support Ruby 3.1
5
+ * Restrict compatiblity to Ruby 2.6 and up
6
+
7
+ ## 1.24.3
8
+
9
+ * Fix WAF exception reporting corner case
10
+
11
+ ## 1.24.2
12
+
13
+ * Fix kwargs for rule callbacks on Ruby 3+
14
+ * Fix properties propagation for custom events
15
+ * Fix Devise key type mismatch for signup
16
+
17
+ ## 1.24.1
18
+
19
+ * Add Datadog trace keeping through sampling
20
+ * Improve Datadog correlation compatibility with Sinatra
21
+ * Improve attack event correlation with Datadog spans
22
+
1
23
  ## 1.24.0
2
24
 
3
25
  * Add Sqreen event correlation with Datadog traces
@@ -61,6 +61,26 @@ module Sqreen
61
61
  u.append(p)
62
62
  end
63
63
  end
64
+
65
+ insert_datadog_middleware(builder, *args, &block)
66
+ end
67
+
68
+ def insert_datadog_middleware(builder, *args, &block)
69
+ return unless defined?(Datadog) && Datadog.respond_to?(:configuration) && Datadog.configuration.instrumented_integrations.key?(:sinatra)
70
+
71
+ Datadog.configure do |c|
72
+ sinatra_config = Datadog.configuration[:sinatra]
73
+
74
+ c.use(
75
+ :rack,
76
+ service_name: sinatra_config[:service_name],
77
+ distributed_tracing: sinatra_config[:distributed_tracing],
78
+ ) unless Datadog.configuration.instrumented_integrations.key?(:rack)
79
+ end
80
+
81
+ insert_middleware(builder, Datadog::Contrib::Rack::TraceMiddleware, args, block) do |p, u|
82
+ u.insert(0, p)
83
+ end
64
84
  end
65
85
 
66
86
  def wrap_middleware(middleware, *args, &block)
@@ -112,7 +112,7 @@ module Sqreen
112
112
 
113
113
  flow = catch(Ball.new) do |ball|
114
114
  Timer.new(c.name, &timed_callbacks_proc).measure(ignore: chrono) do
115
- c.call(CallbackCall.new(c, remaining, hooked_call.instance, hooked_call.args_passed), ball)
115
+ c.call(CallbackCall.new(c, remaining, hooked_call.instance, kwargs.empty? ? hooked_call.args_passed : hooked_call.args_passed + [kwargs]), ball)
116
116
  end
117
117
  end
118
118
 
@@ -33,7 +33,7 @@ module Sqreen
33
33
  private
34
34
 
35
35
  def detect_adapter
36
- @online = try_sq_mini_racer || try_rhino
36
+ @online = try_sq_mini_racer || try_mini_racer || try_rhino
37
37
 
38
38
  Sqreen.log.info "JS engine online: #{variant}" if @online
39
39
  end
@@ -53,6 +53,21 @@ module Sqreen
53
53
  false
54
54
  end
55
55
 
56
+ def try_mini_racer
57
+ gem = Gem.loaded_specs['mini_racer']
58
+ unless gem
59
+ Sqreen.log.info "mini_racer gem not detected"
60
+ return false
61
+ end
62
+
63
+ require 'mini_racer'
64
+ require 'sqreen/js/mini_racer_adapter'
65
+ @adapter = MiniRacerAdapter.new(false)
66
+ rescue LoadError => e
67
+ Sqreen.log.warn "Failed loading mini_racer: #{e}"
68
+ false
69
+ end
70
+
56
71
  def try_rhino
57
72
  gem = Gem.loaded_specs['therubyrhino']
58
73
  unless gem
@@ -34,7 +34,7 @@ module Sqreen
34
34
 
35
35
  def self.static_init
36
36
  return if @done_static_init
37
- Sqreen::MiniRacer::Platform.set_flags! :noconcurrent_recompilation
37
+ Sqreen::MiniRacer::Platform.set_flags! :noconcurrent_recompilation if @vendored
38
38
  @done_static_init = true
39
39
  end
40
40
  end
@@ -118,7 +118,7 @@ module Sqreen
118
118
 
119
119
  # garbage collections max 1 in every 4 calls (avg)
120
120
  if heap_stats[:total_heap_size] > @gc_threshold_in_bytes
121
- low_memory_notification
121
+ low_memory_notification if respond_to?(:low_memory_notification)
122
122
  @gc_load += 4
123
123
  else
124
124
  @gc_load = [0, @gc_load - 1].max
@@ -20,7 +20,7 @@ module Sqreen
20
20
  keys = args[1].class.authentication_keys
21
21
  ip = framework.client_ip
22
22
  category = 'auto-signup'
23
- data = data.select { |k, _| keys.include?(k) }
23
+ data = data.select { |k, _| keys.map(&:to_s).include?(k.to_s) }
24
24
 
25
25
  if data.empty?
26
26
  Sqreen.log.debug { "#{category} from #{ip} but keys empty" }
@@ -70,6 +70,15 @@ module Sqreen
70
70
  if payload_tpl.include?('context')
71
71
  payload[:backtrace] = Sqreen::Context.new.bt
72
72
  end
73
+ if framework.respond_to?(:datadog_span) && (datadog_span = framework.datadog_span)
74
+ Sqreen::Weave.logger.debug { "attack datadog:true span_id:#{datadog_span.span_id} parent_id:#{datadog_span.parent_id} trace_id:#{datadog_span.trace_id}" }
75
+ payload.merge!(
76
+ :datadog_trace_id => datadog_span.trace_id,
77
+ :datadog_span_id => datadog_span.span_id,
78
+ )
79
+ datadog_span.set_tag(Datadog::Ext::ManualTracing::TAG_KEEP, true)
80
+ datadog_span.set_tag('sqreen.event', true)
81
+ end
73
82
  framework.observe(:attacks, payload, payload_tpl)
74
83
  end
75
84
 
@@ -146,7 +146,7 @@ module Sqreen
146
146
  error_code: ERROR_CODES[e.error],
147
147
  }.tap do |r|
148
148
  r[:error_data] = e.data if e.data
149
- r[:args] = e.args if e.arg
149
+ r[:args] = e.args if e.args
150
150
  end,
151
151
  }
152
152
  end
@@ -197,12 +197,13 @@ module Sqreen
197
197
  # see Sqreen::RequestRecord.processed_sdk_calls
198
198
  def convert_track(call_info)
199
199
  options = call_info[:args][1] || {}
200
+ args = options[:args] || {}
200
201
  Kit::Signals::Specialized::SdkTrackCall.new(
201
202
  signal_name: "sq.sdk.#{call_info[:args][0]}",
202
203
  time: call_info[:time],
203
204
  payload: Kit::Signals::Specialized::SdkTrackCall::Payload.new(
204
- properties: options[:properties],
205
- user_identifiers: options[:user_identifiers]
205
+ properties: args[:properties],
206
+ user_identifiers: args[:user_identifiers]
206
207
  )
207
208
  )
208
209
  end
@@ -4,5 +4,5 @@
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
5
5
 
6
6
  module Sqreen
7
- VERSION = '1.24.0'.freeze
7
+ VERSION = '1.25.0'.freeze
8
8
  end
@@ -244,8 +244,7 @@ class Sqreen::Weave::Legacy::Instrumentation
244
244
 
245
245
  # shrinkwrap_timer = Sqreen::Graft::Timer.new('weave,shrinkwrap')
246
246
  # shrinkwrap_timer.start
247
- if defined?(Datadog)
248
- datadog_span = Datadog.tracer.active_root_span
247
+ if defined?(Datadog) && Datadog.tracer && (datadog_span = Datadog.tracer.active_root_span)
249
248
  Sqreen::Weave.logger.debug { "request datadog:true span_id:#{datadog_span.span_id} parent_id:#{datadog_span.parent_id} trace_id:#{datadog_span.trace_id}" }
250
249
  end
251
250
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqreen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.24.0
4
+ version: 1.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sqreen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-30 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqreen-backport
@@ -30,34 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.3
33
+ version: 0.2.4
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.3
40
+ version: 0.2.4
41
41
  - !ruby/object:Gem::Dependency
42
- name: sq_mini_racer
42
+ name: mini_racer
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.2'
48
- - - "<"
45
+ - - ">="
49
46
  - !ruby/object:Gem::Version
50
- version: 0.5.a
47
+ version: 0.4.0
51
48
  type: :runtime
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
54
51
  requirements:
55
- - - "~>"
56
- - !ruby/object:Gem::Version
57
- version: '0.2'
58
- - - "<"
52
+ - - ">="
59
53
  - !ruby/object:Gem::Version
60
- version: 0.5.a
54
+ version: 0.4.0
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: libsqreen
63
57
  requirement: !ruby/object:Gem::Requirement
@@ -347,14 +341,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
347
341
  requirements:
348
342
  - - ">="
349
343
  - !ruby/object:Gem::Version
350
- version: '2.0'
344
+ version: '2.6'
351
345
  required_rubygems_version: !ruby/object:Gem::Requirement
352
346
  requirements:
353
347
  - - ">="
354
348
  - !ruby/object:Gem::Version
355
349
  version: '0'
356
350
  requirements: []
357
- rubygems_version: 3.2.3
351
+ rubygems_version: 3.2.26
358
352
  signing_key:
359
353
  specification_version: 4
360
354
  summary: Sqreen Ruby agent