sqreen 1.20.0 → 1.20.4

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/lib/sqreen/actions/block_user.rb +1 -1
  4. data/lib/sqreen/actions/redirect_ip.rb +1 -1
  5. data/lib/sqreen/actions/redirect_user.rb +1 -1
  6. data/lib/sqreen/agent_message.rb +20 -0
  7. data/lib/sqreen/attack_detected.html +1 -2
  8. data/lib/sqreen/ca.crt +24 -0
  9. data/lib/sqreen/condition_evaluator.rb +8 -2
  10. data/lib/sqreen/configuration.rb +5 -3
  11. data/lib/sqreen/deferred_logger.rb +50 -14
  12. data/lib/sqreen/deprecation.rb +38 -0
  13. data/lib/sqreen/endpoint_testing.rb +184 -0
  14. data/lib/sqreen/events/request_record.rb +0 -1
  15. data/lib/sqreen/frameworks/generic.rb +9 -0
  16. data/lib/sqreen/frameworks/rails.rb +0 -7
  17. data/lib/sqreen/frameworks/request_recorder.rb +2 -0
  18. data/lib/sqreen/graft/call.rb +76 -18
  19. data/lib/sqreen/graft/callback.rb +1 -1
  20. data/lib/sqreen/graft/hook.rb +187 -85
  21. data/lib/sqreen/graft/hook_point.rb +1 -1
  22. data/lib/sqreen/legacy/instrumentation.rb +22 -10
  23. data/lib/sqreen/legacy/old_event_submission_strategy.rb +2 -1
  24. data/lib/sqreen/log.rb +3 -2
  25. data/lib/sqreen/log/loggable.rb +2 -1
  26. data/lib/sqreen/logger.rb +24 -0
  27. data/lib/sqreen/metrics_store.rb +11 -0
  28. data/lib/sqreen/null_logger.rb +22 -0
  29. data/lib/sqreen/remote_command.rb +1 -0
  30. data/lib/sqreen/rules.rb +8 -4
  31. data/lib/sqreen/rules/blacklist_ips_cb.rb +2 -2
  32. data/lib/sqreen/rules/custom_error_cb.rb +3 -3
  33. data/lib/sqreen/rules/rule_cb.rb +2 -0
  34. data/lib/sqreen/rules/waf_cb.rb +3 -3
  35. data/lib/sqreen/runner.rb +64 -9
  36. data/lib/sqreen/session.rb +17 -11
  37. data/lib/sqreen/version.rb +1 -1
  38. data/lib/sqreen/weave/budget.rb +46 -0
  39. data/lib/sqreen/weave/legacy/instrumentation.rb +194 -103
  40. data/lib/sqreen/worker.rb +6 -2
  41. metadata +9 -7
  42. data/lib/sqreen/encoding_sanitizer.rb +0 -27
@@ -23,11 +23,15 @@ module Sqreen
23
23
  Sqreen.log.debug("Starting Sqreen #{Sqreen::VERSION}")
24
24
  prevent_startup = Sqreen.framework.prevent_startup
25
25
  if !prevent_startup
26
- warn "[#{Process.pid}] Sqreen logging at level #{Sqreen.log.instance_eval { @logger }.level} to #{Sqreen.log.instance_eval { @logger }.instance_eval { @logdev.filename }}"
26
+ logger = Sqreen.log.instance_eval { @logger }
27
+ log_level = logger.send(:format_severity, logger.level)
28
+ log_filename = logger.instance_eval { @logdev.filename }
29
+ warn "process.pid:#{Process.pid} sqreen.log.level:#{log_level} sqreen.log.location:#{log_filename.inspect}"
27
30
  runner = Sqreen::Runner.new(configuration, framework)
28
31
  runner.run_watcher
32
+ Sqreen.log.info("process.pid:#{Process.pid} sqreen.start:true")
29
33
  else
30
- Sqreen.log.debug("#{prevent_startup} prevented Sqreen startup")
34
+ Sqreen.log.info("process.pid:#{Process.pid} sqreen.start:false cause:#{prevent_startup}")
31
35
  end
32
36
  rescue Sqreen::TokenNotFoundException
33
37
  Sqreen.log.error "Sorry but we couldn't find your Sqreen token.\nYour application is NOT currently protected by Sqreen.\n\nHave you filled your config/sqreen.yml?\n\n"
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.20.0
4
+ version: 1.20.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sqreen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-18 00:00:00.000000000 Z
11
+ date: 2020-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqreen-backport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.0
33
+ version: 0.2.2
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.0
40
+ version: 0.2.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sq_mini_racer
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +93,7 @@ files:
93
93
  - lib/sqreen/actions/user_action_class.rb
94
94
  - lib/sqreen/actions/users_index.rb
95
95
  - lib/sqreen/agent.rb
96
+ - lib/sqreen/agent_message.rb
96
97
  - lib/sqreen/aggregated_metric.rb
97
98
  - lib/sqreen/attack_blocked.rb
98
99
  - lib/sqreen/attack_detected.html
@@ -121,7 +122,8 @@ files:
121
122
  - lib/sqreen/dependency/rails.rb
122
123
  - lib/sqreen/dependency/sentry.rb
123
124
  - lib/sqreen/dependency/sinatra.rb
124
- - lib/sqreen/encoding_sanitizer.rb
125
+ - lib/sqreen/deprecation.rb
126
+ - lib/sqreen/endpoint_testing.rb
125
127
  - lib/sqreen/error_handling_middleware.rb
126
128
  - lib/sqreen/event.rb
127
129
  - lib/sqreen/events/attack.rb
@@ -253,6 +255,7 @@ files:
253
255
  - lib/sqreen/version.rb
254
256
  - lib/sqreen/waf_error.rb
255
257
  - lib/sqreen/weave.rb
258
+ - lib/sqreen/weave/budget.rb
256
259
  - lib/sqreen/weave/hardcoded.rb
257
260
  - lib/sqreen/weave/instrumentor.rb
258
261
  - lib/sqreen/weave/legacy.rb
@@ -290,8 +293,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
290
293
  - !ruby/object:Gem::Version
291
294
  version: '0'
292
295
  requirements: []
293
- rubyforge_project:
294
- rubygems_version: 2.7.7
296
+ rubygems_version: 3.1.4
295
297
  signing_key:
296
298
  specification_version: 4
297
299
  summary: Sqreen Ruby agent
@@ -1,27 +0,0 @@
1
- # typed: true
2
-
3
- # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
- # Please refer to our terms for more information: https://www.sqreen.com/terms.html
5
-
6
- module Sqreen
7
- class EncodingSanitizer
8
- def self.sanitize(obj)
9
- case obj
10
- when String
11
- sanitize_string(obj)
12
- when Array
13
- obj.map { |e| sanitize(e) }
14
- when Hash
15
- obj.each_with_object({}) { |(k, v), h| h[k] = sanitize(v) }
16
- else
17
- obj
18
- end
19
- end
20
-
21
- def self.sanitize_string(s)
22
- return s if s.encoding.name == 'UTF-8' && s.valid_encoding?
23
-
24
- s.encode('UTF-16', :invalid => :replace, :undef => :replace).encode('UTF-8')
25
- end
26
- end
27
- end