@zincapp/znvault-cli 4.24.2 → 4.24.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.
- package/dist/commands/dynamic-secrets/index.d.ts.map +1 -1
- package/dist/commands/dynamic-secrets/index.js +71 -2
- package/dist/commands/dynamic-secrets/index.js.map +1 -1
- package/dist/commands/dynamic-secrets/permit.d.ts +6 -0
- package/dist/commands/dynamic-secrets/permit.d.ts.map +1 -0
- package/dist/commands/dynamic-secrets/permit.js +139 -0
- package/dist/commands/dynamic-secrets/permit.js.map +1 -0
- package/dist/commands/dynamic-secrets/recovery-fence.d.ts +5 -0
- package/dist/commands/dynamic-secrets/recovery-fence.d.ts.map +1 -0
- package/dist/commands/dynamic-secrets/recovery-fence.js +84 -0
- package/dist/commands/dynamic-secrets/recovery-fence.js.map +1 -0
- package/dist/commands/dynamic-secrets/recovery-parse.d.ts +4 -0
- package/dist/commands/dynamic-secrets/recovery-parse.d.ts.map +1 -0
- package/dist/commands/dynamic-secrets/recovery-parse.js +22 -0
- package/dist/commands/dynamic-secrets/recovery-parse.js.map +1 -0
- package/dist/commands/dynamic-secrets/recovery-types.d.ts +127 -0
- package/dist/commands/dynamic-secrets/recovery-types.d.ts.map +1 -0
- package/dist/commands/dynamic-secrets/recovery-types.js +3 -0
- package/dist/commands/dynamic-secrets/recovery-types.js.map +1 -0
- package/dist/commands/dynamic-secrets/role.d.ts +2 -5
- package/dist/commands/dynamic-secrets/role.d.ts.map +1 -1
- package/dist/commands/dynamic-secrets/role.js +10 -2
- package/dist/commands/dynamic-secrets/role.js.map +1 -1
- package/dist/commands/dynamic-secrets/types.d.ts +10 -0
- package/dist/commands/dynamic-secrets/types.d.ts.map +1 -1
- package/dist/commands/mysql/index.d.ts +2 -0
- package/dist/commands/mysql/index.d.ts.map +1 -1
- package/dist/commands/mysql/index.js +70 -2
- package/dist/commands/mysql/index.js.map +1 -1
- package/dist/commands/mysql/mycnf.d.ts +2 -2
- package/dist/commands/mysql/mycnf.d.ts.map +1 -1
- package/dist/commands/mysql/mycnf.js +1 -1
- package/dist/commands/mysql/mycnf.js.map +1 -1
- package/dist/commands/mysql/permit-broker.d.ts +35 -0
- package/dist/commands/mysql/permit-broker.d.ts.map +1 -0
- package/dist/commands/mysql/permit-broker.js +365 -0
- package/dist/commands/mysql/permit-broker.js.map +1 -0
- package/dist/commands/mysql/recovery-hpke.d.ts +32 -0
- package/dist/commands/mysql/recovery-hpke.d.ts.map +1 -0
- package/dist/commands/mysql/recovery-hpke.js +311 -0
- package/dist/commands/mysql/recovery-hpke.js.map +1 -0
- package/dist/commands/mysql/run.d.ts +59 -19
- package/dist/commands/mysql/run.d.ts.map +1 -1
- package/dist/commands/mysql/run.js +399 -46
- package/dist/commands/mysql/run.js.map +1 -1
- package/dist/commands/mysql/types.d.ts +7 -0
- package/dist/commands/mysql/types.d.ts.map +1 -1
- package/dist/lib/client/http.d.ts.map +1 -1
- package/dist/lib/client/http.js +18 -0
- package/dist/lib/client/http.js.map +1 -1
- package/dist/lib/client/types.d.ts +6 -0
- package/dist/lib/client/types.d.ts.map +1 -1
- package/package.json +6 -2
|
@@ -11,26 +11,37 @@
|
|
|
11
11
|
* the lifetime of the run. The inode is kept alive solely by the inherited
|
|
12
12
|
* fd; closing it (cleanup) reclaims the bytes. This removes the old
|
|
13
13
|
* "spawn-then-unlink" race: spawn() returns when the child is forked but
|
|
14
|
-
* BEFORE it exec's mysql and reads --defaults-
|
|
14
|
+
* BEFORE it exec's mysql and reads --defaults-file, so unlinking after
|
|
15
15
|
* spawn could win the race and crash mysql with
|
|
16
16
|
* "Failed to open required defaults file".
|
|
17
|
-
* - `--defaults-
|
|
18
|
-
*
|
|
17
|
+
* - `--defaults-file=/dev/fd/<fd>` is ALWAYS the first argument (clients
|
|
18
|
+
* reject it in any other position). A preflight capability probe adds
|
|
19
|
+
* `--no-login-paths` for Oracle MySQL; MariaDB omits that unsupported flag.
|
|
20
|
+
* This is load-bearing: `--defaults-extra-file` would still read ambient
|
|
21
|
+
* option files afterwards, allowing ~/.my.cnf to override the leased
|
|
22
|
+
* host/user/password. Oracle's `--no-login-paths` also excludes
|
|
23
|
+
* .mylogin.cnf; MariaDB has no login-path facility.
|
|
24
|
+
* - Non-interactive exec always adds `--binary-mode`. Both Oracle MySQL and
|
|
25
|
+
* MariaDB then treat `\\!`/`system` as SQL input instead of executing local
|
|
26
|
+
* shell commands, while retaining DELIMITER support.
|
|
19
27
|
* - The child INHERITS the fd at the SAME number N, so `/dev/fd/N` resolves to
|
|
20
28
|
* the same inode inside the child (see buildChildStdio).
|
|
21
|
-
* -
|
|
22
|
-
*
|
|
29
|
+
* - The mysql child receives a minimal, non-secret environment allowlist.
|
|
30
|
+
* Vault authentication variables and unrelated process secrets are never
|
|
31
|
+
* inherited. `MYSQL_HISTFILE=/dev/null` prevents SQL history persistence
|
|
32
|
+
* (spec F4).
|
|
23
33
|
* - No --host / --port flags are added; connection coordinates come from the
|
|
24
34
|
* cnf written by B2 (spec F2 — no client-side override). Caller passthrough
|
|
25
|
-
* is
|
|
26
|
-
*
|
|
27
|
-
*
|
|
35
|
+
* is restricted to a fixed allowlist of argument-free presentation flags.
|
|
36
|
+
* This prevents current and future mysql options from overriding the
|
|
37
|
+
* target, credentials, input fence or printing the defaults file.
|
|
28
38
|
* - This module never re-opens the cnf path itself; mysql reads it via the
|
|
29
39
|
* inherited fd. The parent's own copy of the fd is released by cleanup()
|
|
30
40
|
* once the child has exited (spec F3 hygiene).
|
|
31
41
|
*/
|
|
32
42
|
import * as fs from 'node:fs';
|
|
33
43
|
import * as path from 'node:path';
|
|
44
|
+
import { spawnSync } from 'node:child_process';
|
|
34
45
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
35
46
|
// PATH resolution
|
|
36
47
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -64,8 +75,64 @@ export function assertMysqlOnPath() {
|
|
|
64
75
|
'and ensure it is on your PATH.');
|
|
65
76
|
}
|
|
66
77
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
67
|
-
// Passthrough flag
|
|
78
|
+
// Passthrough flag allowlist (spec F2 — no client-side connection override)
|
|
68
79
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
80
|
+
/**
|
|
81
|
+
* Fixed, argument-free mysql options that cannot select a target/credential,
|
|
82
|
+
* execute alternate input, run local commands, write files, or print defaults.
|
|
83
|
+
* Unknown options are rejected even when they appear harmless: mysql/mariadb's
|
|
84
|
+
* my_getopt modifiers and abbreviations are extensible and denylisting them has
|
|
85
|
+
* repeatedly proven unsafe.
|
|
86
|
+
*/
|
|
87
|
+
const ALLOWED_PASSTHROUGH_LONG_FLAGS = new Set([
|
|
88
|
+
'--auto-rehash',
|
|
89
|
+
'--auto-vertical-output',
|
|
90
|
+
'--batch',
|
|
91
|
+
'--binary-as-hex',
|
|
92
|
+
'--column-names',
|
|
93
|
+
'--column-type-info',
|
|
94
|
+
'--comments',
|
|
95
|
+
'--compress',
|
|
96
|
+
'--force',
|
|
97
|
+
'--html',
|
|
98
|
+
'--ignore-spaces',
|
|
99
|
+
'--line-numbers',
|
|
100
|
+
'--no-auto-rehash',
|
|
101
|
+
'--one-database',
|
|
102
|
+
'--quick',
|
|
103
|
+
'--raw',
|
|
104
|
+
'--reconnect',
|
|
105
|
+
'--safe-updates',
|
|
106
|
+
'--show-warnings',
|
|
107
|
+
'--silent',
|
|
108
|
+
'--skip-column-names',
|
|
109
|
+
'--skip-line-numbers',
|
|
110
|
+
'--table',
|
|
111
|
+
'--unbuffered',
|
|
112
|
+
'--vertical',
|
|
113
|
+
'--verbose',
|
|
114
|
+
'--wait',
|
|
115
|
+
'--xml',
|
|
116
|
+
]);
|
|
117
|
+
/** Argument-free short equivalents of the allowed long flags above. */
|
|
118
|
+
const ALLOWED_PASSTHROUGH_SHORT_FLAGS = new Set([
|
|
119
|
+
'A', 'B', 'b', 'C', 'c', 'E', 'f', 'H', 'i', 'L', 'N', 'n',
|
|
120
|
+
'o', 'q', 'r', 's', 't', 'v', 'w', 'X',
|
|
121
|
+
]);
|
|
122
|
+
function isAllowedPassthroughToken(token) {
|
|
123
|
+
if (token.startsWith('--')) {
|
|
124
|
+
// Every allowlisted long flag is argument-free. Reject = forms even for an
|
|
125
|
+
// allowed head so a boolean value cannot invert or reinterpret it.
|
|
126
|
+
return !token.includes('=') && ALLOWED_PASSTHROUGH_LONG_FLAGS.has(token);
|
|
127
|
+
}
|
|
128
|
+
if (!/^-[^-][A-Za-z]*$/.test(token))
|
|
129
|
+
return false;
|
|
130
|
+
for (let index = 1; index < token.length; index++) {
|
|
131
|
+
if (!ALLOWED_PASSTHROUGH_SHORT_FLAGS.has(token[index]))
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
69
136
|
/**
|
|
70
137
|
* Connection/credential/defaults flags that a caller MUST NOT be able to inject
|
|
71
138
|
* via `-- <passthrough>`.
|
|
@@ -90,36 +157,291 @@ const FORBIDDEN_PASSTHROUGH_FLAGS = new Set([
|
|
|
90
157
|
'--defaults-extra-file',
|
|
91
158
|
'--defaults-file',
|
|
92
159
|
'--login-path',
|
|
160
|
+
'--no-login-paths',
|
|
93
161
|
'--no-defaults',
|
|
162
|
+
// Alternate target/user selectors and transports.
|
|
163
|
+
'--user',
|
|
164
|
+
'-u',
|
|
165
|
+
'--socket',
|
|
166
|
+
'-S',
|
|
167
|
+
'--protocol',
|
|
168
|
+
'--dns-srv-name',
|
|
169
|
+
'--database',
|
|
170
|
+
'-D',
|
|
94
171
|
// Password — must come from the leased cnf only, never from argv.
|
|
95
172
|
'--password',
|
|
96
173
|
'-p',
|
|
97
174
|
]);
|
|
98
175
|
/**
|
|
99
|
-
*
|
|
100
|
-
*
|
|
176
|
+
* Flags which could disable or reinterpret the non-interactive input fence.
|
|
177
|
+
* `--binary-mode` is server-selected by runMysql for exec mode; callers may
|
|
178
|
+
* neither negate it nor re-enable client commands / supply alternate argv SQL.
|
|
179
|
+
*/
|
|
180
|
+
const FORBIDDEN_INPUT_CONTROL_FLAGS = new Set([
|
|
181
|
+
'--binary-mode',
|
|
182
|
+
'--commands',
|
|
183
|
+
'--named-commands',
|
|
184
|
+
'-G',
|
|
185
|
+
'--execute',
|
|
186
|
+
'-e',
|
|
187
|
+
'--init-command',
|
|
188
|
+
'--init-command-add',
|
|
189
|
+
]);
|
|
190
|
+
/** Meta options that can expose credentials read from the inherited cnf. */
|
|
191
|
+
const FORBIDDEN_SECRET_OUTPUT_FLAGS = new Set([
|
|
192
|
+
'--print-defaults',
|
|
193
|
+
]);
|
|
194
|
+
const MYSQL_LONG_OPTION_MODIFIERS = [
|
|
195
|
+
'autoset',
|
|
196
|
+
'loose',
|
|
197
|
+
'enable',
|
|
198
|
+
'disable',
|
|
199
|
+
'skip',
|
|
200
|
+
'maximum',
|
|
201
|
+
];
|
|
202
|
+
const MAX_LONG_OPTION_MODIFIER_DEPTH = 8;
|
|
203
|
+
function canonicalLongFlag(flag) {
|
|
204
|
+
// my_getopt accepts `_` as `-` in long options, so the filter must do the
|
|
205
|
+
// same or `--defaults_file`, `--login_path`, etc. bypass their dashed forms.
|
|
206
|
+
let canonical = flag.replaceAll('_', '-');
|
|
207
|
+
// my_getopt composes these modifiers and accepts abbreviations for every
|
|
208
|
+
// segment. For example, all of these can negate our earlier --binary-mode:
|
|
209
|
+
// --enable-skip-binary-mode
|
|
210
|
+
// --loose-enable-skip-binary-mode
|
|
211
|
+
// --loo-ena-ski-bin
|
|
212
|
+
// --loose-maximum-skip-binary-mode
|
|
213
|
+
// MariaDB additionally composes --autoset-*; Oracle rejects it, but the CLI
|
|
214
|
+
// supports both families and therefore enforces the union fail-closed.
|
|
215
|
+
// Strip the chain iteratively so the final security-sensitive option is
|
|
216
|
+
// always checked. Bound the loop and fail closed instead of allowing an
|
|
217
|
+
// attacker-controlled modifier chain to escape canonicalisation.
|
|
218
|
+
for (let depth = 0; canonical.startsWith('--'); depth++) {
|
|
219
|
+
const body = canonical.slice(2);
|
|
220
|
+
const separator = body.indexOf('-');
|
|
221
|
+
if (separator <= 0)
|
|
222
|
+
break;
|
|
223
|
+
const segment = body.slice(0, separator);
|
|
224
|
+
const modifier = MYSQL_LONG_OPTION_MODIFIERS.find(candidate => candidate.startsWith(segment));
|
|
225
|
+
if (modifier === undefined)
|
|
226
|
+
break;
|
|
227
|
+
if (depth >= MAX_LONG_OPTION_MODIFIER_DEPTH) {
|
|
228
|
+
throw new Error(`Passthrough flag '${flag}' is not allowed — mysql option modifier ` +
|
|
229
|
+
'chain exceeds the safe canonicalisation limit.');
|
|
230
|
+
}
|
|
231
|
+
canonical = `--${body.slice(separator + 1)}`;
|
|
232
|
+
}
|
|
233
|
+
return canonical;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* mysql accepts unambiguous long-option abbreviations (`--hos` for `--host`).
|
|
237
|
+
* Reject both the full forbidden spelling and every prefix mysql could resolve
|
|
238
|
+
* to it. Longer unrelated options such as `--hostgroup` remain unaffected.
|
|
239
|
+
*/
|
|
240
|
+
function matchesForbiddenLongFlag(flag, forbidden) {
|
|
241
|
+
if (!flag.startsWith('--') || flag.length <= 2)
|
|
242
|
+
return false;
|
|
243
|
+
for (const candidate of forbidden) {
|
|
244
|
+
if (candidate.startsWith('--') && candidate.startsWith(flag))
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Apply the forbidden-option matcher to every segment suffix of a long option.
|
|
251
|
+
*
|
|
252
|
+
* This is the fail-closed backstop for current or future my_getopt modifiers:
|
|
253
|
+
* even if a client learns an unknown `--foo-` wrapper, `--foo-bin` exposes the
|
|
254
|
+
* `--bin` suffix and `--foo-skip-binary-mode` exposes `--binary-mode`. The
|
|
255
|
+
* known modifier canonicaliser remains useful for precise diagnostics and its
|
|
256
|
+
* explicit depth bound, but security does not depend on our modifier list being
|
|
257
|
+
* eternally complete.
|
|
258
|
+
*/
|
|
259
|
+
function hasForbiddenLongFlagSuffix(flag, forbidden) {
|
|
260
|
+
const normalized = flag.replaceAll('_', '-');
|
|
261
|
+
if (!normalized.startsWith('--'))
|
|
262
|
+
return false;
|
|
263
|
+
const segments = normalized.slice(2).split('-').filter(Boolean);
|
|
264
|
+
for (let index = 0; index < segments.length; index++) {
|
|
265
|
+
const suffix = `--${segments.slice(index).join('-')}`;
|
|
266
|
+
if (matchesForbiddenLongFlag(suffix, forbidden))
|
|
267
|
+
return true;
|
|
268
|
+
}
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
const FORBIDDEN_CONNECTION_SHORT_FLAGS = new Set([
|
|
272
|
+
'h', // host
|
|
273
|
+
'P', // port
|
|
274
|
+
'u', // user
|
|
275
|
+
'S', // socket
|
|
276
|
+
'D', // database
|
|
277
|
+
'p', // password
|
|
278
|
+
]);
|
|
279
|
+
const FORBIDDEN_INPUT_SHORT_FLAGS = new Set([
|
|
280
|
+
'e', // execute
|
|
281
|
+
'G', // named-commands
|
|
282
|
+
]);
|
|
283
|
+
/**
|
|
284
|
+
* Find a forbidden option anywhere in a mysql short-option cluster.
|
|
285
|
+
*
|
|
286
|
+
* mysql accepts clusters and attached arguments, so looking only at token[1]
|
|
287
|
+
* is unsafe: `-vh127.0.0.1`, `-vP3307`, `-vuother` and `-vppassword`
|
|
288
|
+
* all place a security-sensitive option after an innocuous `-v`. All currently
|
|
289
|
+
* supported innocuous mysql short options are argument-less; every short
|
|
290
|
+
* option that can select a target, credential or alternate SQL input is in one
|
|
291
|
+
* of the sets above. Scanning the complete token therefore handles both
|
|
292
|
+
* clusters and attached arguments without changing benign clusters such as
|
|
293
|
+
* `-vvv`, `-BNrs` or `-fvt`.
|
|
294
|
+
*/
|
|
295
|
+
function findForbiddenShortFlag(token) {
|
|
296
|
+
if (!/^-[^-]/.test(token))
|
|
297
|
+
return undefined;
|
|
298
|
+
for (const letter of token.slice(1)) {
|
|
299
|
+
if (FORBIDDEN_CONNECTION_SHORT_FLAGS.has(letter)) {
|
|
300
|
+
return { flag: `-${letter}`, kind: 'connection' };
|
|
301
|
+
}
|
|
302
|
+
if (FORBIDDEN_INPUT_SHORT_FLAGS.has(letter)) {
|
|
303
|
+
return { flag: `-${letter}`, kind: 'input' };
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return undefined;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Accept only the fixed allowlist of argument-free presentation flags.
|
|
310
|
+
* Forbidden-option recognition below exists for actionable diagnostics; the
|
|
311
|
+
* final generic rejection is the security boundary for unknown future flags.
|
|
101
312
|
*
|
|
102
313
|
* Recognised forms for a forbidden flag `--host`:
|
|
103
314
|
* - exact: `--host` (its value is the next token)
|
|
104
315
|
* - inline: `--host=value`
|
|
105
316
|
* - short: `-h` (value is next token) / `-P`, `-p`
|
|
106
317
|
*
|
|
107
|
-
*
|
|
108
|
-
* (e.g. `--hostgroup`, `--port-something`) are NOT rejected.
|
|
109
|
-
*
|
|
110
|
-
* @throws Error naming the offending flag and citing F2, on the first match.
|
|
318
|
+
* @throws Error naming the first non-allowlisted token.
|
|
111
319
|
*/
|
|
112
320
|
export function assertPassthroughAllowed(passthrough) {
|
|
113
321
|
for (const token of passthrough) {
|
|
322
|
+
if (isAllowedPassthroughToken(token))
|
|
323
|
+
continue;
|
|
114
324
|
// Normalise an inline `--flag=value` to its flag head for the lookup.
|
|
115
325
|
const eqIdx = token.indexOf('=');
|
|
116
326
|
const flag = eqIdx === -1 ? token : token.slice(0, eqIdx);
|
|
117
|
-
|
|
118
|
-
|
|
327
|
+
const canonicalFlag = canonicalLongFlag(flag);
|
|
328
|
+
const forbiddenShort = findForbiddenShortFlag(flag);
|
|
329
|
+
if (matchesForbiddenLongFlag(canonicalFlag, FORBIDDEN_SECRET_OUTPUT_FLAGS)
|
|
330
|
+
|| hasForbiddenLongFlagSuffix(flag, FORBIDDEN_SECRET_OUTPUT_FLAGS)) {
|
|
331
|
+
throw new Error(`Passthrough flag '${flag}' is not allowed — credentials from the ` +
|
|
332
|
+
'leased defaults file must never be printed.');
|
|
333
|
+
}
|
|
334
|
+
if (matchesForbiddenLongFlag(canonicalFlag, FORBIDDEN_PASSTHROUGH_FLAGS)
|
|
335
|
+
|| hasForbiddenLongFlagSuffix(flag, FORBIDDEN_PASSTHROUGH_FLAGS)
|
|
336
|
+
|| forbiddenShort?.kind === 'connection') {
|
|
337
|
+
throw new Error(`Passthrough flag '${flag}' is not allowed` +
|
|
338
|
+
`${forbiddenShort === undefined ? '' : ` (contains ${forbiddenShort.flag})`} — ` +
|
|
339
|
+
'host/port come from the ' +
|
|
119
340
|
`leased connection and cannot be overridden (see F2).`);
|
|
120
341
|
}
|
|
342
|
+
if (matchesForbiddenLongFlag(canonicalFlag, FORBIDDEN_INPUT_CONTROL_FLAGS)
|
|
343
|
+
|| hasForbiddenLongFlagSuffix(flag, FORBIDDEN_INPUT_CONTROL_FLAGS)
|
|
344
|
+
|| forbiddenShort?.kind === 'input') {
|
|
345
|
+
throw new Error(`Passthrough flag '${flag}' is not allowed` +
|
|
346
|
+
`${forbiddenShort === undefined ? '' : ` (contains ${forbiddenShort.flag})`} — ` +
|
|
347
|
+
'non-interactive SQL must ' +
|
|
348
|
+
'remain fenced by server-selected --binary-mode.');
|
|
349
|
+
}
|
|
350
|
+
throw new Error(`Passthrough token '${token}' is not allowed — only fixed, ` +
|
|
351
|
+
'argument-free mysql presentation flags may be passed through.');
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Validate the optional positional schema before it reaches mysql argv.
|
|
356
|
+
*
|
|
357
|
+
* MySQL identifiers can be broader when quoted inside SQL, but the CLI schema
|
|
358
|
+
* selector is deliberately a conservative ASCII contract. This prevents a
|
|
359
|
+
* value beginning with `-` from being interpreted as a client option and keeps
|
|
360
|
+
* control characters or shell-like path material out of process arguments.
|
|
361
|
+
*/
|
|
362
|
+
export function assertSafeMysqlDatabase(database) {
|
|
363
|
+
if (database === undefined)
|
|
364
|
+
return;
|
|
365
|
+
if (!/^[A-Za-z0-9_$][A-Za-z0-9_$.-]{0,63}$/.test(database)) {
|
|
366
|
+
throw new Error('Invalid MySQL database/schema: expected 1-64 ASCII identifier ' +
|
|
367
|
+
'characters, beginning with a letter, digit, underscore, or dollar sign.');
|
|
121
368
|
}
|
|
122
369
|
}
|
|
370
|
+
export function assertMysqlExecCapabilities(capabilities) {
|
|
371
|
+
if (!capabilities.supportsBinaryMode) {
|
|
372
|
+
throw new Error('mysql client cannot disable local commands for piped SQL; install a supported MySQL or MariaDB client');
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
const capabilityCache = new Map();
|
|
376
|
+
function buildMysqlChildEnv() {
|
|
377
|
+
const env = { MYSQL_HISTFILE: '/dev/null' };
|
|
378
|
+
const exactAllowed = [
|
|
379
|
+
'PATH',
|
|
380
|
+
'TERM',
|
|
381
|
+
'TZ',
|
|
382
|
+
'TMPDIR',
|
|
383
|
+
'LANG',
|
|
384
|
+
'LC_ALL',
|
|
385
|
+
'LC_CTYPE',
|
|
386
|
+
'LC_MESSAGES',
|
|
387
|
+
'LC_COLLATE',
|
|
388
|
+
'LC_NUMERIC',
|
|
389
|
+
'LC_TIME',
|
|
390
|
+
'LC_MONETARY',
|
|
391
|
+
'LC_ADDRESS',
|
|
392
|
+
'LC_IDENTIFICATION',
|
|
393
|
+
'LC_MEASUREMENT',
|
|
394
|
+
'LC_NAME',
|
|
395
|
+
'LC_PAPER',
|
|
396
|
+
'LC_TELEPHONE',
|
|
397
|
+
];
|
|
398
|
+
for (const name of exactAllowed) {
|
|
399
|
+
const value = process.env[name];
|
|
400
|
+
if (value !== undefined)
|
|
401
|
+
env[name] = value;
|
|
402
|
+
}
|
|
403
|
+
return env;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Probe option-file isolation before a lease/permit is consumed.
|
|
407
|
+
*
|
|
408
|
+
* Oracle MySQL clients expose --no-login-paths and require it to exclude
|
|
409
|
+
* .mylogin.cnf. MariaDB clients do not implement login paths and reject that
|
|
410
|
+
* flag, so their exclusive --defaults-file is sufficient. Unknown clients
|
|
411
|
+
* without the Oracle flag fail closed.
|
|
412
|
+
*/
|
|
413
|
+
export function inspectMysqlClient(binary = assertMysqlOnPath()) {
|
|
414
|
+
const cached = capabilityCache.get(binary);
|
|
415
|
+
if (cached !== undefined)
|
|
416
|
+
return cached;
|
|
417
|
+
const result = spawnSync(binary, ['--no-defaults', '--help'], {
|
|
418
|
+
encoding: 'utf8',
|
|
419
|
+
env: buildMysqlChildEnv(),
|
|
420
|
+
timeout: 5_000,
|
|
421
|
+
maxBuffer: 2 * 1024 * 1024,
|
|
422
|
+
});
|
|
423
|
+
if (result.error !== undefined || result.status !== 0) {
|
|
424
|
+
throw new Error('Unable to inspect mysql client capabilities safely');
|
|
425
|
+
}
|
|
426
|
+
const help = result.stdout + '\n' + result.stderr;
|
|
427
|
+
if (!/(?:^|\s)--defaults-file(?:[=\s]|$)/m.test(help)) {
|
|
428
|
+
throw new Error('mysql client does not support an exclusive --defaults-file');
|
|
429
|
+
}
|
|
430
|
+
const supportsNoLoginPaths = /(?:^|\s)--no-login-paths(?:[=\s]|$)/m.test(help);
|
|
431
|
+
const supportsBinaryMode = /(?:^|\s)--binary-mode(?:[=\s]|$)/m.test(help);
|
|
432
|
+
const family = /mariadb/i.test(help) ? 'mariadb' : 'mysql';
|
|
433
|
+
if (!supportsNoLoginPaths && family !== 'mariadb') {
|
|
434
|
+
throw new Error('Oracle mysql client cannot disable login paths; install a supported MySQL or MariaDB client');
|
|
435
|
+
}
|
|
436
|
+
const capabilities = {
|
|
437
|
+
binary,
|
|
438
|
+
family,
|
|
439
|
+
supportsNoLoginPaths,
|
|
440
|
+
supportsBinaryMode,
|
|
441
|
+
};
|
|
442
|
+
capabilityCache.set(binary, capabilities);
|
|
443
|
+
return capabilities;
|
|
444
|
+
}
|
|
123
445
|
/**
|
|
124
446
|
* Build the mysql argv and child environment.
|
|
125
447
|
*
|
|
@@ -128,44 +450,52 @@ export function assertPassthroughAllowed(passthrough) {
|
|
|
128
450
|
* without spawning real mysql.
|
|
129
451
|
*
|
|
130
452
|
* Security invariants:
|
|
131
|
-
* - `--defaults-
|
|
453
|
+
* - `--defaults-file=<fdPath>` is args[0]. Oracle MySQL then receives
|
|
454
|
+
* `--no-login-paths`; MariaDB omits the unsupported flag after probing.
|
|
455
|
+
* - Exec invocations force `--binary-mode` before the positional schema.
|
|
132
456
|
* - No --user / -u / --password / -p / MYSQL_PWD in args or env.
|
|
133
457
|
* - No --host / --port / -h / -P flags (connection coords from cnf).
|
|
134
|
-
* -
|
|
458
|
+
* - Only fixed, argument-free passthrough flags are accepted (spec F2).
|
|
459
|
+
* - The child environment is a non-secret allowlist; Vault credentials and
|
|
460
|
+
* ambient MySQL selectors are never inherited.
|
|
135
461
|
* - MYSQL_HISTFILE=/dev/null overrides any pre-existing value.
|
|
136
462
|
*
|
|
137
|
-
* @throws If `passthrough` contains a
|
|
138
|
-
* override flag (see assertPassthroughAllowed).
|
|
463
|
+
* @throws If `passthrough` contains a token outside the fixed safe allowlist.
|
|
139
464
|
*/
|
|
140
465
|
export function buildMysqlInvocation(opts) {
|
|
141
|
-
const { fdPath, database, passthrough = [] } = opts;
|
|
466
|
+
const { fdPath, database, passthrough = [], supportsNoLoginPaths = true, binaryMode = false, } = opts;
|
|
467
|
+
assertSafeMysqlDatabase(database);
|
|
142
468
|
// F2: reject host/port/defaults/password overrides BEFORE they reach argv.
|
|
143
469
|
assertPassthroughAllowed(passthrough);
|
|
144
|
-
// --defaults-
|
|
145
|
-
|
|
146
|
-
//
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
470
|
+
// --defaults-file MUST be first (mysql enforces this). Unlike
|
|
471
|
+
// --defaults-extra-file, it excludes ~/.my.cnf and the other ordinary option
|
|
472
|
+
// files. MySQL still reads .mylogin.cnf unless --no-login-paths is present.
|
|
473
|
+
const args = [`--defaults-file=${fdPath}`];
|
|
474
|
+
if (supportsNoLoginPaths)
|
|
475
|
+
args.push('--no-login-paths');
|
|
476
|
+
if (binaryMode)
|
|
477
|
+
args.push('--binary-mode');
|
|
478
|
+
// Validated presentation flags remain options and therefore precede the
|
|
479
|
+
// explicit option terminator.
|
|
152
480
|
args.push(...passthrough);
|
|
153
|
-
//
|
|
154
|
-
//
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
//
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
481
|
+
// Add a second defence against option injection: even a future validator
|
|
482
|
+
// regression cannot turn the positional schema into --print-defaults, -e,
|
|
483
|
+
// --host, etc. Both supported clients accept `--` before the database.
|
|
484
|
+
if (database !== undefined) {
|
|
485
|
+
args.push('--', database);
|
|
486
|
+
}
|
|
487
|
+
// Child env: explicit non-secret allowlist. Copying process.env here would
|
|
488
|
+
// leak the consumer's ZNVAULT_API_KEY/ZNVAULT_PASSWORD (and arbitrary CI
|
|
489
|
+
// secrets) into the external mysql process. Locale/terminal variables are
|
|
490
|
+
// sufficient for deterministic client behaviour; the binary path is already
|
|
491
|
+
// resolved before spawn. MYSQL_HISTFILE is fixed, never caller-controlled.
|
|
492
|
+
const env = buildMysqlChildEnv();
|
|
163
493
|
return { args, env };
|
|
164
494
|
}
|
|
165
495
|
/**
|
|
166
496
|
* Build the `stdio` array for spawning mysql so that the cnf fd is inherited by
|
|
167
497
|
* the child at the SAME numeric index `fd`. This is what makes
|
|
168
|
-
* `--defaults-
|
|
498
|
+
* `--defaults-file=/dev/fd/<fd>` resolve correctly in the child: the
|
|
169
499
|
* child must have an fd open at exactly `fd`.
|
|
170
500
|
*
|
|
171
501
|
* Layout:
|
|
@@ -212,16 +542,17 @@ export function buildChildStdio(fd, stdin0) {
|
|
|
212
542
|
*
|
|
213
543
|
* - Resolves with the child's numeric exit code (caller/CI relies on non-zero).
|
|
214
544
|
* - The cnf fd (`opts.fd`) is inherited by the child at the SAME number so
|
|
215
|
-
* `--defaults-
|
|
545
|
+
* `--defaults-file=/dev/fd/<fd>` resolves in the child (spec F1). The
|
|
216
546
|
* directory entry was already unlinked in createMyCnf — there is NOTHING to
|
|
217
547
|
* unlink here, and NO post-spawn unlink race.
|
|
218
548
|
* - 'connect' mode: stdin/stdout/stderr are inherited (interactive terminal);
|
|
219
549
|
* the cnf fd is additionally inherited at index `fd`.
|
|
220
550
|
* - 'exec' mode: stdin (index 0) is wired as:
|
|
221
|
-
* 1.
|
|
222
|
-
* 2.
|
|
223
|
-
* 3.
|
|
224
|
-
* 4. parent stdin
|
|
551
|
+
* 1. input (exact Buffer) → stdin pipe
|
|
552
|
+
* 2. files (concatenated, in order) → stdin pipe
|
|
553
|
+
* 3. sql (string) → stdin pipe
|
|
554
|
+
* 4. parent stdin (if not a TTY) → piped through (inherit)
|
|
555
|
+
* 5. parent stdin is a TTY and no source was provided → Error
|
|
225
556
|
* stdout/stderr are inherited; the cnf fd is inherited at index `fd`.
|
|
226
557
|
*
|
|
227
558
|
* The parent's own copy of `opts.fd` is intentionally NOT closed here — the
|
|
@@ -236,12 +567,24 @@ export function buildChildStdio(fd, stdin0) {
|
|
|
236
567
|
* @throws If exec mode is requested but no SQL source is available.
|
|
237
568
|
*/
|
|
238
569
|
export async function runMysql(opts) {
|
|
570
|
+
// Fail closed before even resolving/probing the local client. This ordering
|
|
571
|
+
// is security-relevant for recovery permits: an invalid passthrough must be
|
|
572
|
+
// rejected deterministically even when mysql is absent, and no client-side
|
|
573
|
+
// capability check or spawn may happen first. buildMysqlInvocation repeats
|
|
574
|
+
// the check at the final argv assembly boundary as defence in depth.
|
|
575
|
+
assertPassthroughAllowed(opts.passthrough ?? []);
|
|
576
|
+
assertSafeMysqlDatabase(opts.database);
|
|
239
577
|
const { spawn } = await import('node:child_process');
|
|
240
578
|
const mysqlBin = assertMysqlOnPath();
|
|
579
|
+
const capabilities = inspectMysqlClient(mysqlBin);
|
|
580
|
+
if (opts.mode === 'exec')
|
|
581
|
+
assertMysqlExecCapabilities(capabilities);
|
|
241
582
|
const { args, env } = buildMysqlInvocation({
|
|
242
583
|
fdPath: opts.fdPath,
|
|
243
584
|
database: opts.database,
|
|
244
585
|
passthrough: opts.passthrough,
|
|
586
|
+
supportsNoLoginPaths: capabilities.supportsNoLoginPaths,
|
|
587
|
+
binaryMode: opts.mode === 'exec',
|
|
245
588
|
});
|
|
246
589
|
if (opts.mode === 'connect') {
|
|
247
590
|
// Interactive: inherit std streams + the cnf fd at its own number.
|
|
@@ -256,6 +599,16 @@ export async function runMysql(opts) {
|
|
|
256
599
|
// stdin (index 0) is 'pipe' when we feed SQL ourselves (files / sql), and
|
|
257
600
|
// 'inherit' when we pass the parent's piped stdin through. The cnf fd (>= 3)
|
|
258
601
|
// is a separate, higher index — no collision with stdin.
|
|
602
|
+
if (opts.input !== undefined) {
|
|
603
|
+
const input = opts.input;
|
|
604
|
+
const stdio = buildChildStdio(opts.fd, 'pipe');
|
|
605
|
+
const child = spawn(mysqlBin, args, { stdio, env });
|
|
606
|
+
return new Promise((resolve, reject) => {
|
|
607
|
+
child.on('error', (err) => { reject(err); });
|
|
608
|
+
child.on('close', (code) => { resolve(code ?? 1); });
|
|
609
|
+
child.stdin.end(input);
|
|
610
|
+
});
|
|
611
|
+
}
|
|
259
612
|
if (opts.files && opts.files.length > 0) {
|
|
260
613
|
// Read + concatenate files in order, pipe the result.
|
|
261
614
|
const fsModule = await import('node:fs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/mysql/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/mysql/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,4 +26,11 @@ export interface MysqlAliasAddOptions {
|
|
|
26
26
|
/** Role name or ID to bind to the alias. */
|
|
27
27
|
role: string;
|
|
28
28
|
}
|
|
29
|
+
/** Options for the one-shot Recovery Fence v1 consumer. */
|
|
30
|
+
export interface MysqlExecPermitOptions {
|
|
31
|
+
/** PostgreSQL-authoritative epoch copied from the issued permit. */
|
|
32
|
+
fenceEpoch: string;
|
|
33
|
+
/** SQL files to concatenate and feed over stdin. No inline SQL option exists. */
|
|
34
|
+
file: string[];
|
|
35
|
+
}
|
|
29
36
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/mysql/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qCAAqC;AACrC,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/mysql/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,yEAAyE;IACzE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qCAAqC;AACrC,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/lib/client/http.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAK7E;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD;AAwCD;;GAEG;AACH,qBAAa,UAAU;IAUrB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAU;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,cAAc,CAA8B;gBAExC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAc1C;;;;OAIG;IACH,SAAS,CAAC,cAAc,IAAI,MAAM;IAIlC,iFAAiF;IACjF,SAAS,CAAC,eAAe,IAAI,OAAO;IAIpC;;;OAGG;IACH,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;IAED,oEAAoE;IACpE,SAAS,KAAK,QAAQ,IAAI,OAAO,CAEhC;IAED;;OAEG;IACH,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI;IAKjD;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;YACW,gBAAgB;IAuC9B;;;;;;;;;;OAUG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgElE,sFAAsF;YACxE,oBAAoB;IAwClC;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBtF;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/lib/client/http.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,sBAAsB,CAAC;AAK7E;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD;AAwCD;;GAEG;AACH,qBAAa,UAAU;IAUrB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAU;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,cAAc,CAA8B;gBAExC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAc1C;;;;OAIG;IACH,SAAS,CAAC,cAAc,IAAI,MAAM;IAIlC,iFAAiF;IACjF,SAAS,CAAC,eAAe,IAAI,OAAO;IAIpC;;;OAGG;IACH,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;IAED,oEAAoE;IACpE,SAAS,KAAK,QAAQ,IAAI,OAAO,CAEhC;IAED;;OAEG;IACH,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI;IAKjD;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;;;OAIG;YACW,gBAAgB;IAuC9B;;;;;;;;;;OAUG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgElE,sFAAsF;YACxE,oBAAoB;IAwClC;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBtF;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IA0LrD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA+BvD;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IASjC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBhC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBhD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAiB/C,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBjD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAe1C"}
|