@node9/proxy 2.54.1 → 2.55.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.
- package/dist/cli-main.js +264 -3
- package/dist/dashboard.mjs +261 -2
- package/dist/hook.js +261 -2
- package/dist/index.js +261 -2
- package/dist/index.mjs +261 -2
- package/dist/scan-ink.mjs +75 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1741,6 +1741,26 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
1741
1741
|
}
|
|
1742
1742
|
return out;
|
|
1743
1743
|
}
|
|
1744
|
+
function serviceNamedIn(text) {
|
|
1745
|
+
const re = new RegExp(SERVICE_WORD_RE.source, "gi");
|
|
1746
|
+
for (let m = re.exec(text); m; m = re.exec(text)) {
|
|
1747
|
+
const lower2 = m[1].toLowerCase();
|
|
1748
|
+
if (lower2 === "init" && !INIT_PATTERN_RE.test(text)) continue;
|
|
1749
|
+
return SYSTEM_SERVICES.find((s) => s.toLowerCase() === lower2) ?? m[1];
|
|
1750
|
+
}
|
|
1751
|
+
return null;
|
|
1752
|
+
}
|
|
1753
|
+
function serviceOf(name) {
|
|
1754
|
+
const leaf = name.replace(/^.*[\\/]/, "").replace(/\.service$/, "").replace(/@.*$/, "");
|
|
1755
|
+
const lower2 = leaf.toLowerCase();
|
|
1756
|
+
return SYSTEM_SERVICES.find((s) => s.toLowerCase() === lower2) ?? UNIT_ALIASES[lower2] ?? null;
|
|
1757
|
+
}
|
|
1758
|
+
function killsService(language, code) {
|
|
1759
|
+
const api = KILL_API[language].exec(code);
|
|
1760
|
+
if (!api) return null;
|
|
1761
|
+
const service = serviceNamedIn(code);
|
|
1762
|
+
return service ? `${api[0].trim()} with ${service}` : null;
|
|
1763
|
+
}
|
|
1744
1764
|
function inlineLanguageOf(interp) {
|
|
1745
1765
|
const i = interp.toLowerCase();
|
|
1746
1766
|
if (/^python[\d.]*$/.test(i)) return "python";
|
|
@@ -1815,6 +1835,15 @@ function judgeInlineCode(language, code, isProtected) {
|
|
|
1815
1835
|
return { outcome: "unreadable", what: "is too long for node9 to read" };
|
|
1816
1836
|
}
|
|
1817
1837
|
const text = language === "python" ? resolvePythonAliases(code) : code;
|
|
1838
|
+
const killed = killsService(language, text);
|
|
1839
|
+
if (killed) {
|
|
1840
|
+
return {
|
|
1841
|
+
outcome: "dangerous",
|
|
1842
|
+
what: WHAT["kills-service"],
|
|
1843
|
+
evidence: killed.slice(0, 60),
|
|
1844
|
+
category: "kills-service"
|
|
1845
|
+
};
|
|
1846
|
+
}
|
|
1818
1847
|
for (const [category, re] of TABLES[language]) {
|
|
1819
1848
|
const m = re.exec(text);
|
|
1820
1849
|
if (!m) continue;
|
|
@@ -8470,6 +8499,118 @@ function scanArgumentSecrets(args) {
|
|
|
8470
8499
|
severity: "review"
|
|
8471
8500
|
} : null;
|
|
8472
8501
|
}
|
|
8502
|
+
function shownOf2(words) {
|
|
8503
|
+
return words.map((w) => w ?? "$?").join(" ").slice(0, 80);
|
|
8504
|
+
}
|
|
8505
|
+
function withoutComments(command) {
|
|
8506
|
+
return command.split("\n").map((line) => {
|
|
8507
|
+
for (let i = 0; i < line.length; i++) {
|
|
8508
|
+
if (line[i] === "#" && (i === 0 || line[i - 1] === " " || line[i - 1] === " ")) {
|
|
8509
|
+
return line.slice(0, i);
|
|
8510
|
+
}
|
|
8511
|
+
}
|
|
8512
|
+
return line;
|
|
8513
|
+
}).join("\n");
|
|
8514
|
+
}
|
|
8515
|
+
function detectSystemProcessStop(command, depth = 0) {
|
|
8516
|
+
if (!PRESCREEN_RE3.test(command)) return null;
|
|
8517
|
+
const named = serviceNamedIn(withoutComments(command));
|
|
8518
|
+
let direct = null;
|
|
8519
|
+
let dynamicKill = null;
|
|
8520
|
+
walkCommandScope(command, (node) => {
|
|
8521
|
+
const n = node;
|
|
8522
|
+
if (direct || !n || n.kind !== "CallExpr") return true;
|
|
8523
|
+
const words = (n.Args || []).map((a) => resolveWordLiteral(a));
|
|
8524
|
+
if (words.length === 0) return true;
|
|
8525
|
+
if (baseWord(words[0]) === "xargs" && words.some((w) => w !== null && baseWord(w) === "kill")) {
|
|
8526
|
+
dynamicKill ??= shownOf2(words);
|
|
8527
|
+
return true;
|
|
8528
|
+
}
|
|
8529
|
+
if (depth < MAX_PAYLOAD_DEPTH5) {
|
|
8530
|
+
const payload = literalShellPayload(words, baseWord(words[0]));
|
|
8531
|
+
if (payload !== null) {
|
|
8532
|
+
const inner = detectSystemProcessStop(payload, depth + 1);
|
|
8533
|
+
if (inner) direct = inner;
|
|
8534
|
+
return true;
|
|
8535
|
+
}
|
|
8536
|
+
}
|
|
8537
|
+
const head = unwrapCommandHead(words);
|
|
8538
|
+
if (head >= words.length) return true;
|
|
8539
|
+
const name = baseWord(words[head]);
|
|
8540
|
+
const rest = words.slice(head + 1);
|
|
8541
|
+
const shown = shownOf2(words);
|
|
8542
|
+
const viaXargs = words.slice(0, head).some((w) => w !== null && baseWord(w) === "xargs");
|
|
8543
|
+
if (name === "kill") {
|
|
8544
|
+
const targets = [];
|
|
8545
|
+
for (let i = 0; i < rest.length; i++) {
|
|
8546
|
+
const w = rest[i];
|
|
8547
|
+
if (i === 0 && w !== null && KILL_SIGNAL_RE.test(w)) {
|
|
8548
|
+
if (w === "-s") i++;
|
|
8549
|
+
continue;
|
|
8550
|
+
}
|
|
8551
|
+
if (w === "--") continue;
|
|
8552
|
+
targets.push(w);
|
|
8553
|
+
}
|
|
8554
|
+
if (targets.some((t) => t === "1" || t === "-1")) {
|
|
8555
|
+
direct = { service: "init (pid 1)", how: "kills", shown };
|
|
8556
|
+
} else if (viaXargs || targets.some((t) => t === null)) {
|
|
8557
|
+
dynamicKill ??= shown;
|
|
8558
|
+
}
|
|
8559
|
+
return true;
|
|
8560
|
+
}
|
|
8561
|
+
if (name === "pkill" || name === "killall") {
|
|
8562
|
+
let skipValue = false;
|
|
8563
|
+
for (const w of rest) {
|
|
8564
|
+
if (skipValue) {
|
|
8565
|
+
skipValue = false;
|
|
8566
|
+
continue;
|
|
8567
|
+
}
|
|
8568
|
+
if (w !== null && w.startsWith("-")) {
|
|
8569
|
+
if (/^-(?:u|U|g|G|t|P|s|n|o|r|q|-signal|-uid|-user)$/.test(w)) skipValue = true;
|
|
8570
|
+
continue;
|
|
8571
|
+
}
|
|
8572
|
+
if (w === null) {
|
|
8573
|
+
dynamicKill ??= shown;
|
|
8574
|
+
continue;
|
|
8575
|
+
}
|
|
8576
|
+
const service = serviceOf(w) ?? serviceNamedIn(w);
|
|
8577
|
+
if (service) direct = { service, how: "kills", shown };
|
|
8578
|
+
}
|
|
8579
|
+
return true;
|
|
8580
|
+
}
|
|
8581
|
+
if (name === "systemctl") {
|
|
8582
|
+
if (rest.includes("--user")) return true;
|
|
8583
|
+
const verb = rest.find((w) => w !== null && !w.startsWith("-"));
|
|
8584
|
+
if (verb === void 0 || verb === null || !SYSTEMCTL_STOP_VERBS.has(verb)) return true;
|
|
8585
|
+
for (const w of rest.slice(rest.indexOf(verb) + 1)) {
|
|
8586
|
+
const service = w === null ? null : serviceOf(w);
|
|
8587
|
+
if (service) direct = { service, how: verb === "kill" ? "kills" : "stops", shown };
|
|
8588
|
+
}
|
|
8589
|
+
return true;
|
|
8590
|
+
}
|
|
8591
|
+
if (name === "service") {
|
|
8592
|
+
const [unit, verb] = rest;
|
|
8593
|
+
const service = typeof unit === "string" ? serviceOf(unit) : null;
|
|
8594
|
+
if (service && verb === "stop") direct = { service, how: "stops", shown };
|
|
8595
|
+
return true;
|
|
8596
|
+
}
|
|
8597
|
+
if (name === "launchctl") {
|
|
8598
|
+
const verb = rest.find((w) => w !== null && !w.startsWith("-"));
|
|
8599
|
+
if (verb === void 0 || verb === null || !LAUNCHCTL_UNLOAD_VERBS.has(verb)) return true;
|
|
8600
|
+
const daemon = rest.find((w) => w !== null && LAUNCH_DAEMONS_RE.test(w));
|
|
8601
|
+
if (daemon) {
|
|
8602
|
+
direct = { service: daemon.replace(/^.*\//, ""), how: "unloads the system daemon", shown };
|
|
8603
|
+
}
|
|
8604
|
+
return true;
|
|
8605
|
+
}
|
|
8606
|
+
return true;
|
|
8607
|
+
});
|
|
8608
|
+
if (direct) return direct;
|
|
8609
|
+
if (dynamicKill !== null && named) {
|
|
8610
|
+
return { service: named, how: "kills the processes of", shown: dynamicKill };
|
|
8611
|
+
}
|
|
8612
|
+
return null;
|
|
8613
|
+
}
|
|
8473
8614
|
function patternSelects(pattern, targets) {
|
|
8474
8615
|
const pieces = pattern.toLowerCase().split(/[\\^$.*+?()[\]{}|]+/).filter(Boolean);
|
|
8475
8616
|
if (pieces.length === 0) return false;
|
|
@@ -9089,6 +9230,17 @@ async function evaluatePolicyCore(config, toolName, args, context = {}, hooks =
|
|
|
9089
9230
|
checkId: "commands.eval-dynamic"
|
|
9090
9231
|
});
|
|
9091
9232
|
}
|
|
9233
|
+
const stopped = detectSystemProcessStop(shellCommand);
|
|
9234
|
+
if (stopped) {
|
|
9235
|
+
consider("commands.system-processes", {
|
|
9236
|
+
decision: "review",
|
|
9237
|
+
blockedByLabel: "Node9: System Service Stopped",
|
|
9238
|
+
reason: `The AI ${stopped.how} ${stopped.service}: ${stopped.shown}`,
|
|
9239
|
+
ruleDescription: "The AI stops or kills a system service (sshd, dockerd, systemd, a database or web server). Other people and programs on this machine depend on it; confirm this is intentional.",
|
|
9240
|
+
tier: 3,
|
|
9241
|
+
checkId: "commands.system-processes"
|
|
9242
|
+
});
|
|
9243
|
+
}
|
|
9092
9244
|
const builtin = strictestVerdict(candidates);
|
|
9093
9245
|
if (builtin) return builtin;
|
|
9094
9246
|
{
|
|
@@ -10167,7 +10319,7 @@ function matchCanaryArgs(args, values) {
|
|
|
10167
10319
|
return null;
|
|
10168
10320
|
}
|
|
10169
10321
|
}
|
|
10170
|
-
var import_url, import_picomatch, import_safe_regex2, import_picomatch2, import_module, import_picomatch3, import_safe_regex22, import_crypto2, import_crypto3, import_crypto4, import_crypto5, getFilename, __filename2, MAX_REGEX_LENGTH, REGEX_CACHE_MAX, regexCache, aws_default, bash_safe_default, docker_default, filesystem_default, github_default, k8s_default, mongodb_default, postgres_default, project_jail_default, redis_default, finance_default, identity_default, publishing_default, settings_default, branches_default, ACTION_TEMPLATES, ACTION_CHECKS, GAP, prog, httpTo, httpWrite, HTTP_WRITE, HTTP_WRITE_ANY, NOT_STRIPE_TEST, postTo, STRIPE_OBJECTS, APP_SHIELD_SPECS, APP_SHIELDS, APP_SHIELD_NAMES, APP_SERVER_GLOB, GENERAL_ACTION_RULES, BUILTIN_SHIELDS, SSRF_MAX_HOST, METADATA_ADDRESSES, STRICT_TIERS, METADATA_HOSTNAMES, v4Octets, TIER_REASON, CHECK_TEXT, LEVELS, MODE_VALUES, SOFT, STRICT, BLOCK_ALL, LEVEL_CHECKS, ASI, ASI_IDS, PACK_SHIELD_OWASP, PACK_RULE_OWASP, VERDICTS, CHECK_VERDICT_RANK, ALL, BUILTIN_DANGEROUS_WORDS, PRODUCT_CHECKS, SHIELD_RULE_NAME, SHIELD_RULES_FOLDED_INTO_PRODUCT, CHECKS, CHECK_BY_ID, LEGACY_TO_ID, PROJECT_JAIL_BLOCK_READ, OVERRIDE_PREFIX, LABEL_WRAPPERS, LEGACY_READERS, syntax, KINDS, STRUCTS, unknownKinds, INVISIBLE_RE, INVISIBLE_ONE, HOMOGLYPHS, HOMOGLYPH_RE, MAX_BLOBS, MIN_DECODED, BASE64_RUN_RE, HEX_RUN_RE, HEX_ESCAPE_RUN_RE, SYSTEM_AUTH_FILES, SYSTEM_AUTH_DIRS, PASSWORD_HASH_FILES, STARTUP_NAMES, SYSTEM_DIRS, SYSTEM_DIRS_EXEMPT, UPLOAD_SYSTEM_DIRS, AGENT_INSTRUCTION_FILES, AGENT_INSTRUCTION_DIRS, LEGACY_SYSTEM_PATH_RE, MAX_ALTERNATIVES, MAX_CALL_DEPTH, MAX_CALL_WALKS, MAX_XARGS_PAYLOAD, POSITIONAL, MAX_DEPTH, MAX_PAYLOAD_DEPTH, unique, clone, SENDING_STDIN, DOWNLOAD_SHORT_VALUE, DOWNLOAD_LONG_VALUE, DOWNLOAD_OUTPUT_FLAGS, DOWNLOAD_DIR_FLAGS, base, quoteGlob, asWord, ops, MAX_INLINE_CODE, WHAT, OUTSIDE, pyImport, either, PYTHON, NODE, PERL, RUBY, PHP, TABLES, STRING_LITERAL, READ_CALL, ARG, WRAP, STR_PREFIX, WRITE_MODE_LITERAL, WRITE_MODE, WRITE_MODE_AFTER, PERL_WRITE_BEFORE, readCallBefore, READ_BEFORE, READ_AFTER, ASSIGNED, openedName, OPENED_NAME, DOTENV, DOTENV_PATH_OPTION, sharedParser, MESSAGE_FLAGS, SHELL_INTERPRETERS, DOWNLOAD_CMDS, NORMALIZE_CACHE_MAX, normalizeCache, codeBodiesCache, AST_CACHE_MAX, astCache, PARSE_FAIL, INTERPRETER_LINE, PROGRAM_DIR, ACCESS_VIEW_CACHE_MAX, accessViewCache, MAX_READING_PAYLOADS, STDIN_CODE_INTERPRETERS, RUNS_TEXT_ELSEWHERE, defaultExpansionOps, EMPTY_NAMES, VARIABLE_READERS, PLAIN_PROGRAM_NAME, FS_READ_TOOLS, GREP_SHAPE, PATTERN_VERBS, PATTERN_VERB_NAMES, GREP_FILE_OPERANDS, READER_VALUE_LETTERS, FILE_OPERAND_FLAGS, SCP_VALUE_FLAGS, CURL_SOURCE_FLAGS, CURL_VALUE_LETTERS, WGET_VALUE_LETTERS, TAR_VALUE_LETTERS, ZIP_VALUE_LETTERS, RSYNC_VALUE_LETTERS, RSYNC_SKIP, CP_VALUE_LETTERS, INSTALL_VALUE_LETTERS, COPY_VERBS, TAR_MODE_WORD, COPY_VERB_HEADS, FS_OP_PRESCREEN_RE, HOME_CACHE_ALLOWLIST, SENSITIVE_PATH_RULES, AST_FS_REGEX_RULES, SQL_DB_CLIS, SQL_DDL_RE, CHMOD_OPEN_PERM_TOKENS, COMMAND_WRAPPERS, INLINE_INTERPRETER, RUNNER_WRAPPERS, _redirStdinOps, _listOps, WRAPPER_TAKES_TARGET, FIND_EXEC_FLAGS, FS_MUTATION_TOOLS, INTERP_LEADING_TARGET, NODE_VALUE_FLAG, MAX_PAYLOAD_NESTING, payloadNesting, MAX_INLINE_CALLS, INLINE_EXEC_FALLBACK, UNREADABLE_SOURCE, SCRIPT_RUNNERS, SCRIPT_RUNNER_VALUE_FLAGS, MAX_SCRIPT_OPERANDS, NET_BINARIES, VALUE_FLAGS, HOME_VARIABLES, assignmentTable, currentStmtOffset, PAYLOAD_BUDGET, payloadBudget, seenPayloads, UNANALYSABLE_NESTING, ASSIGNMENT_HEADS, andOrOps, ARRAY_MARK, ARRAY_SEP, MAX_CALL_DEPTH2, MAX_CALL_WALKS2, callDepth, callWalks, FS_OP_CACHE_MAX, fsOpCache, stripDotSlash, REDIR_TRUNCATE_OPS, REDIR_FILE_IN_OPS, REDIR_HEREDOC_OPS, FIND_OPTIONS, COPY_RULE_OF, INDIRECT_SHAPE_RE, SOURCES_FILE_RE, SHELL_SET_VARS, pipeOps, callWords, JAILED_GLOB_NAMES, JAILED_DIR_NAMES, shellGlob, GLOB_META, INLINE_INTERP_PRESCREEN_RE, runsInlineInterpreter, isReaderWord, positionalAfter, NONE, UNKNOWN, FORBIDDEN_PATH_SEGMENTS, BASH_TOOL_NAMES, MCP_EXECUTORS, BUILTIN_FIELDS, ARGV_FIELDS, BARE_WORD, MAX_ARGV_CHARACTERS, exempt, RANK, SEQUENCE_OPS, BIP39_ENGLISH, BIP39_PUBLIC_VECTORS, indices, lengths, hash, MAX_MNEMONIC_HASHES, SECRET_VIEW_LIMITS, IBAN_LENGTH, IBAN_BBAN_SHAPE, B58, B58_INDEX, XPRV_VERSIONS, B62, CRC32_TABLE, GITHUB_TOKEN_RE, B64URL, B64URL_INDEX, CASK_TWO_ZERO_SUFFIX, CASK_FOUR_ZERO_SUFFIX, CF_ODD, CF_EVEN, SPANISH_LETTERS, HETU_CHARS, VERHOEFF_D, VERHOEFF_P, MAX, UNTRUSTED_TOOLS, INJECTION_SIGNALS, MENTION_QUOTE_RE, MENTION_WORD_RE, ASSIGNMENT_CONTEXT_RE, DLP_STOPWORDS, REFERENCE_VALUE_RE, IDENTIFIER_VALUE_RE, PATH_VALUE_RE, DOTTED_REFERENCE_RE, CONCATENATION_RE, EMAIL_VALUE_RE, FIXTURE_NAME_RE, DERIVATIVE_NAME_RE, QUERY_CREDENTIAL_VALUE_RE, OTP_SECRET_RE, OTP_DOC_SECRETS, ASSIGNED_SECRET_VALUE_RE, ASSIGNED_SECRET_NAME_RE, NAME_KEYWORD_RE, ARN_CONTEXT_RE, CIPHER_KEY_NAME_RE, CIPHER_NAME_PARTS, CIPHER_KEY_VALUE_RE, LARAVEL_KEY_VALUE_RE, SQL_PASSWORD_VALUE_RE, GRAFANA_KEY_VALUE_RE, BASIC_VALUE_RE, BASIC_PAIR_RE, BASIC_HEADER_RE, BASIC_HEADER_PAIR_RE, BASIC_PLACEHOLDER_RE, BASIC_TEMPLATE_MARKERS, DROPBOX_SECRET_RE, OTP_CAPTURE_RE, DB_URL_PASSWORD_RE, DLP_PATTERNS, DLP_PATTERNS_GLOBAL, SENSITIVE_PATH_PATTERNS, SENSITIVE_PATH_REGEXES, MAX_DEPTH2, MAX_STRING_BYTES, MAX_JSON_PARSE_BYTES, BATCH_SEPARATOR, IMPERATIVE, SECRET_TARGET, GUARD, SIGNALS, DESTINATION_RE, REUSED_SIGNALS, NEVER_NEGATED, NEGATION_BEFORE, RDR_IN, COPY_VERBS2, LITERAL_VERBS, GIT_PRESCREEN_RE, MAX_PAYLOAD_DEPTH2, MAX_ALIAS_DEPTH, CACHE_MAX, cache, PAYLOAD_SHELLS, CONFIG_SCOPE_FLAGS, CONFIG_VALUE_FLAGS, GLOBAL_VALUE_OPTIONS, GLOBAL_FLAG_OPTIONS, MAX_LOOP_ITEMS, GitWalk, POSITIONAL2, NO_VARS, NO_APPENDS, FORCE_PUSH, DESTRUCTIVE, UNREADABLE, PUSH_LONG_VALUE, BRANCH_LONG_VALUE, TAG_LONG_VALUE, CLEAN_LONG_VALUE, RESTORE_LONG_VALUE, CHECKOUT_LONG_VALUE, HOOKS_BYPASS, NO_VERIFY_SUBS, HOOK_KILL_SWITCHES, COMMIT_LONG_VALUE, CHMOD_OPTION_RE, _appendOp, STAGE_ALL, ADD_LONG_VALUE, CHECK_ID, RULE_NAME, INERT_LINE_RE, CHECK_ID2, INSTRUCTION_NAMES, SETTINGS_RE, HOOK_WORDS_RE, SHELLS, NETCATS, NET_CLIENTS, SENDERS, NETCAT_EXEC_LONG, DECL_DUMPS, PROC_ENVIRON_RE, DEV_NET_RE, SOCAT_PROGRAM_RE, SOCAT_NET_RE, PRESCREEN_RE, MAX_PAYLOAD_DEPTH3, CACHE_MAX2, cache2, dupInOp, REVERSE_SHELL_DESCRIPTION, ENV_EXFIL_DESCRIPTION, DYNAMIC_WORD, MULTICALL, SHELL_VALUE_OPTIONS, INTERPRETERS, OutboundWalk, NPM_INSTALL_VERBS, NPM_EXEC_VERBS, PNPM_INSTALL_VERBS, YARN_INSTALL_VERBS, BUN_INSTALL_VERBS, DLX_VERBS, NON_REGISTRY_RE, NPM_NAME_RE, EXACT_SEMVER_RE, NPM_VALUE_FLAGS, PNPM_VALUE_FLAGS, YARN_VALUE_FLAGS, BUN_VALUE_FLAGS, PIP_VALUE_FLAGS, UV_VALUE_FLAGS, POETRY_VALUE_FLAGS, PIPENV_VALUE_FLAGS, PIPX_VALUE_FLAGS, PY_SPEC_RE, PY_EXACT_RE, EXACT_VERSION_RE, GEM_NAME_RE, GEM_VALUE_FLAGS, BUNDLE_VALUE_FLAGS, CRATE_NAME_RE, CARGO_ADD_VALUE_FLAGS, CARGO_INSTALL_VALUE_FLAGS, GO_VALUE_FLAGS, GO_PATH_RE, NUGET_NAME_RE, DOTNET_ADD_VALUE_FLAGS, DOTNET_TOOL_VALUE_FLAGS, NUGET_VALUE_FLAGS, MAVEN_COORD_RE, COMPOSER_NAME_RE, COMPOSER_VALUE_FLAGS, EDITOR_HEADS, EXTENSION_ID_RE, MANAGER_HEADS, SHELLS2, MAX_NESTING, SHELL_VALUE_FLAGS, NPM_FAMILY, PIP_FAMILY, NPM_FETCH_VERBS, PIP_FETCH_VERBS, NPM_FLAGS, PIP_FLAGS, NPM_VARS, PIP_VARS, PRESCREEN_RE2, PIP_ATTACHED_RE, MAX_PAYLOAD_DEPTH4, PUBLIC_REGISTRY_HOSTS, TUNING_FIELDS, MAP_GOVERNED, KNOB_GOVERNED, CONFIGURABLE_CHECK_IDS, DEFAULT_EGRESS_ALLOWLIST, PRIVATE_HOST_SUFFIXES, SOURCE_COMMANDS, SINK_COMMANDS, OBFUSCATORS, SENSITIVE_PATTERNS, FLAGS_WITH_VALUES, DESTINATION_ARGS, MCP_DESTINATION_KEYS, ARGUMENT_SCAN_LIMITS, RUN_CHAR, runChar, RULE_NAME2, DESCRIPTION, DAEMON_CMDLINES, DAEMON_NAMES, KILLALL_NAMES, STOP_SYSTEMCTL, STOP_LAUNCHCTL, PKILL_VALUE_FLAGS, NAME_PRESCREEN_RE, base2, HOME_PID_FILE_RE, VERDICT_RANK, SQL_DML_KEYWORDS, NOT_OVERRIDABLE_CHECKS, MAX_DESTINATIONS, MAX_SCAN_CHARS, EMAIL_RE, URL_RE, IBAN_RE, RECIPIENT_KEYS, DESTRUCTIVE_VERB_RE, PII_EMAIL_RE, PII_SSN_RE, PII_PHONE_RE, PII_CC16_RE, PII_CC15_RE, PII_CC14_RE, PII_CC13_RE, PII_CC19_RE, CARD_PATTERNS, PII_ROUTING_RE, ROUTING_LABEL_RE, ROUTING_LABEL_WINDOW, NATIONAL_ID_SHAPES, NATIONAL_ID_LABEL_RE, NATIONAL_ID_LABEL_CS_RE, idLabelIn, NATIONAL_ID_LABEL_WINDOW, NATIONAL_ID_GUARD_RE, PII_IBAN_RE, REALTIME_PII_PATTERNS, MAX_PII_SCAN_BYTES, IBAN_DESTINATION_KEYS, WHOLE_IBAN_RE, JSON_ESCAPE_RE, JSON_ESCAPES, MASKED_KINDS, ENTRY_RE, IBAN_TEXT_RE, EMAIL_TEXT_RE, ACCOUNT_KEY_RE, ACCOUNT_VALUE_RE, MAX_MASK_DEPTH, EMPTY, CURL_SEND_FLAGS, WGET_SEND_FLAGS, IWR_SEND_FLAGS, WRITE_METHODS, GH_READ, GH_WRITE, GH_HOSTNAME_FLAGS, GH_REPO_VALUE_FLAGS, GH_API_VALUE_FLAGS, GIT_FETCH, PUBLISH, SHELLS3, OWN_HEADS, MAX_DEPTH3, CWD_CHANGERS, TERMINAL_ESCAPE_RE, LOOP_MAX_RECORDS, CANARY_MIN_LENGTH, MAX_TEXT, MAX_DEPTH4, MAX_JSON_PARSE, URL_DEPTH, B64_DEPTH, MIN_SEGMENT, SEPARATORS, stripSeparators, looksText, CANARY_DECODERS, VIEWS, LONG_OUTPUT_THRESHOLD_BYTES;
|
|
10322
|
+
var import_url, import_picomatch, import_safe_regex2, import_picomatch2, import_module, import_picomatch3, import_safe_regex22, import_crypto2, import_crypto3, import_crypto4, import_crypto5, getFilename, __filename2, MAX_REGEX_LENGTH, REGEX_CACHE_MAX, regexCache, aws_default, bash_safe_default, docker_default, filesystem_default, github_default, k8s_default, mongodb_default, postgres_default, project_jail_default, redis_default, finance_default, identity_default, publishing_default, settings_default, branches_default, ACTION_TEMPLATES, ACTION_CHECKS, GAP, prog, httpTo, httpWrite, HTTP_WRITE, HTTP_WRITE_ANY, NOT_STRIPE_TEST, postTo, STRIPE_OBJECTS, APP_SHIELD_SPECS, APP_SHIELDS, APP_SHIELD_NAMES, APP_SERVER_GLOB, GENERAL_ACTION_RULES, BUILTIN_SHIELDS, SSRF_MAX_HOST, METADATA_ADDRESSES, STRICT_TIERS, METADATA_HOSTNAMES, v4Octets, TIER_REASON, CHECK_TEXT, LEVELS, MODE_VALUES, SOFT, STRICT, BLOCK_ALL, LEVEL_CHECKS, ASI, ASI_IDS, PACK_SHIELD_OWASP, PACK_RULE_OWASP, VERDICTS, CHECK_VERDICT_RANK, ALL, BUILTIN_DANGEROUS_WORDS, PRODUCT_CHECKS, SHIELD_RULE_NAME, SHIELD_RULES_FOLDED_INTO_PRODUCT, CHECKS, CHECK_BY_ID, LEGACY_TO_ID, PROJECT_JAIL_BLOCK_READ, OVERRIDE_PREFIX, LABEL_WRAPPERS, LEGACY_READERS, syntax, KINDS, STRUCTS, unknownKinds, INVISIBLE_RE, INVISIBLE_ONE, HOMOGLYPHS, HOMOGLYPH_RE, MAX_BLOBS, MIN_DECODED, BASE64_RUN_RE, HEX_RUN_RE, HEX_ESCAPE_RUN_RE, SYSTEM_AUTH_FILES, SYSTEM_AUTH_DIRS, PASSWORD_HASH_FILES, STARTUP_NAMES, SYSTEM_DIRS, SYSTEM_DIRS_EXEMPT, UPLOAD_SYSTEM_DIRS, AGENT_INSTRUCTION_FILES, AGENT_INSTRUCTION_DIRS, LEGACY_SYSTEM_PATH_RE, MAX_ALTERNATIVES, MAX_CALL_DEPTH, MAX_CALL_WALKS, MAX_XARGS_PAYLOAD, POSITIONAL, MAX_DEPTH, MAX_PAYLOAD_DEPTH, unique, clone, SENDING_STDIN, DOWNLOAD_SHORT_VALUE, DOWNLOAD_LONG_VALUE, DOWNLOAD_OUTPUT_FLAGS, DOWNLOAD_DIR_FLAGS, base, quoteGlob, asWord, ops, INFRASTRUCTURE_SERVICES, SERVER_SERVICES, SYSTEM_SERVICES, escape, SERVICE_WORD_RE, INIT_PATTERN_RE, UNIT_ALIASES, MAX_INLINE_CODE, WHAT, KILL_API, OUTSIDE, pyImport, either, PYTHON, NODE, PERL, RUBY, PHP, TABLES, STRING_LITERAL, READ_CALL, ARG, WRAP, STR_PREFIX, WRITE_MODE_LITERAL, WRITE_MODE, WRITE_MODE_AFTER, PERL_WRITE_BEFORE, readCallBefore, READ_BEFORE, READ_AFTER, ASSIGNED, openedName, OPENED_NAME, DOTENV, DOTENV_PATH_OPTION, sharedParser, MESSAGE_FLAGS, SHELL_INTERPRETERS, DOWNLOAD_CMDS, NORMALIZE_CACHE_MAX, normalizeCache, codeBodiesCache, AST_CACHE_MAX, astCache, PARSE_FAIL, INTERPRETER_LINE, PROGRAM_DIR, ACCESS_VIEW_CACHE_MAX, accessViewCache, MAX_READING_PAYLOADS, STDIN_CODE_INTERPRETERS, RUNS_TEXT_ELSEWHERE, defaultExpansionOps, EMPTY_NAMES, VARIABLE_READERS, PLAIN_PROGRAM_NAME, FS_READ_TOOLS, GREP_SHAPE, PATTERN_VERBS, PATTERN_VERB_NAMES, GREP_FILE_OPERANDS, READER_VALUE_LETTERS, FILE_OPERAND_FLAGS, SCP_VALUE_FLAGS, CURL_SOURCE_FLAGS, CURL_VALUE_LETTERS, WGET_VALUE_LETTERS, TAR_VALUE_LETTERS, ZIP_VALUE_LETTERS, RSYNC_VALUE_LETTERS, RSYNC_SKIP, CP_VALUE_LETTERS, INSTALL_VALUE_LETTERS, COPY_VERBS, TAR_MODE_WORD, COPY_VERB_HEADS, FS_OP_PRESCREEN_RE, HOME_CACHE_ALLOWLIST, SENSITIVE_PATH_RULES, AST_FS_REGEX_RULES, SQL_DB_CLIS, SQL_DDL_RE, CHMOD_OPEN_PERM_TOKENS, COMMAND_WRAPPERS, INLINE_INTERPRETER, RUNNER_WRAPPERS, _redirStdinOps, _listOps, WRAPPER_TAKES_TARGET, FIND_EXEC_FLAGS, FS_MUTATION_TOOLS, INTERP_LEADING_TARGET, NODE_VALUE_FLAG, MAX_PAYLOAD_NESTING, payloadNesting, MAX_INLINE_CALLS, INLINE_EXEC_FALLBACK, UNREADABLE_SOURCE, SCRIPT_RUNNERS, SCRIPT_RUNNER_VALUE_FLAGS, MAX_SCRIPT_OPERANDS, NET_BINARIES, VALUE_FLAGS, HOME_VARIABLES, assignmentTable, currentStmtOffset, PAYLOAD_BUDGET, payloadBudget, seenPayloads, UNANALYSABLE_NESTING, ASSIGNMENT_HEADS, andOrOps, ARRAY_MARK, ARRAY_SEP, MAX_CALL_DEPTH2, MAX_CALL_WALKS2, callDepth, callWalks, FS_OP_CACHE_MAX, fsOpCache, stripDotSlash, REDIR_TRUNCATE_OPS, REDIR_FILE_IN_OPS, REDIR_HEREDOC_OPS, FIND_OPTIONS, COPY_RULE_OF, INDIRECT_SHAPE_RE, SOURCES_FILE_RE, SHELL_SET_VARS, pipeOps, callWords, JAILED_GLOB_NAMES, JAILED_DIR_NAMES, shellGlob, GLOB_META, INLINE_INTERP_PRESCREEN_RE, runsInlineInterpreter, isReaderWord, positionalAfter, NONE, UNKNOWN, FORBIDDEN_PATH_SEGMENTS, BASH_TOOL_NAMES, MCP_EXECUTORS, BUILTIN_FIELDS, ARGV_FIELDS, BARE_WORD, MAX_ARGV_CHARACTERS, exempt, RANK, SEQUENCE_OPS, BIP39_ENGLISH, BIP39_PUBLIC_VECTORS, indices, lengths, hash, MAX_MNEMONIC_HASHES, SECRET_VIEW_LIMITS, IBAN_LENGTH, IBAN_BBAN_SHAPE, B58, B58_INDEX, XPRV_VERSIONS, B62, CRC32_TABLE, GITHUB_TOKEN_RE, B64URL, B64URL_INDEX, CASK_TWO_ZERO_SUFFIX, CASK_FOUR_ZERO_SUFFIX, CF_ODD, CF_EVEN, SPANISH_LETTERS, HETU_CHARS, VERHOEFF_D, VERHOEFF_P, MAX, UNTRUSTED_TOOLS, INJECTION_SIGNALS, MENTION_QUOTE_RE, MENTION_WORD_RE, ASSIGNMENT_CONTEXT_RE, DLP_STOPWORDS, REFERENCE_VALUE_RE, IDENTIFIER_VALUE_RE, PATH_VALUE_RE, DOTTED_REFERENCE_RE, CONCATENATION_RE, EMAIL_VALUE_RE, FIXTURE_NAME_RE, DERIVATIVE_NAME_RE, QUERY_CREDENTIAL_VALUE_RE, OTP_SECRET_RE, OTP_DOC_SECRETS, ASSIGNED_SECRET_VALUE_RE, ASSIGNED_SECRET_NAME_RE, NAME_KEYWORD_RE, ARN_CONTEXT_RE, CIPHER_KEY_NAME_RE, CIPHER_NAME_PARTS, CIPHER_KEY_VALUE_RE, LARAVEL_KEY_VALUE_RE, SQL_PASSWORD_VALUE_RE, GRAFANA_KEY_VALUE_RE, BASIC_VALUE_RE, BASIC_PAIR_RE, BASIC_HEADER_RE, BASIC_HEADER_PAIR_RE, BASIC_PLACEHOLDER_RE, BASIC_TEMPLATE_MARKERS, DROPBOX_SECRET_RE, OTP_CAPTURE_RE, DB_URL_PASSWORD_RE, DLP_PATTERNS, DLP_PATTERNS_GLOBAL, SENSITIVE_PATH_PATTERNS, SENSITIVE_PATH_REGEXES, MAX_DEPTH2, MAX_STRING_BYTES, MAX_JSON_PARSE_BYTES, BATCH_SEPARATOR, IMPERATIVE, SECRET_TARGET, GUARD, SIGNALS, DESTINATION_RE, REUSED_SIGNALS, NEVER_NEGATED, NEGATION_BEFORE, RDR_IN, COPY_VERBS2, LITERAL_VERBS, GIT_PRESCREEN_RE, MAX_PAYLOAD_DEPTH2, MAX_ALIAS_DEPTH, CACHE_MAX, cache, PAYLOAD_SHELLS, CONFIG_SCOPE_FLAGS, CONFIG_VALUE_FLAGS, GLOBAL_VALUE_OPTIONS, GLOBAL_FLAG_OPTIONS, MAX_LOOP_ITEMS, GitWalk, POSITIONAL2, NO_VARS, NO_APPENDS, FORCE_PUSH, DESTRUCTIVE, UNREADABLE, PUSH_LONG_VALUE, BRANCH_LONG_VALUE, TAG_LONG_VALUE, CLEAN_LONG_VALUE, RESTORE_LONG_VALUE, CHECKOUT_LONG_VALUE, HOOKS_BYPASS, NO_VERIFY_SUBS, HOOK_KILL_SWITCHES, COMMIT_LONG_VALUE, CHMOD_OPTION_RE, _appendOp, STAGE_ALL, ADD_LONG_VALUE, CHECK_ID, RULE_NAME, INERT_LINE_RE, CHECK_ID2, INSTRUCTION_NAMES, SETTINGS_RE, HOOK_WORDS_RE, SHELLS, NETCATS, NET_CLIENTS, SENDERS, NETCAT_EXEC_LONG, DECL_DUMPS, PROC_ENVIRON_RE, DEV_NET_RE, SOCAT_PROGRAM_RE, SOCAT_NET_RE, PRESCREEN_RE, MAX_PAYLOAD_DEPTH3, CACHE_MAX2, cache2, dupInOp, REVERSE_SHELL_DESCRIPTION, ENV_EXFIL_DESCRIPTION, DYNAMIC_WORD, MULTICALL, SHELL_VALUE_OPTIONS, INTERPRETERS, OutboundWalk, NPM_INSTALL_VERBS, NPM_EXEC_VERBS, PNPM_INSTALL_VERBS, YARN_INSTALL_VERBS, BUN_INSTALL_VERBS, DLX_VERBS, NON_REGISTRY_RE, NPM_NAME_RE, EXACT_SEMVER_RE, NPM_VALUE_FLAGS, PNPM_VALUE_FLAGS, YARN_VALUE_FLAGS, BUN_VALUE_FLAGS, PIP_VALUE_FLAGS, UV_VALUE_FLAGS, POETRY_VALUE_FLAGS, PIPENV_VALUE_FLAGS, PIPX_VALUE_FLAGS, PY_SPEC_RE, PY_EXACT_RE, EXACT_VERSION_RE, GEM_NAME_RE, GEM_VALUE_FLAGS, BUNDLE_VALUE_FLAGS, CRATE_NAME_RE, CARGO_ADD_VALUE_FLAGS, CARGO_INSTALL_VALUE_FLAGS, GO_VALUE_FLAGS, GO_PATH_RE, NUGET_NAME_RE, DOTNET_ADD_VALUE_FLAGS, DOTNET_TOOL_VALUE_FLAGS, NUGET_VALUE_FLAGS, MAVEN_COORD_RE, COMPOSER_NAME_RE, COMPOSER_VALUE_FLAGS, EDITOR_HEADS, EXTENSION_ID_RE, MANAGER_HEADS, SHELLS2, MAX_NESTING, SHELL_VALUE_FLAGS, NPM_FAMILY, PIP_FAMILY, NPM_FETCH_VERBS, PIP_FETCH_VERBS, NPM_FLAGS, PIP_FLAGS, NPM_VARS, PIP_VARS, PRESCREEN_RE2, PIP_ATTACHED_RE, MAX_PAYLOAD_DEPTH4, PUBLIC_REGISTRY_HOSTS, TUNING_FIELDS, MAP_GOVERNED, KNOB_GOVERNED, CONFIGURABLE_CHECK_IDS, DEFAULT_EGRESS_ALLOWLIST, PRIVATE_HOST_SUFFIXES, SOURCE_COMMANDS, SINK_COMMANDS, OBFUSCATORS, SENSITIVE_PATTERNS, FLAGS_WITH_VALUES, DESTINATION_ARGS, MCP_DESTINATION_KEYS, ARGUMENT_SCAN_LIMITS, RUN_CHAR, runChar, PRESCREEN_RE3, KILL_SIGNAL_RE, SYSTEMCTL_STOP_VERBS, LAUNCHCTL_UNLOAD_VERBS, LAUNCH_DAEMONS_RE, MAX_PAYLOAD_DEPTH5, RULE_NAME2, DESCRIPTION, DAEMON_CMDLINES, DAEMON_NAMES, KILLALL_NAMES, STOP_SYSTEMCTL, STOP_LAUNCHCTL, PKILL_VALUE_FLAGS, NAME_PRESCREEN_RE, base2, HOME_PID_FILE_RE, VERDICT_RANK, SQL_DML_KEYWORDS, NOT_OVERRIDABLE_CHECKS, MAX_DESTINATIONS, MAX_SCAN_CHARS, EMAIL_RE, URL_RE, IBAN_RE, RECIPIENT_KEYS, DESTRUCTIVE_VERB_RE, PII_EMAIL_RE, PII_SSN_RE, PII_PHONE_RE, PII_CC16_RE, PII_CC15_RE, PII_CC14_RE, PII_CC13_RE, PII_CC19_RE, CARD_PATTERNS, PII_ROUTING_RE, ROUTING_LABEL_RE, ROUTING_LABEL_WINDOW, NATIONAL_ID_SHAPES, NATIONAL_ID_LABEL_RE, NATIONAL_ID_LABEL_CS_RE, idLabelIn, NATIONAL_ID_LABEL_WINDOW, NATIONAL_ID_GUARD_RE, PII_IBAN_RE, REALTIME_PII_PATTERNS, MAX_PII_SCAN_BYTES, IBAN_DESTINATION_KEYS, WHOLE_IBAN_RE, JSON_ESCAPE_RE, JSON_ESCAPES, MASKED_KINDS, ENTRY_RE, IBAN_TEXT_RE, EMAIL_TEXT_RE, ACCOUNT_KEY_RE, ACCOUNT_VALUE_RE, MAX_MASK_DEPTH, EMPTY, CURL_SEND_FLAGS, WGET_SEND_FLAGS, IWR_SEND_FLAGS, WRITE_METHODS, GH_READ, GH_WRITE, GH_HOSTNAME_FLAGS, GH_REPO_VALUE_FLAGS, GH_API_VALUE_FLAGS, GIT_FETCH, PUBLISH, SHELLS3, OWN_HEADS, MAX_DEPTH3, CWD_CHANGERS, TERMINAL_ESCAPE_RE, LOOP_MAX_RECORDS, CANARY_MIN_LENGTH, MAX_TEXT, MAX_DEPTH4, MAX_JSON_PARSE, URL_DEPTH, B64_DEPTH, MIN_SEGMENT, SEPARATORS, stripSeparators, looksText, CANARY_DECODERS, VIEWS, LONG_OUTPUT_THRESHOLD_BYTES;
|
|
10171
10323
|
var init_dist = __esm({
|
|
10172
10324
|
"packages/policy-engine/dist/index.mjs"() {
|
|
10173
10325
|
"use strict";
|
|
@@ -12053,6 +12205,11 @@ var init_dist = __esm({
|
|
|
12053
12205
|
example: "/tmp/build-helper --serve",
|
|
12054
12206
|
advice: "Keep Review. Malware often runs from /tmp."
|
|
12055
12207
|
},
|
|
12208
|
+
"commands.system-processes": {
|
|
12209
|
+
plain: "The agent stops or kills a system service: sshd, dockerd, containerd, systemd, kubelet, cron, the firewall, the display server, or a database or web server (nginx, apache, mysql, postgres, redis, mongo). Directly (pkill sshd, systemctl stop docker, kill of pid 1) or through the process list (a script that finds the processes of a name and kills them). Killing a process by its number, pkill node, killall python and systemctl restart are not this check.",
|
|
12210
|
+
example: "ps -eo pid,cmd | grep sshd | awk '{print $1}' | xargs kill -9",
|
|
12211
|
+
advice: "Keep Review: a stopped service takes other people and programs down with it. Set Log on a machine where agents manage local servers all day."
|
|
12212
|
+
},
|
|
12056
12213
|
"commands.disk-destroy": {
|
|
12057
12214
|
plain: "The agent formats, overwrites or securely erases a disk or file.",
|
|
12058
12215
|
example: "dd if=/dev/zero of=/dev/sda",
|
|
@@ -12222,6 +12379,7 @@ var init_dist = __esm({
|
|
|
12222
12379
|
"commands.sql-no-where": "log",
|
|
12223
12380
|
"commands.temp-binary": "log",
|
|
12224
12381
|
"commands.disk-destroy": "log",
|
|
12382
|
+
"commands.system-processes": "log",
|
|
12225
12383
|
"commands.dangerous-word": "log",
|
|
12226
12384
|
"files.system-dirs": "log",
|
|
12227
12385
|
"files.shell-startup": "log",
|
|
@@ -12540,6 +12698,16 @@ var init_dist = __esm({
|
|
|
12540
12698
|
defaultValue: "review",
|
|
12541
12699
|
legacy: ["Manual Nuclear Protection"]
|
|
12542
12700
|
},
|
|
12701
|
+
{
|
|
12702
|
+
id: "commands.system-processes",
|
|
12703
|
+
group: "commands",
|
|
12704
|
+
owasp: "ASI02",
|
|
12705
|
+
title: "Stops a system service",
|
|
12706
|
+
catches: "kill, pkill, killall, systemctl stop or kill, service stop or launchctl unload aimed at a system service (sshd, dockerd, systemd, kubelet, cron, a database or web server), or a script that walks the process list for one of those names and kills what it finds",
|
|
12707
|
+
values: ALL,
|
|
12708
|
+
defaultValue: "review",
|
|
12709
|
+
legacy: ["Node9: System Service Stopped"]
|
|
12710
|
+
},
|
|
12543
12711
|
{
|
|
12544
12712
|
id: "commands.dangerous-word",
|
|
12545
12713
|
group: "commands",
|
|
@@ -13199,6 +13367,82 @@ var init_dist = __esm({
|
|
|
13199
13367
|
)
|
|
13200
13368
|
)
|
|
13201
13369
|
}));
|
|
13370
|
+
INFRASTRUCTURE_SERVICES = [
|
|
13371
|
+
"init",
|
|
13372
|
+
"sshd",
|
|
13373
|
+
"dockerd",
|
|
13374
|
+
"docker-proxy",
|
|
13375
|
+
"containerd",
|
|
13376
|
+
"containerd-shim",
|
|
13377
|
+
"docker-containerd-shim",
|
|
13378
|
+
"runc",
|
|
13379
|
+
"systemd-journald",
|
|
13380
|
+
"journald",
|
|
13381
|
+
"systemd-logind",
|
|
13382
|
+
"systemd-udevd",
|
|
13383
|
+
"udevd",
|
|
13384
|
+
"dbus-daemon",
|
|
13385
|
+
"polkitd",
|
|
13386
|
+
"sssd",
|
|
13387
|
+
"kubelet",
|
|
13388
|
+
"kube-apiserver",
|
|
13389
|
+
"crond",
|
|
13390
|
+
"cron",
|
|
13391
|
+
"atd",
|
|
13392
|
+
"auditd",
|
|
13393
|
+
"rsyslogd",
|
|
13394
|
+
"syslogd",
|
|
13395
|
+
"chronyd",
|
|
13396
|
+
"ntpd",
|
|
13397
|
+
"NetworkManager",
|
|
13398
|
+
"wpa_supplicant",
|
|
13399
|
+
"dhclient",
|
|
13400
|
+
"avahi-daemon",
|
|
13401
|
+
"firewalld",
|
|
13402
|
+
"ufw",
|
|
13403
|
+
"cupsd",
|
|
13404
|
+
"snapd",
|
|
13405
|
+
"bluetoothd",
|
|
13406
|
+
"Xorg",
|
|
13407
|
+
"Xwayland",
|
|
13408
|
+
"gdm",
|
|
13409
|
+
"sddm",
|
|
13410
|
+
"lightdm"
|
|
13411
|
+
];
|
|
13412
|
+
SERVER_SERVICES = [
|
|
13413
|
+
"nginx",
|
|
13414
|
+
"apache2",
|
|
13415
|
+
"httpd",
|
|
13416
|
+
"mysqld",
|
|
13417
|
+
"mariadbd",
|
|
13418
|
+
"postgres",
|
|
13419
|
+
"postgresql",
|
|
13420
|
+
"redis-server",
|
|
13421
|
+
"mongod"
|
|
13422
|
+
];
|
|
13423
|
+
SYSTEM_SERVICES = [...INFRASTRUCTURE_SERVICES, ...SERVER_SERVICES];
|
|
13424
|
+
escape = (s) => s.replace(/[.*+?^${}()|[\]\\-]/g, "\\$&");
|
|
13425
|
+
SERVICE_WORD_RE = new RegExp(
|
|
13426
|
+
`(?:^|[^A-Za-z0-9_.-])(${SYSTEM_SERVICES.map(escape).join("|")})(?![A-Za-z0-9_.-])`,
|
|
13427
|
+
"i"
|
|
13428
|
+
);
|
|
13429
|
+
INIT_PATTERN_RE = /(?:["'*])init(?:["'*])/;
|
|
13430
|
+
UNIT_ALIASES = {
|
|
13431
|
+
docker: "dockerd",
|
|
13432
|
+
ssh: "sshd",
|
|
13433
|
+
mysql: "mysqld",
|
|
13434
|
+
mariadb: "mariadbd",
|
|
13435
|
+
redis: "redis-server",
|
|
13436
|
+
mongodb: "mongod",
|
|
13437
|
+
apache: "apache2",
|
|
13438
|
+
rsyslog: "rsyslogd",
|
|
13439
|
+
"systemd-networkd": "systemd-udevd",
|
|
13440
|
+
dbus: "dbus-daemon",
|
|
13441
|
+
avahi: "avahi-daemon",
|
|
13442
|
+
bluetooth: "bluetoothd",
|
|
13443
|
+
cups: "cupsd",
|
|
13444
|
+
chrony: "chronyd"
|
|
13445
|
+
};
|
|
13202
13446
|
MAX_INLINE_CODE = 64 * 1024;
|
|
13203
13447
|
WHAT = {
|
|
13204
13448
|
deletes: "deletes files",
|
|
@@ -13210,7 +13454,15 @@ var init_dist = __esm({
|
|
|
13210
13454
|
"builds-code": "runs code it builds at run time",
|
|
13211
13455
|
permissions: "changes permissions or ownership",
|
|
13212
13456
|
monitors: "captures the screen, the clipboard or the keyboard",
|
|
13213
|
-
amplifies: "writes or sends in an endless loop"
|
|
13457
|
+
amplifies: "writes or sends in an endless loop",
|
|
13458
|
+
"kills-service": "stops a system service"
|
|
13459
|
+
};
|
|
13460
|
+
KILL_API = {
|
|
13461
|
+
python: /\bos\.kill(?:pg)?\s*\(|\.(?:kill|terminate)\s*\(|\bsignal\.SIGKILL\b/,
|
|
13462
|
+
node: /\bprocess\.kill\s*\(|\.kill\s*\(\s*['"`]?SIG/,
|
|
13463
|
+
perl: /\bkill\s+(?:-?\d+|['"]?[A-Z]+['"]?)\s*,/,
|
|
13464
|
+
ruby: /\bProcess\.kill\b/,
|
|
13465
|
+
php: /\bposix_kill\s*\(/
|
|
13214
13466
|
};
|
|
13215
13467
|
OUTSIDE = String.raw`(?:~|\.\.[\\/]|/(?!(?:tmp|var/tmp)/(?![^'"\n]*\.\.)|dev/(?:null|stdout|stderr)\b))`;
|
|
13216
13468
|
pyImport = (mods) => new RegExp(String.raw`\b(?:import\s+(?:[\w.]+(?:\s+as\s+\w+)?\s*,\s*)*|from\s+)(?:${mods})\b`);
|
|
@@ -19101,6 +19353,7 @@ ${text}` : text);
|
|
|
19101
19353
|
"commands.sql-no-where",
|
|
19102
19354
|
"commands.temp-binary",
|
|
19103
19355
|
"commands.disk-destroy",
|
|
19356
|
+
"commands.system-processes",
|
|
19104
19357
|
"commands.dangerous-word",
|
|
19105
19358
|
"commands.node9-disarm",
|
|
19106
19359
|
"commands.reverse-shell",
|
|
@@ -19315,6 +19568,12 @@ ${text}` : text);
|
|
|
19315
19568
|
const char = value[index] ?? "";
|
|
19316
19569
|
return RUN_CHAR.test(char) || char !== "" && isInvisibleChar(char);
|
|
19317
19570
|
};
|
|
19571
|
+
PRESCREEN_RE3 = /\b(?:kill|pkill|killall|systemctl|service|launchctl|xargs)\b/;
|
|
19572
|
+
KILL_SIGNAL_RE = /^-(?:\d+|s|SIG[A-Z]+|[A-Z]{2,})$/;
|
|
19573
|
+
SYSTEMCTL_STOP_VERBS = /* @__PURE__ */ new Set(["stop", "kill", "disable", "mask"]);
|
|
19574
|
+
LAUNCHCTL_UNLOAD_VERBS = /* @__PURE__ */ new Set(["unload", "bootout", "remove"]);
|
|
19575
|
+
LAUNCH_DAEMONS_RE = /(?:^|\/)(?:System\/)?Library\/LaunchDaemons\//;
|
|
19576
|
+
MAX_PAYLOAD_DEPTH5 = 3;
|
|
19318
19577
|
RULE_NAME2 = "review-node9-disarm";
|
|
19319
19578
|
DESCRIPTION = "The AI wants to stop node9, remove it, or change its own files. These are your commands to run, not the agent's: with the daemon stopped the outside-content and taint checks are off.";
|
|
19320
19579
|
DAEMON_CMDLINES = [
|