aikido-zen 1.0.3-arm64-linux → 1.0.5-arm64-linux

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb6fafe1d5857eac161a3dee53455b0b8a395f9965a1124026cec7d9c49d3c6b
4
- data.tar.gz: 3c9f8c6345771fa56c59b639ce9e7b30eac7c414b91949604462b667b24a563f
3
+ metadata.gz: 42aa0c53c7c2db9edc33a04776dcf93773c7bf35eb3a0fd523a344b1cd208dc4
4
+ data.tar.gz: 380811891ab3396f024ccad2def27c32438a4b89ec9be80430c3d2a58519b446
5
5
  SHA512:
6
- metadata.gz: ba9563a9e876acf53ae91eea1db3d85895bcfe7a927026b1e321f711f1cc7662c54e2269443d73ce2b5755eda7d952d3c03fbcaaf12d6a07761670b35298abbb
7
- data.tar.gz: 4237d1c64fdaddc3953ff75b38d6ffbf2f37a12ef88fd422361901367ab9c610832783a998b813584cb4155ba9140904c8d29eb9fce3545895aca9ae052ac31c
6
+ metadata.gz: 91d7e278c99c31c9bac45bf44bf491a22c890b32f03fff1bfda6cbdc7ab13c2c5bf803389db1c16d10371b286d3c94d542a60ba73a3034a0a9448c97510a2269
7
+ data.tar.gz: 5eca54161486245ec81db830e971deaafd508b0de2da2266ce0f5d138f2c6fb9c03dc41bdf9507db7dddf0edfd4f35e06b66dea4dd342c296a80552ede81692f
data/docs/config.md CHANGED
@@ -5,6 +5,15 @@ changing values on the `Aikido::Zen.config` object, which you can do from
5
5
  your app's startup file (like an initializer in Rails, or `config.ru` in
6
6
  other Rack-based apps).
7
7
 
8
+ ## Middleware insertion
9
+
10
+ By default, the Zen middleware is inserted after `ActionDispatch::Executor`.
11
+ You can change this by setting `Aikido::Zen.config.insert_middleware_after`
12
+ to a Rack middleware class or index.
13
+
14
+ When set to `nil`, the middleware is inserted before the first middleware in
15
+ the then-current middleware stack.
16
+
8
17
  ## Disable Zen
9
18
 
10
19
  In order to fully turn off Zen and prevent it from intercepting any requests or
@@ -8,6 +8,12 @@ require_relative "context"
8
8
 
9
9
  module Aikido::Zen
10
10
  class Config
11
+ # @return [Class, Integer, nil] The Rack middleware class or index after which
12
+ # the Zen middleware should be inserted. When set to nil, the middleware is
13
+ # inserted before the first middleware in the then-current middleware stack.
14
+ # Defaults to ::ActionDispatch::Executor.
15
+ attr_accessor :insert_middleware_after
16
+
11
17
  # @return [Boolean] whether Aikido should be turned completely off (no
12
18
  # intercepting calls to protect the app, no agent process running, no
13
19
  # middleware installed). Defaults to false (so, enabled). Can be set
@@ -178,6 +184,7 @@ module Aikido::Zen
178
184
  attr_accessor :attack_wave_max_cache_entries
179
185
 
180
186
  def initialize
187
+ self.insert_middleware_after = ::ActionDispatch::Executor
181
188
  self.disabled = read_boolean_from_env(ENV.fetch("AIKIDO_DISABLE", false)) || read_boolean_from_env(ENV.fetch("AIKIDO_DISABLED", false))
182
189
  self.blocking_mode = read_boolean_from_env(ENV.fetch("AIKIDO_BLOCK", false))
183
190
  self.api_timeouts = 10
@@ -9,16 +9,32 @@ module Aikido::Zen
9
9
  config.zen = Aikido::Zen.config
10
10
  end
11
11
 
12
- initializer "aikido.add_middleware" do |app|
13
- app.middleware.insert_before 0, Aikido::Zen::Middleware::ForkDetector
14
-
15
- app.middleware.use Aikido::Zen::Middleware::ContextSetter
16
- app.middleware.use Aikido::Zen::Middleware::AllowedAddressChecker
17
- app.middleware.use Aikido::Zen::Middleware::AttackProtector
18
- app.middleware.use Aikido::Zen::Middleware::AttackWaveProtector
19
- # Request Tracker stats do not consider failed request or 40x, so the middleware
20
- # must be the last one wrapping the request.
21
- app.middleware.use Aikido::Zen::Middleware::RequestTracker
12
+ initializer "aikido.add_middleware", after: :load_config_initializers do |app|
13
+ # The Zen middleware is inserted in order as a block after the configured
14
+ # middleware anchor point.
15
+
16
+ middleware_block = [
17
+ Aikido::Zen::Middleware::ForkDetector,
18
+ Aikido::Zen::Middleware::ContextSetter,
19
+ Aikido::Zen::Middleware::AllowedAddressChecker,
20
+ Aikido::Zen::Middleware::AttackProtector,
21
+ Aikido::Zen::Middleware::AttackWaveProtector,
22
+ # Request Tracker stats do not consider failed requests, so the middleware
23
+ # must be the last one wrapping the request.
24
+ Aikido::Zen::Middleware::RequestTracker
25
+ ]
26
+
27
+ middleware_anchor = Aikido::Zen.config.insert_middleware_after
28
+
29
+ if middleware_anchor.nil?
30
+ app.middleware.insert_before 0, middleware_block.first
31
+ else
32
+ app.middleware.insert_after middleware_anchor, middleware_block.first
33
+ end
34
+
35
+ middleware_block.each_cons(2) do |existing_middleware, middleware|
36
+ app.middleware.insert_after(existing_middleware, middleware)
37
+ end
22
38
 
23
39
  ActiveSupport.on_load(:action_controller) do
24
40
  # Due to how Rails sets up its middleware chain, the routing is evaluated
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Aikido
4
4
  module Zen
5
- VERSION = "1.0.3"
5
+ VERSION = "1.0.5"
6
6
 
7
7
  # The version of libzen_internals that we build against.
8
8
  LIBZEN_VERSION = "0.1.48"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aikido-zen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.5
5
5
  platform: arm64-linux
6
6
  authors:
7
7
  - Aikido Security
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-12-16 00:00:00.000000000 Z
11
+ date: 2025-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby