aikido-zen 1.0.2.beta.9-aarch64-linux → 1.0.3-aarch64-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 +4 -4
- data/README.md +1 -0
- data/docs/config.md +9 -1
- data/docs/troubleshooting.md +62 -0
- data/lib/aikido/zen/agent.rb +2 -2
- data/lib/aikido/zen/attack.rb +8 -6
- data/lib/aikido/zen/attack_wave/helpers.rb +457 -0
- data/lib/aikido/zen/attack_wave.rb +88 -0
- data/lib/aikido/zen/cache.rb +91 -0
- data/lib/aikido/zen/capped_collections.rb +22 -4
- data/lib/aikido/zen/collector/event.rb +29 -0
- data/lib/aikido/zen/collector/hosts.rb +16 -1
- data/lib/aikido/zen/collector/stats.rb +17 -3
- data/lib/aikido/zen/collector/users.rb +2 -2
- data/lib/aikido/zen/collector.rb +14 -0
- data/lib/aikido/zen/config.rb +35 -6
- data/lib/aikido/zen/context/rack_request.rb +3 -0
- data/lib/aikido/zen/context/rails_request.rb +3 -0
- data/lib/aikido/zen/context.rb +42 -11
- data/lib/aikido/zen/event.rb +47 -2
- data/lib/aikido/zen/helpers.rb +24 -0
- data/lib/aikido/zen/middleware/{check_allowed_addresses.rb → allowed_address_checker.rb} +1 -1
- data/lib/aikido/zen/middleware/attack_protector.rb +29 -0
- data/lib/aikido/zen/middleware/attack_wave_protector.rb +46 -0
- data/lib/aikido/zen/middleware/{set_context.rb → context_setter.rb} +1 -1
- data/lib/aikido/zen/middleware/rack_throttler.rb +3 -1
- data/lib/aikido/zen/middleware/request_tracker.rb +8 -3
- data/lib/aikido/zen/outbound_connection.rb +11 -1
- data/lib/aikido/zen/rails_engine.rb +4 -2
- data/lib/aikido/zen/request/rails_router.rb +17 -2
- data/lib/aikido/zen/request.rb +2 -36
- data/lib/aikido/zen/route.rb +50 -0
- data/lib/aikido/zen/runtime_settings/endpoints.rb +37 -8
- data/lib/aikido/zen/runtime_settings.rb +5 -4
- data/lib/aikido/zen/scanners/path_traversal_scanner.rb +3 -2
- data/lib/aikido/zen/scanners/shell_injection_scanner.rb +3 -2
- data/lib/aikido/zen/scanners/sql_injection_scanner.rb +3 -2
- data/lib/aikido/zen/scanners/ssrf_scanner.rb +2 -1
- data/lib/aikido/zen/scanners/stored_ssrf_scanner.rb +5 -1
- data/lib/aikido/zen/sinks/action_controller.rb +3 -1
- data/lib/aikido/zen/sinks/file.rb +34 -32
- data/lib/aikido/zen/sinks/pg.rb +14 -5
- data/lib/aikido/zen/sinks/socket.rb +7 -0
- data/lib/aikido/zen/sinks.rb +1 -0
- data/lib/aikido/zen/system_info.rb +1 -5
- data/lib/aikido/zen/version.rb +1 -1
- data/lib/aikido/zen.rb +56 -6
- data/tasklib/bench.rake +1 -1
- metadata +11 -4
|
@@ -8,12 +8,8 @@ require_relative "package"
|
|
|
8
8
|
module Aikido::Zen
|
|
9
9
|
# Provides information about the currently running Agent.
|
|
10
10
|
class SystemInfo
|
|
11
|
-
def initialize(config = Aikido::Zen.config)
|
|
12
|
-
@config = config
|
|
13
|
-
end
|
|
14
|
-
|
|
15
11
|
def attacks_block_requests?
|
|
16
|
-
|
|
12
|
+
!!Aikido::Zen.blocking_mode?
|
|
17
13
|
end
|
|
18
14
|
|
|
19
15
|
def attacks_are_only_reported?
|
data/lib/aikido/zen/version.rb
CHANGED
data/lib/aikido/zen.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative "zen/helpers"
|
|
3
4
|
require_relative "zen/version"
|
|
4
5
|
require_relative "zen/errors"
|
|
5
6
|
require_relative "zen/actor"
|
|
@@ -13,13 +14,16 @@ require_relative "zen/context"
|
|
|
13
14
|
require_relative "zen/detached_agent"
|
|
14
15
|
require_relative "zen/middleware/middleware"
|
|
15
16
|
require_relative "zen/middleware/fork_detector"
|
|
16
|
-
require_relative "zen/middleware/
|
|
17
|
-
require_relative "zen/middleware/
|
|
17
|
+
require_relative "zen/middleware/context_setter"
|
|
18
|
+
require_relative "zen/middleware/allowed_address_checker"
|
|
19
|
+
require_relative "zen/middleware/attack_protector"
|
|
20
|
+
require_relative "zen/middleware/attack_wave_protector"
|
|
18
21
|
require_relative "zen/middleware/request_tracker"
|
|
19
22
|
require_relative "zen/outbound_connection"
|
|
20
23
|
require_relative "zen/outbound_connection_monitor"
|
|
21
24
|
require_relative "zen/runtime_settings"
|
|
22
25
|
require_relative "zen/rate_limiter"
|
|
26
|
+
require_relative "zen/attack_wave"
|
|
23
27
|
require_relative "zen/scanners"
|
|
24
28
|
|
|
25
29
|
module Aikido
|
|
@@ -77,6 +81,16 @@ module Aikido
|
|
|
77
81
|
@runtime_settings = settings
|
|
78
82
|
end
|
|
79
83
|
|
|
84
|
+
# @return [Boolean] whether the Aikido agent is currently blocking requests.
|
|
85
|
+
# Blocking mode is configured at startup and can be controlled through the
|
|
86
|
+
# Aikido dashboard at runtime.
|
|
87
|
+
def self.blocking_mode?
|
|
88
|
+
blocking_mode = runtime_settings.blocking_mode
|
|
89
|
+
return blocking_mode unless blocking_mode.nil?
|
|
90
|
+
|
|
91
|
+
config.blocking_mode
|
|
92
|
+
end
|
|
93
|
+
|
|
80
94
|
# Gets information about the current system configuration, which is sent to
|
|
81
95
|
# the server along with any events.
|
|
82
96
|
def self.system_info
|
|
@@ -89,10 +103,6 @@ module Aikido
|
|
|
89
103
|
@collector ||= Collector.new
|
|
90
104
|
end
|
|
91
105
|
|
|
92
|
-
def self.detached_agent
|
|
93
|
-
@detached_agent ||= DetachedAgent::Agent.new
|
|
94
|
-
end
|
|
95
|
-
|
|
96
106
|
# Gets the current context object that holds all information about the
|
|
97
107
|
# current request.
|
|
98
108
|
#
|
|
@@ -118,6 +128,18 @@ module Aikido
|
|
|
118
128
|
collector.track_request
|
|
119
129
|
end
|
|
120
130
|
|
|
131
|
+
# Track statistics about an attack wave the app is handling.
|
|
132
|
+
#
|
|
133
|
+
# @param attack_wave [Aikido::Zen::Events::AttackWave]
|
|
134
|
+
# @return [void]
|
|
135
|
+
def self.track_attack_wave(attack_wave)
|
|
136
|
+
collector.track_attack_wave(being_blocked: false)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# Track statistics about a route that the app has discovered.
|
|
140
|
+
#
|
|
141
|
+
# @param request [Aikido::Zen::Request]
|
|
142
|
+
# @return [void]
|
|
121
143
|
def self.track_discovered_route(request)
|
|
122
144
|
collector.track_route(request)
|
|
123
145
|
end
|
|
@@ -173,6 +195,11 @@ module Aikido
|
|
|
173
195
|
collector.middleware_installed!
|
|
174
196
|
end
|
|
175
197
|
|
|
198
|
+
# @return [Aikido::Zen::AttackWave::Detector] the attack wave detector.
|
|
199
|
+
def self.attack_wave_detector
|
|
200
|
+
@attack_wave_detector ||= AttackWave::Detector.new
|
|
201
|
+
end
|
|
202
|
+
|
|
176
203
|
# @!visibility private
|
|
177
204
|
# Load all sources.
|
|
178
205
|
#
|
|
@@ -210,6 +237,10 @@ module Aikido
|
|
|
210
237
|
@agent ||= Agent.start
|
|
211
238
|
end
|
|
212
239
|
|
|
240
|
+
def self.detached_agent
|
|
241
|
+
@detached_agent ||= DetachedAgent::Agent.new
|
|
242
|
+
end
|
|
243
|
+
|
|
213
244
|
def self.detached_agent_server
|
|
214
245
|
@detached_agent_server ||= DetachedAgent::Server.start
|
|
215
246
|
end
|
|
@@ -250,5 +281,24 @@ module Aikido
|
|
|
250
281
|
@detached_agent&.handle_fork
|
|
251
282
|
end
|
|
252
283
|
end
|
|
284
|
+
|
|
285
|
+
# @!visibility private
|
|
286
|
+
# Returns the stack trace trimmed to where execution last entered Zen.
|
|
287
|
+
#
|
|
288
|
+
# @return [String]
|
|
289
|
+
def self.clean_stack_trace
|
|
290
|
+
stack_trace = caller_locations
|
|
291
|
+
|
|
292
|
+
spec = Gem.loaded_specs["aikido-zen"]
|
|
293
|
+
|
|
294
|
+
# Only trim stack frames from .../lib/aikido/zen/ in the aikido-zen gem,
|
|
295
|
+
# so calls in sample apps are preserved.
|
|
296
|
+
lib_path_start = File.expand_path(File.join(spec.full_gem_path, "lib", "aikido", "zen")) + File::SEPARATOR
|
|
297
|
+
|
|
298
|
+
index = stack_trace.index { |frame| !File.expand_path(frame.path).start_with?(lib_path_start) }
|
|
299
|
+
stack_trace = stack_trace[index..] if index
|
|
300
|
+
|
|
301
|
+
stack_trace.map(&:to_s).join("\n")
|
|
302
|
+
end
|
|
253
303
|
end
|
|
254
304
|
end
|
data/tasklib/bench.rake
CHANGED
|
@@ -87,7 +87,7 @@ Pathname.glob("sample_apps/*").select(&:directory?).each do |dir|
|
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
task :boot_unprotected_app do
|
|
90
|
-
boot_server(dir, port: PORT_UNPROTECTED, env: {"
|
|
90
|
+
boot_server(dir, port: PORT_UNPROTECTED, env: {"AIKIDO_DISABLE" => "true"})
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
93
|
end
|
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.
|
|
4
|
+
version: 1.0.3
|
|
5
5
|
platform: aarch64-linux
|
|
6
6
|
authors:
|
|
7
7
|
- Aikido Security
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-12-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -77,6 +77,7 @@ files:
|
|
|
77
77
|
- docs/config.md
|
|
78
78
|
- docs/proxy.md
|
|
79
79
|
- docs/rails.md
|
|
80
|
+
- docs/troubleshooting.md
|
|
80
81
|
- lib/aikido-zen.rb
|
|
81
82
|
- lib/aikido/zen.rb
|
|
82
83
|
- lib/aikido/zen/actor.rb
|
|
@@ -84,7 +85,10 @@ files:
|
|
|
84
85
|
- lib/aikido/zen/agent/heartbeats_manager.rb
|
|
85
86
|
- lib/aikido/zen/api_client.rb
|
|
86
87
|
- lib/aikido/zen/attack.rb
|
|
88
|
+
- lib/aikido/zen/attack_wave.rb
|
|
89
|
+
- lib/aikido/zen/attack_wave/helpers.rb
|
|
87
90
|
- lib/aikido/zen/background_worker.rb
|
|
91
|
+
- lib/aikido/zen/cache.rb
|
|
88
92
|
- lib/aikido/zen/capped_collections.rb
|
|
89
93
|
- lib/aikido/zen/collector.rb
|
|
90
94
|
- lib/aikido/zen/collector/event.rb
|
|
@@ -103,14 +107,17 @@ files:
|
|
|
103
107
|
- lib/aikido/zen/detached_agent/server.rb
|
|
104
108
|
- lib/aikido/zen/errors.rb
|
|
105
109
|
- lib/aikido/zen/event.rb
|
|
110
|
+
- lib/aikido/zen/helpers.rb
|
|
106
111
|
- lib/aikido/zen/internals.rb
|
|
107
112
|
- lib/aikido/zen/libzen-v0.1.48-aarch64-linux.so
|
|
108
|
-
- lib/aikido/zen/middleware/
|
|
113
|
+
- lib/aikido/zen/middleware/allowed_address_checker.rb
|
|
114
|
+
- lib/aikido/zen/middleware/attack_protector.rb
|
|
115
|
+
- lib/aikido/zen/middleware/attack_wave_protector.rb
|
|
116
|
+
- lib/aikido/zen/middleware/context_setter.rb
|
|
109
117
|
- lib/aikido/zen/middleware/fork_detector.rb
|
|
110
118
|
- lib/aikido/zen/middleware/middleware.rb
|
|
111
119
|
- lib/aikido/zen/middleware/rack_throttler.rb
|
|
112
120
|
- lib/aikido/zen/middleware/request_tracker.rb
|
|
113
|
-
- lib/aikido/zen/middleware/set_context.rb
|
|
114
121
|
- lib/aikido/zen/outbound_connection.rb
|
|
115
122
|
- lib/aikido/zen/outbound_connection_monitor.rb
|
|
116
123
|
- lib/aikido/zen/package.rb
|