gitlab-secret_detection 0.20.5 → 0.20.6
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc65583db26adf76bc2c82147e9a0968d3a492650c674021b1b880999ccac7ae
|
4
|
+
data.tar.gz: 1def241bf981547d439b1c2779b15a23906162c48fb25f341518145154c25a4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: daaa4b44fab4a9bdc6afa35e69d9cc0bdb64821d43ad373ea5660c3875191e060b937f89f09b06f7216e836c86d3174da769037929c5407ab1b217e9f1bc4781
|
7
|
+
data.tar.gz: f454b936f67cb98412b77cb83ddcab017e3a5885b87ea2eef6c6248c06854f24f02273bf3c58466c33781495e80b0cb327bb9f2e9fe3f5ae5bc9ac5b0c564a31
|
@@ -17,6 +17,9 @@ module Gitlab
|
|
17
17
|
# Time to wait for the response from the service
|
18
18
|
REQUEST_TIMEOUT_SECONDS = 10 # 10 seconds
|
19
19
|
|
20
|
+
# Total payload size limit allowed per scan request
|
21
|
+
MAX_PAYLOAD_SIZE_PER_REQUEST = 4_000_000 # 3.8MiB (0.2MiB buffer for other request props)
|
22
|
+
|
20
23
|
def initialize(host, secure: false, compression: true, logger: nil)
|
21
24
|
@host = host
|
22
25
|
@secure = secure
|
@@ -30,6 +33,20 @@ module Gitlab
|
|
30
33
|
# +Gitlab::SecretDetection::Core::Response+ type by assiging a appropriate +status+ value to it.
|
31
34
|
def run_scan(request:, auth_token:, extra_headers: {})
|
32
35
|
with_rescued_errors do
|
36
|
+
payload_size = calculate_payload_size(request)
|
37
|
+
if payload_size >= MAX_PAYLOAD_SIZE_PER_REQUEST
|
38
|
+
@logger.info(
|
39
|
+
message: "Skipping to send Scan Request to Secret Detection server due to request size overlimit",
|
40
|
+
payload_size:
|
41
|
+
)
|
42
|
+
|
43
|
+
next Gitlab::SecretDetection::GRPC::ScanResponse.new(
|
44
|
+
results: [],
|
45
|
+
status: SecretDetection::Core::Status::INPUT_ERROR,
|
46
|
+
applied_exclusions: []
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
33
50
|
grpc_response = stub.scan(
|
34
51
|
request,
|
35
52
|
metadata: build_metadata(auth_token, extra_headers),
|
@@ -52,6 +69,19 @@ module Gitlab
|
|
52
69
|
request_stream = Gitlab::SecretDetection::GRPC::StreamRequestEnumerator.new(requests)
|
53
70
|
results = []
|
54
71
|
with_rescued_errors do
|
72
|
+
has_oversized_request = requests.any? do |request|
|
73
|
+
payload_size = calculate_payload_size(request)
|
74
|
+
payload_size >= MAX_PAYLOAD_SIZE_PER_REQUEST
|
75
|
+
end
|
76
|
+
|
77
|
+
if has_oversized_request
|
78
|
+
@logger.info("Skipping to send Scan Request to Secret Detection server due to request size overlimit")
|
79
|
+
response = Gitlab::SecretDetection::GRPC::ScanResponse.new(
|
80
|
+
status: SecretDetection::Core::Status::INPUT_ERROR
|
81
|
+
)
|
82
|
+
next (block_given? ? response : [response])
|
83
|
+
end
|
84
|
+
|
55
85
|
stub.scan_stream(
|
56
86
|
request_stream.each_item,
|
57
87
|
metadata: build_metadata(auth_token, extra_headers),
|
@@ -123,13 +153,23 @@ module Gitlab
|
|
123
153
|
results: nil,
|
124
154
|
metadata: { message: e.details, **e.metadata }
|
125
155
|
)
|
156
|
+
rescue ::GRPC::ResourceExhausted => e
|
157
|
+
@logger.error(message: "Secret Detection Server resource exhausted: #{e.details}", **e.metadata)
|
158
|
+
SecretDetection::Core::Response.new(
|
159
|
+
status: SecretDetection::Core::Status::SCAN_ERROR,
|
160
|
+
metadata: { message: e.details, **e.metadata }
|
161
|
+
)
|
126
162
|
rescue ::GRPC::Unknown, ::GRPC::BadStatus => e
|
127
163
|
SecretDetection::Core::Response.new(
|
128
164
|
status: SecretDetection::Core::Status::SCAN_ERROR,
|
129
165
|
results: nil,
|
130
|
-
metadata: { message: e.details }
|
166
|
+
metadata: { message: e.details, **e.metadata }
|
131
167
|
)
|
132
168
|
end
|
169
|
+
|
170
|
+
def calculate_payload_size(request)
|
171
|
+
request&.payloads&.reduce(0) { |total, p| total + p.data.size + p.id.size }
|
172
|
+
end
|
133
173
|
end
|
134
174
|
end
|
135
175
|
end
|
@@ -8,7 +8,7 @@ module Gitlab
|
|
8
8
|
# https://gitlab.com/gitlab-org/gitlab/-/issues/514015
|
9
9
|
#
|
10
10
|
# Ensure to maintain the same version in CHANGELOG file.
|
11
|
-
VERSION = "0.20.
|
11
|
+
VERSION = "0.20.6"
|
12
12
|
|
13
13
|
# SD_ENV env var is used to determine which environment the
|
14
14
|
# server is running. This var is defined in `.runway/env-<env>.yml` files.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-secret_detection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.20.
|
4
|
+
version: 0.20.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- group::secret detection
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2025-03-
|
13
|
+
date: 2025-03-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: grpc
|