datadog 2.16.0 → 2.18.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/CHANGELOG.md +72 -1
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +12 -46
- data/ext/datadog_profiling_native_extension/collectors_stack.c +227 -49
- data/ext/datadog_profiling_native_extension/collectors_stack.h +19 -3
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +63 -12
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -0
- data/ext/datadog_profiling_native_extension/encoded_profile.c +22 -12
- data/ext/datadog_profiling_native_extension/encoded_profile.h +1 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +7 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.c +239 -363
- data/ext/datadog_profiling_native_extension/heap_recorder.h +4 -6
- data/ext/datadog_profiling_native_extension/http_transport.c +45 -72
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +22 -0
- data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +8 -5
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +1 -0
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +6 -3
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +1 -13
- data/ext/datadog_profiling_native_extension/ruby_helpers.h +2 -10
- data/ext/datadog_profiling_native_extension/stack_recorder.c +156 -60
- data/ext/libdatadog_api/crashtracker.c +10 -3
- data/ext/libdatadog_api/extconf.rb +2 -2
- data/ext/libdatadog_api/library_config.c +54 -12
- data/ext/libdatadog_api/library_config.h +6 -0
- data/ext/libdatadog_api/macos_development.md +3 -3
- data/ext/libdatadog_api/process_discovery.c +2 -7
- data/ext/libdatadog_extconf_helpers.rb +2 -2
- data/lib/datadog/appsec/api_security/lru_cache.rb +56 -0
- data/lib/datadog/appsec/api_security/route_extractor.rb +65 -0
- data/lib/datadog/appsec/api_security/sampler.rb +59 -0
- data/lib/datadog/appsec/api_security.rb +23 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +257 -85
- data/lib/datadog/appsec/assets/waf_rules/strict.json +10 -78
- data/lib/datadog/appsec/component.rb +30 -54
- data/lib/datadog/appsec/configuration/settings.rb +60 -2
- data/lib/datadog/appsec/context.rb +6 -6
- data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +27 -16
- data/lib/datadog/appsec/processor/rule_loader.rb +5 -6
- data/lib/datadog/appsec/remote.rb +15 -55
- data/lib/datadog/appsec/security_engine/engine.rb +194 -0
- data/lib/datadog/appsec/security_engine/runner.rb +10 -11
- data/lib/datadog/appsec.rb +4 -7
- data/lib/datadog/core/buffer/random.rb +18 -2
- data/lib/datadog/core/configuration/agent_settings.rb +52 -0
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +4 -46
- data/lib/datadog/core/configuration/components.rb +31 -24
- data/lib/datadog/core/configuration/components_state.rb +23 -0
- data/lib/datadog/core/configuration/option.rb +27 -27
- data/lib/datadog/core/configuration/option_definition.rb +4 -4
- data/lib/datadog/core/configuration/options.rb +1 -1
- data/lib/datadog/core/configuration/settings.rb +32 -20
- data/lib/datadog/core/configuration/stable_config.rb +1 -2
- data/lib/datadog/core/configuration.rb +16 -16
- data/lib/datadog/core/crashtracking/component.rb +2 -1
- data/lib/datadog/core/crashtracking/tag_builder.rb +4 -22
- data/lib/datadog/core/encoding.rb +1 -1
- data/lib/datadog/core/environment/cgroup.rb +10 -12
- data/lib/datadog/core/environment/container.rb +38 -40
- data/lib/datadog/core/environment/ext.rb +6 -6
- data/lib/datadog/core/environment/identity.rb +3 -3
- data/lib/datadog/core/environment/platform.rb +3 -3
- data/lib/datadog/core/error.rb +11 -9
- data/lib/datadog/core/logger.rb +2 -2
- data/lib/datadog/core/metrics/client.rb +12 -14
- data/lib/datadog/core/metrics/logging.rb +5 -5
- data/lib/datadog/core/process_discovery/tracer_memfd.rb +15 -0
- data/lib/datadog/core/process_discovery.rb +5 -1
- data/lib/datadog/core/rate_limiter.rb +4 -2
- data/lib/datadog/core/remote/client.rb +32 -31
- data/lib/datadog/core/remote/component.rb +3 -3
- data/lib/datadog/core/remote/configuration/digest.rb +7 -7
- data/lib/datadog/core/remote/configuration/path.rb +1 -1
- data/lib/datadog/core/remote/configuration/repository.rb +12 -0
- data/lib/datadog/core/remote/transport/http/client.rb +1 -1
- data/lib/datadog/core/remote/transport/http/config.rb +21 -5
- data/lib/datadog/core/remote/transport/http/negotiation.rb +1 -1
- data/lib/datadog/core/runtime/metrics.rb +3 -3
- data/lib/datadog/core/tag_builder.rb +56 -0
- data/lib/datadog/core/telemetry/component.rb +39 -24
- data/lib/datadog/core/telemetry/emitter.rb +7 -1
- data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +66 -0
- data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
- data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
- data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
- data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
- data/lib/datadog/core/telemetry/event/app_started.rb +269 -0
- data/lib/datadog/core/telemetry/event/base.rb +40 -0
- data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
- data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
- data/lib/datadog/core/telemetry/event/log.rb +76 -0
- data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
- data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
- data/lib/datadog/core/telemetry/event.rb +17 -475
- data/lib/datadog/core/telemetry/logger.rb +5 -4
- data/lib/datadog/core/telemetry/logging.rb +11 -5
- data/lib/datadog/core/telemetry/metric.rb +3 -3
- data/lib/datadog/core/telemetry/transport/http/telemetry.rb +2 -2
- data/lib/datadog/core/telemetry/transport/telemetry.rb +0 -1
- data/lib/datadog/core/telemetry/worker.rb +48 -27
- data/lib/datadog/core/transport/http/adapters/net.rb +17 -2
- data/lib/datadog/core/transport/http/adapters/test.rb +2 -1
- data/lib/datadog/core/transport/http/builder.rb +14 -14
- data/lib/datadog/core/transport/http/env.rb +8 -0
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +6 -6
- data/lib/datadog/core/utils/duration.rb +32 -32
- data/lib/datadog/core/utils/forking.rb +2 -2
- data/lib/datadog/core/utils/network.rb +6 -6
- data/lib/datadog/core/utils/only_once_successful.rb +16 -5
- data/lib/datadog/core/utils/time.rb +10 -2
- data/lib/datadog/core/utils/truncation.rb +21 -0
- data/lib/datadog/core/utils.rb +7 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -1
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +8 -8
- data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +7 -7
- data/lib/datadog/core/worker.rb +1 -1
- data/lib/datadog/core/workers/async.rb +9 -10
- data/lib/datadog/di/instrumenter.rb +52 -2
- data/lib/datadog/di/probe_notification_builder.rb +31 -41
- data/lib/datadog/di/probe_notifier_worker.rb +9 -1
- data/lib/datadog/di/serializer.rb +6 -2
- data/lib/datadog/di/transport/http/input.rb +10 -0
- data/lib/datadog/di/transport/input.rb +10 -2
- data/lib/datadog/error_tracking/component.rb +2 -2
- data/lib/datadog/profiling/collectors/code_provenance.rb +18 -9
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +4 -0
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
- data/lib/datadog/profiling/collectors/thread_context.rb +16 -1
- data/lib/datadog/profiling/component.rb +7 -9
- data/lib/datadog/profiling/ext.rb +0 -13
- data/lib/datadog/profiling/flush.rb +1 -1
- data/lib/datadog/profiling/http_transport.rb +3 -8
- data/lib/datadog/profiling/profiler.rb +2 -0
- data/lib/datadog/profiling/scheduler.rb +10 -2
- data/lib/datadog/profiling/stack_recorder.rb +5 -5
- data/lib/datadog/profiling/tag_builder.rb +5 -41
- data/lib/datadog/profiling/tasks/setup.rb +2 -0
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +15 -0
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +19 -12
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +2 -0
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +4 -1
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +33 -0
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -0
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +2 -4
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +10 -0
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +5 -1
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +1 -5
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +1 -5
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +1 -5
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +4 -2
- data/lib/datadog/tracing/contrib/patcher.rb +5 -2
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -2
- data/lib/datadog/tracing/contrib/support.rb +28 -0
- data/lib/datadog/tracing/metadata/errors.rb +4 -4
- data/lib/datadog/tracing/sync_writer.rb +1 -1
- data/lib/datadog/tracing/trace_operation.rb +12 -4
- data/lib/datadog/tracing/tracer.rb +6 -2
- data/lib/datadog/version.rb +1 -1
- metadata +31 -12
- data/lib/datadog/appsec/assets/waf_rules/processors.json +0 -321
- data/lib/datadog/appsec/assets/waf_rules/scanners.json +0 -1023
- data/lib/datadog/appsec/processor/rule_merger.rb +0 -171
- data/lib/datadog/appsec/processor.rb +0 -107
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Datadog
|
4
|
+
module AppSec
|
5
|
+
module APISecurity
|
6
|
+
# This is a helper module to extract the route pattern from the Rack::Request.
|
7
|
+
module RouteExtractor
|
8
|
+
SINATRA_ROUTE_KEY = 'sinatra.route'
|
9
|
+
SINATRA_ROUTE_SEPARATOR = ' '
|
10
|
+
GRAPE_ROUTE_KEY = 'grape.routing_args'
|
11
|
+
RAILS_ROUTE_KEY = 'action_dispatch.route_uri_pattern'
|
12
|
+
RAILS_ROUTES_KEY = 'action_dispatch.routes'
|
13
|
+
RAILS_FORMAT_SUFFIX = '(.:format)'
|
14
|
+
|
15
|
+
# HACK: We rely on the fact that each contrib will modify `request.env`
|
16
|
+
# and store information sufficient to compute the canonical
|
17
|
+
# route (ex: `/users/:id`).
|
18
|
+
#
|
19
|
+
# When contribs like Sinatra or Grape are used, they could be mounted
|
20
|
+
# into the Rails app, hence you can see the use of the `script_name`
|
21
|
+
# that will contain the path prefix of the mounted app.
|
22
|
+
#
|
23
|
+
# Rack
|
24
|
+
# does not support named arguments, so we have to use `path`
|
25
|
+
# Sinatra
|
26
|
+
# uses `sinatra.route` with a string like "GET /users/:id"
|
27
|
+
# Grape
|
28
|
+
# uses `grape.routing_args` with a hash with a `:route_info` key
|
29
|
+
# that contains a `Grape::Router::Route` object that contains
|
30
|
+
# `Grape::Router::Pattern` object with an `origin` method
|
31
|
+
# Rails < 7.1 (slow path)
|
32
|
+
# uses `action_dispatch.routes` to store `ActionDispatch::Routing::RouteSet`
|
33
|
+
# which can recognize requests
|
34
|
+
# Rails > 7.1 (fast path)
|
35
|
+
# uses `action_dispatch.route_uri_pattern` with a string like
|
36
|
+
# "/users/:id(.:format)"
|
37
|
+
#
|
38
|
+
# WARNING: This method works only *after* the request has been routed.
|
39
|
+
def self.route_pattern(request)
|
40
|
+
if request.env.key?(GRAPE_ROUTE_KEY)
|
41
|
+
pattern = request.env[GRAPE_ROUTE_KEY][:route_info]&.pattern&.origin
|
42
|
+
"#{request.script_name}#{pattern}"
|
43
|
+
elsif request.env.key?(SINATRA_ROUTE_KEY)
|
44
|
+
pattern = request.env[SINATRA_ROUTE_KEY].split(SINATRA_ROUTE_SEPARATOR, 2)[1]
|
45
|
+
"#{request.script_name}#{pattern}"
|
46
|
+
elsif request.env.key?(RAILS_ROUTE_KEY)
|
47
|
+
request.env[RAILS_ROUTE_KEY].delete_suffix(RAILS_FORMAT_SUFFIX)
|
48
|
+
elsif request.env.key?(RAILS_ROUTES_KEY)
|
49
|
+
pattern = request.env[RAILS_ROUTES_KEY].router
|
50
|
+
.recognize(request) { |route, _| break route.path.spec.to_s }
|
51
|
+
|
52
|
+
# NOTE: If rails is unable to recognize request it returns empty Array
|
53
|
+
pattern = nil if pattern&.empty?
|
54
|
+
|
55
|
+
# NOTE: If rails can't recognize the request, we are going to fallback
|
56
|
+
# to generic request path
|
57
|
+
(pattern || request.path).delete_suffix(RAILS_FORMAT_SUFFIX)
|
58
|
+
else
|
59
|
+
request.path
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'zlib'
|
4
|
+
require_relative 'lru_cache'
|
5
|
+
require_relative 'route_extractor'
|
6
|
+
require_relative '../../core/utils/time'
|
7
|
+
|
8
|
+
module Datadog
|
9
|
+
module AppSec
|
10
|
+
module APISecurity
|
11
|
+
# A thread-local sampler for API security based on defined delay between
|
12
|
+
# samples with caching capability.
|
13
|
+
class Sampler
|
14
|
+
THREAD_KEY = :datadog_appsec_api_security_sampler
|
15
|
+
MAX_CACHE_SIZE = 4096
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def thread_local
|
19
|
+
sampler = Thread.current.thread_variable_get(THREAD_KEY)
|
20
|
+
return sampler unless sampler.nil?
|
21
|
+
|
22
|
+
Thread.current.thread_variable_set(THREAD_KEY, new(sample_delay))
|
23
|
+
end
|
24
|
+
|
25
|
+
# @api private
|
26
|
+
def reset!
|
27
|
+
Thread.current.thread_variable_set(THREAD_KEY, nil)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def sample_delay
|
33
|
+
Datadog.configuration.appsec.api_security.sample_delay
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def initialize(sample_delay)
|
38
|
+
raise ArgumentError, 'sample_delay must be an Integer' unless sample_delay.is_a?(Integer)
|
39
|
+
|
40
|
+
@cache = LRUCache.new(MAX_CACHE_SIZE)
|
41
|
+
@sample_delay_seconds = sample_delay
|
42
|
+
end
|
43
|
+
|
44
|
+
def sample?(request, response)
|
45
|
+
return true if @sample_delay_seconds.zero?
|
46
|
+
|
47
|
+
key = Zlib.crc32("#{request.request_method}#{RouteExtractor.route_pattern(request)}#{response.status}")
|
48
|
+
current_timestamp = Core::Utils::Time.now.to_i
|
49
|
+
cached_timestamp = @cache[key] || 0
|
50
|
+
|
51
|
+
return false if current_timestamp - cached_timestamp <= @sample_delay_seconds
|
52
|
+
|
53
|
+
@cache.store(key, current_timestamp)
|
54
|
+
true
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'api_security/sampler'
|
4
|
+
|
5
|
+
module Datadog
|
6
|
+
module AppSec
|
7
|
+
# A namespace for API Security features.
|
8
|
+
module APISecurity
|
9
|
+
def self.enabled?
|
10
|
+
Datadog.configuration.appsec.api_security.enabled?
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.sample?(request, response)
|
14
|
+
Sampler.thread_local.sample?(request, response)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.sample_trace?(trace)
|
18
|
+
# NOTE: Reads as "if trace is priority sampled or if in standalone mode"
|
19
|
+
trace&.priority_sampled? || !Datadog.configuration.apm.tracing.enabled
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"version": "2.2",
|
3
3
|
"metadata": {
|
4
|
-
"rules_version": "1.
|
4
|
+
"rules_version": "1.14.2"
|
5
5
|
},
|
6
6
|
"rules": [
|
7
7
|
{
|
@@ -4864,6 +4864,36 @@
|
|
4864
4864
|
],
|
4865
4865
|
"transformers": []
|
4866
4866
|
},
|
4867
|
+
{
|
4868
|
+
"id": "ua0-600-68x",
|
4869
|
+
"name": "xorbot",
|
4870
|
+
"tags": {
|
4871
|
+
"type": "attack_tool",
|
4872
|
+
"category": "attack_attempt",
|
4873
|
+
"cwe": "200",
|
4874
|
+
"capec": "1000/118/169",
|
4875
|
+
"tool_name": "xorbot",
|
4876
|
+
"confidence": "0",
|
4877
|
+
"module": "waf"
|
4878
|
+
},
|
4879
|
+
"conditions": [
|
4880
|
+
{
|
4881
|
+
"parameters": {
|
4882
|
+
"inputs": [
|
4883
|
+
{
|
4884
|
+
"address": "server.request.headers.no_cookies",
|
4885
|
+
"key_path": [
|
4886
|
+
"user-agent"
|
4887
|
+
]
|
4888
|
+
}
|
4889
|
+
],
|
4890
|
+
"regex": "\\bmasjesu\\b"
|
4891
|
+
},
|
4892
|
+
"operator": "match_regex"
|
4893
|
+
}
|
4894
|
+
],
|
4895
|
+
"transformers": []
|
4896
|
+
},
|
4867
4897
|
{
|
4868
4898
|
"id": "dog-913-001",
|
4869
4899
|
"name": "BurpCollaborator OOB domain",
|
@@ -5422,6 +5452,82 @@
|
|
5422
5452
|
],
|
5423
5453
|
"transformers": []
|
5424
5454
|
},
|
5455
|
+
{
|
5456
|
+
"id": "dog-913-013",
|
5457
|
+
"name": "Public PoC for CVE-2025-24813",
|
5458
|
+
"tags": {
|
5459
|
+
"type": "attack_tool",
|
5460
|
+
"category": "attack_attempt",
|
5461
|
+
"cwe": "200",
|
5462
|
+
"capec": "1000/118/169",
|
5463
|
+
"confidence": "1",
|
5464
|
+
"module": "waf"
|
5465
|
+
},
|
5466
|
+
"conditions": [
|
5467
|
+
{
|
5468
|
+
"parameters": {
|
5469
|
+
"inputs": [
|
5470
|
+
{
|
5471
|
+
"address": "server.request.uri.raw"
|
5472
|
+
}
|
5473
|
+
],
|
5474
|
+
"regex": "/iSee857/session",
|
5475
|
+
"options": {
|
5476
|
+
"case_sensitive": false,
|
5477
|
+
"min_length": 16
|
5478
|
+
}
|
5479
|
+
},
|
5480
|
+
"operator": "match_regex"
|
5481
|
+
}
|
5482
|
+
],
|
5483
|
+
"transformers": []
|
5484
|
+
},
|
5485
|
+
{
|
5486
|
+
"id": "dog-913-014",
|
5487
|
+
"name": "Exploit attempt for Next.js Middleware Exploit (CVE-2025-29927)",
|
5488
|
+
"tags": {
|
5489
|
+
"type": "security_scanner",
|
5490
|
+
"category": "attack_attempt",
|
5491
|
+
"cwe": "200",
|
5492
|
+
"capec": "1000/118/169",
|
5493
|
+
"confidence": "0",
|
5494
|
+
"module": "waf"
|
5495
|
+
},
|
5496
|
+
"conditions": [
|
5497
|
+
{
|
5498
|
+
"parameters": {
|
5499
|
+
"inputs": [
|
5500
|
+
{
|
5501
|
+
"address": "server.request.headers.no_cookies",
|
5502
|
+
"key_path": [
|
5503
|
+
"x-middleware-subrequest"
|
5504
|
+
]
|
5505
|
+
}
|
5506
|
+
],
|
5507
|
+
"regex": ".*",
|
5508
|
+
"options": {
|
5509
|
+
"min_length": 1
|
5510
|
+
}
|
5511
|
+
},
|
5512
|
+
"operator": "match_regex"
|
5513
|
+
},
|
5514
|
+
{
|
5515
|
+
"parameters": {
|
5516
|
+
"inputs": [
|
5517
|
+
{
|
5518
|
+
"address": "server.request.headers.no_cookies",
|
5519
|
+
"key_path": [
|
5520
|
+
"x-middleware-subrequest"
|
5521
|
+
]
|
5522
|
+
}
|
5523
|
+
],
|
5524
|
+
"regex": "[0-9a-fA-F]{40}|\\[\\w+\\]"
|
5525
|
+
},
|
5526
|
+
"operator": "!match_regex"
|
5527
|
+
}
|
5528
|
+
],
|
5529
|
+
"transformers": []
|
5530
|
+
},
|
5425
5531
|
{
|
5426
5532
|
"id": "dog-920-001",
|
5427
5533
|
"name": "JWT authentication bypass",
|
@@ -6314,7 +6420,7 @@
|
|
6314
6420
|
"address": "server.request.uri.raw"
|
6315
6421
|
}
|
6316
6422
|
],
|
6317
|
-
"regex": "(
|
6423
|
+
"regex": "(?:^|/)(?:swagger|api[-/]?docs?|openapi)\\b",
|
6318
6424
|
"options": {
|
6319
6425
|
"case_sensitive": false
|
6320
6426
|
}
|
@@ -6331,7 +6437,7 @@
|
|
6331
6437
|
"category": "vulnerability_trigger",
|
6332
6438
|
"cwe": "22",
|
6333
6439
|
"capec": "1000/255/153/126",
|
6334
|
-
"confidence": "
|
6440
|
+
"confidence": "1",
|
6335
6441
|
"module": "rasp"
|
6336
6442
|
},
|
6337
6443
|
"conditions": [
|
@@ -6379,7 +6485,7 @@
|
|
6379
6485
|
"category": "vulnerability_trigger",
|
6380
6486
|
"cwe": "77",
|
6381
6487
|
"capec": "1000/152/248/88",
|
6382
|
-
"confidence": "
|
6488
|
+
"confidence": "1",
|
6383
6489
|
"module": "rasp"
|
6384
6490
|
},
|
6385
6491
|
"conditions": [
|
@@ -6427,7 +6533,7 @@
|
|
6427
6533
|
"category": "vulnerability_trigger",
|
6428
6534
|
"cwe": "77",
|
6429
6535
|
"capec": "1000/152/248/88",
|
6430
|
-
"confidence": "
|
6536
|
+
"confidence": "1",
|
6431
6537
|
"module": "rasp"
|
6432
6538
|
},
|
6433
6539
|
"conditions": [
|
@@ -6479,6 +6585,20 @@
|
|
6479
6585
|
"module": "rasp"
|
6480
6586
|
},
|
6481
6587
|
"conditions": [
|
6588
|
+
{
|
6589
|
+
"parameters": {
|
6590
|
+
"inputs": [
|
6591
|
+
{
|
6592
|
+
"address": "server.io.net.url"
|
6593
|
+
}
|
6594
|
+
],
|
6595
|
+
"regex": "^(jar:)?https?:\\/\\/\\W*([0-9oq]{1,5}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}|[0-9]{1,10}|(\\[)?[:0-9a-f\\.x]{2,}(\\])?|metadata\\.google\\.internal|(?:[a-z0-9:@\\.\\-]*\\.)?(?:burpcollaborator\\.net|localtest\\.me|mail\\.ebc\\.apple\\.com|bugbounty\\.dod\\.network|.*\\.[nx]ip\\.io|oastify\\.com|oast\\.(?:pro|live|site|online|fun|me)|sslip\\.io|requestbin\\.com|requestbin\\.net|hookbin\\.com|webhook\\.site|canarytokens\\.com|interact\\.sh|ngrok\\.io|bugbounty\\.click|prbly\\.win|qualysperiscope\\.com|vii\\.one|act1on3\\.ru|ifconfig\\.pro|dnslog\\.\\w+))(:[0-9]{1,5})?(\\/[^:@]*)?$",
|
6596
|
+
"options": {
|
6597
|
+
"case_sensitive": false
|
6598
|
+
}
|
6599
|
+
},
|
6600
|
+
"operator": "match_regex"
|
6601
|
+
},
|
6482
6602
|
{
|
6483
6603
|
"parameters": {
|
6484
6604
|
"resource": [
|
@@ -6523,7 +6643,7 @@
|
|
6523
6643
|
"category": "vulnerability_trigger",
|
6524
6644
|
"cwe": "89",
|
6525
6645
|
"capec": "1000/152/248/66",
|
6526
|
-
"confidence": "
|
6646
|
+
"confidence": "1",
|
6527
6647
|
"module": "rasp"
|
6528
6648
|
},
|
6529
6649
|
"conditions": [
|
@@ -6957,7 +7077,7 @@
|
|
6957
7077
|
"address": "graphql.server.resolver"
|
6958
7078
|
}
|
6959
7079
|
],
|
6960
|
-
"regex": "(http|https):\\/\\/(?:.*\\.)?(?:burpcollaborator\\.net|localtest\\.me|mail\\.ebc\\.apple\\.com|bugbounty\\.dod\\.network|.*\\.[nx]ip\\.io|oastify\\.com|oast\\.(?:pro|live|site|online|fun|me)|sslip\\.io|requestbin\\.com|requestbin\\.net|hookbin\\.com|webhook\\.site|canarytokens\\.com|interact\\.sh|ngrok\\.io|bugbounty\\.click|prbly\\.win|qualysperiscope\\.com|vii\\.one|act1on3\\.ru)"
|
7080
|
+
"regex": "(http|https):\\/\\/(?:.*\\.)?(?:burpcollaborator\\.net|localtest\\.me|mail\\.ebc\\.apple\\.com|bugbounty\\.dod\\.network|.*\\.[nx]ip\\.io|oastify\\.com|oast\\.(?:pro|live|site|online|fun|me)|sslip\\.io|requestbin\\.com|requestbin\\.net|hookbin\\.com|webhook\\.site|canarytokens\\.com|interact\\.sh|ngrok\\.io|bugbounty\\.click|prbly\\.win|qualysperiscope\\.com|vii\\.one|act1on3\\.ru|dnslog\\.\\w+)"
|
6961
7081
|
},
|
6962
7082
|
"operator": "match_regex"
|
6963
7083
|
}
|
@@ -7765,7 +7885,7 @@
|
|
7765
7885
|
]
|
7766
7886
|
}
|
7767
7887
|
],
|
7768
|
-
"regex": "nmap (nse|scripting engine)"
|
7888
|
+
"regex": "nmap (nse|scripting engine|icap-client/)"
|
7769
7889
|
},
|
7770
7890
|
"operator": "match_regex"
|
7771
7891
|
}
|
@@ -8537,6 +8657,126 @@
|
|
8537
8657
|
],
|
8538
8658
|
"transformers": []
|
8539
8659
|
},
|
8660
|
+
{
|
8661
|
+
"id": "ua0-600-64x",
|
8662
|
+
"name": "ddg_win",
|
8663
|
+
"tags": {
|
8664
|
+
"type": "attack_tool",
|
8665
|
+
"category": "attack_attempt",
|
8666
|
+
"cwe": "200",
|
8667
|
+
"capec": "1000/118/169",
|
8668
|
+
"tool_name": "ddg_win",
|
8669
|
+
"confidence": "1",
|
8670
|
+
"module": "waf"
|
8671
|
+
},
|
8672
|
+
"conditions": [
|
8673
|
+
{
|
8674
|
+
"parameters": {
|
8675
|
+
"inputs": [
|
8676
|
+
{
|
8677
|
+
"address": "server.request.headers.no_cookies",
|
8678
|
+
"key_path": [
|
8679
|
+
"user-agent"
|
8680
|
+
]
|
8681
|
+
}
|
8682
|
+
],
|
8683
|
+
"regex": "\\bddg_win\\b"
|
8684
|
+
},
|
8685
|
+
"operator": "match_regex"
|
8686
|
+
}
|
8687
|
+
],
|
8688
|
+
"transformers": []
|
8689
|
+
},
|
8690
|
+
{
|
8691
|
+
"id": "ua0-600-65x",
|
8692
|
+
"name": "ISS",
|
8693
|
+
"tags": {
|
8694
|
+
"type": "commercial_scanner",
|
8695
|
+
"category": "attack_attempt",
|
8696
|
+
"cwe": "200",
|
8697
|
+
"capec": "1000/118/169",
|
8698
|
+
"tool_name": "iss",
|
8699
|
+
"confidence": "0",
|
8700
|
+
"module": "waf"
|
8701
|
+
},
|
8702
|
+
"conditions": [
|
8703
|
+
{
|
8704
|
+
"parameters": {
|
8705
|
+
"inputs": [
|
8706
|
+
{
|
8707
|
+
"address": "server.request.headers.no_cookies",
|
8708
|
+
"key_path": [
|
8709
|
+
"user-agent"
|
8710
|
+
]
|
8711
|
+
}
|
8712
|
+
],
|
8713
|
+
"regex": "\\bisscyberriskcrawler/\\d\\.\\d"
|
8714
|
+
},
|
8715
|
+
"operator": "match_regex"
|
8716
|
+
}
|
8717
|
+
],
|
8718
|
+
"transformers": []
|
8719
|
+
},
|
8720
|
+
{
|
8721
|
+
"id": "ua0-600-66x",
|
8722
|
+
"name": "BountyBot",
|
8723
|
+
"tags": {
|
8724
|
+
"type": "attack_tool",
|
8725
|
+
"category": "attack_attempt",
|
8726
|
+
"cwe": "200",
|
8727
|
+
"capec": "1000/118/169",
|
8728
|
+
"tool_name": "bountybot",
|
8729
|
+
"confidence": "1",
|
8730
|
+
"module": "waf"
|
8731
|
+
},
|
8732
|
+
"conditions": [
|
8733
|
+
{
|
8734
|
+
"parameters": {
|
8735
|
+
"inputs": [
|
8736
|
+
{
|
8737
|
+
"address": "server.request.headers.no_cookies",
|
8738
|
+
"key_path": [
|
8739
|
+
"user-agent"
|
8740
|
+
]
|
8741
|
+
}
|
8742
|
+
],
|
8743
|
+
"regex": "\\bbountybot\\b"
|
8744
|
+
},
|
8745
|
+
"operator": "match_regex"
|
8746
|
+
}
|
8747
|
+
],
|
8748
|
+
"transformers": []
|
8749
|
+
},
|
8750
|
+
{
|
8751
|
+
"id": "ua0-600-67x",
|
8752
|
+
"name": "ZumBot",
|
8753
|
+
"tags": {
|
8754
|
+
"type": "attack_tool",
|
8755
|
+
"category": "attack_attempt",
|
8756
|
+
"cwe": "200",
|
8757
|
+
"capec": "1000/118/169",
|
8758
|
+
"tool_name": "zumbot",
|
8759
|
+
"confidence": "1",
|
8760
|
+
"module": "waf"
|
8761
|
+
},
|
8762
|
+
"conditions": [
|
8763
|
+
{
|
8764
|
+
"parameters": {
|
8765
|
+
"inputs": [
|
8766
|
+
{
|
8767
|
+
"address": "server.request.headers.no_cookies",
|
8768
|
+
"key_path": [
|
8769
|
+
"user-agent"
|
8770
|
+
]
|
8771
|
+
}
|
8772
|
+
],
|
8773
|
+
"regex": "\\bzumbot\\b"
|
8774
|
+
},
|
8775
|
+
"operator": "match_regex"
|
8776
|
+
}
|
8777
|
+
],
|
8778
|
+
"transformers": []
|
8779
|
+
},
|
8540
8780
|
{
|
8541
8781
|
"id": "ua0-600-6xx",
|
8542
8782
|
"name": "Stealthy scanner",
|
@@ -8634,24 +8874,7 @@
|
|
8634
8874
|
{
|
8635
8875
|
"id": "http-endpoint-fingerprint",
|
8636
8876
|
"generator": "http_endpoint_fingerprint",
|
8637
|
-
"conditions": [
|
8638
|
-
{
|
8639
|
-
"operator": "exists",
|
8640
|
-
"parameters": {
|
8641
|
-
"inputs": [
|
8642
|
-
{
|
8643
|
-
"address": "waf.context.event"
|
8644
|
-
},
|
8645
|
-
{
|
8646
|
-
"address": "server.business_logic.users.login.failure"
|
8647
|
-
},
|
8648
|
-
{
|
8649
|
-
"address": "server.business_logic.users.login.success"
|
8650
|
-
}
|
8651
|
-
]
|
8652
|
-
}
|
8653
|
-
}
|
8654
|
-
],
|
8877
|
+
"conditions": [],
|
8655
8878
|
"parameters": {
|
8656
8879
|
"mappings": [
|
8657
8880
|
{
|
@@ -8679,7 +8902,7 @@
|
|
8679
8902
|
}
|
8680
8903
|
]
|
8681
8904
|
},
|
8682
|
-
"evaluate":
|
8905
|
+
"evaluate": true,
|
8683
8906
|
"output": true
|
8684
8907
|
},
|
8685
8908
|
{
|
@@ -8835,24 +9058,7 @@
|
|
8835
9058
|
{
|
8836
9059
|
"id": "http-header-fingerprint",
|
8837
9060
|
"generator": "http_header_fingerprint",
|
8838
|
-
"conditions": [
|
8839
|
-
{
|
8840
|
-
"operator": "exists",
|
8841
|
-
"parameters": {
|
8842
|
-
"inputs": [
|
8843
|
-
{
|
8844
|
-
"address": "waf.context.event"
|
8845
|
-
},
|
8846
|
-
{
|
8847
|
-
"address": "server.business_logic.users.login.failure"
|
8848
|
-
},
|
8849
|
-
{
|
8850
|
-
"address": "server.business_logic.users.login.success"
|
8851
|
-
}
|
8852
|
-
]
|
8853
|
-
}
|
8854
|
-
}
|
8855
|
-
],
|
9061
|
+
"conditions": [],
|
8856
9062
|
"parameters": {
|
8857
9063
|
"mappings": [
|
8858
9064
|
{
|
@@ -8865,30 +9071,13 @@
|
|
8865
9071
|
}
|
8866
9072
|
]
|
8867
9073
|
},
|
8868
|
-
"evaluate":
|
9074
|
+
"evaluate": true,
|
8869
9075
|
"output": true
|
8870
9076
|
},
|
8871
9077
|
{
|
8872
9078
|
"id": "http-network-fingerprint",
|
8873
9079
|
"generator": "http_network_fingerprint",
|
8874
|
-
"conditions": [
|
8875
|
-
{
|
8876
|
-
"operator": "exists",
|
8877
|
-
"parameters": {
|
8878
|
-
"inputs": [
|
8879
|
-
{
|
8880
|
-
"address": "waf.context.event"
|
8881
|
-
},
|
8882
|
-
{
|
8883
|
-
"address": "server.business_logic.users.login.failure"
|
8884
|
-
},
|
8885
|
-
{
|
8886
|
-
"address": "server.business_logic.users.login.success"
|
8887
|
-
}
|
8888
|
-
]
|
8889
|
-
}
|
8890
|
-
}
|
8891
|
-
],
|
9080
|
+
"conditions": [],
|
8892
9081
|
"parameters": {
|
8893
9082
|
"mappings": [
|
8894
9083
|
{
|
@@ -8901,30 +9090,13 @@
|
|
8901
9090
|
}
|
8902
9091
|
]
|
8903
9092
|
},
|
8904
|
-
"evaluate":
|
9093
|
+
"evaluate": true,
|
8905
9094
|
"output": true
|
8906
9095
|
},
|
8907
9096
|
{
|
8908
9097
|
"id": "session-fingerprint",
|
8909
9098
|
"generator": "session_fingerprint",
|
8910
|
-
"conditions": [
|
8911
|
-
{
|
8912
|
-
"operator": "exists",
|
8913
|
-
"parameters": {
|
8914
|
-
"inputs": [
|
8915
|
-
{
|
8916
|
-
"address": "waf.context.event"
|
8917
|
-
},
|
8918
|
-
{
|
8919
|
-
"address": "server.business_logic.users.login.failure"
|
8920
|
-
},
|
8921
|
-
{
|
8922
|
-
"address": "server.business_logic.users.login.success"
|
8923
|
-
}
|
8924
|
-
]
|
8925
|
-
}
|
8926
|
-
}
|
8927
|
-
],
|
9099
|
+
"conditions": [],
|
8928
9100
|
"parameters": {
|
8929
9101
|
"mappings": [
|
8930
9102
|
{
|
@@ -8947,7 +9119,7 @@
|
|
8947
9119
|
}
|
8948
9120
|
]
|
8949
9121
|
},
|
8950
|
-
"evaluate":
|
9122
|
+
"evaluate": true,
|
8951
9123
|
"output": true
|
8952
9124
|
}
|
8953
9125
|
],
|
@@ -9974,4 +10146,4 @@
|
|
9974
10146
|
}
|
9975
10147
|
}
|
9976
10148
|
]
|
9977
|
-
}
|
10149
|
+
}
|