@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/hook.js
CHANGED
|
@@ -1687,6 +1687,26 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
1687
1687
|
}
|
|
1688
1688
|
return out;
|
|
1689
1689
|
}
|
|
1690
|
+
function serviceNamedIn(text) {
|
|
1691
|
+
const re = new RegExp(SERVICE_WORD_RE.source, "gi");
|
|
1692
|
+
for (let m = re.exec(text); m; m = re.exec(text)) {
|
|
1693
|
+
const lower2 = m[1].toLowerCase();
|
|
1694
|
+
if (lower2 === "init" && !INIT_PATTERN_RE.test(text)) continue;
|
|
1695
|
+
return SYSTEM_SERVICES.find((s) => s.toLowerCase() === lower2) ?? m[1];
|
|
1696
|
+
}
|
|
1697
|
+
return null;
|
|
1698
|
+
}
|
|
1699
|
+
function serviceOf(name) {
|
|
1700
|
+
const leaf = name.replace(/^.*[\\/]/, "").replace(/\.service$/, "").replace(/@.*$/, "");
|
|
1701
|
+
const lower2 = leaf.toLowerCase();
|
|
1702
|
+
return SYSTEM_SERVICES.find((s) => s.toLowerCase() === lower2) ?? UNIT_ALIASES[lower2] ?? null;
|
|
1703
|
+
}
|
|
1704
|
+
function killsService(language, code) {
|
|
1705
|
+
const api = KILL_API[language].exec(code);
|
|
1706
|
+
if (!api) return null;
|
|
1707
|
+
const service = serviceNamedIn(code);
|
|
1708
|
+
return service ? `${api[0].trim()} with ${service}` : null;
|
|
1709
|
+
}
|
|
1690
1710
|
function inlineLanguageOf(interp) {
|
|
1691
1711
|
const i = interp.toLowerCase();
|
|
1692
1712
|
if (/^python[\d.]*$/.test(i)) return "python";
|
|
@@ -1761,6 +1781,15 @@ function judgeInlineCode(language, code, isProtected) {
|
|
|
1761
1781
|
return { outcome: "unreadable", what: "is too long for node9 to read" };
|
|
1762
1782
|
}
|
|
1763
1783
|
const text = language === "python" ? resolvePythonAliases(code) : code;
|
|
1784
|
+
const killed = killsService(language, text);
|
|
1785
|
+
if (killed) {
|
|
1786
|
+
return {
|
|
1787
|
+
outcome: "dangerous",
|
|
1788
|
+
what: WHAT["kills-service"],
|
|
1789
|
+
evidence: killed.slice(0, 60),
|
|
1790
|
+
category: "kills-service"
|
|
1791
|
+
};
|
|
1792
|
+
}
|
|
1764
1793
|
for (const [category, re] of TABLES[language]) {
|
|
1765
1794
|
const m = re.exec(text);
|
|
1766
1795
|
if (!m) continue;
|
|
@@ -8542,6 +8571,118 @@ function scanArgumentSecrets(args) {
|
|
|
8542
8571
|
severity: "review"
|
|
8543
8572
|
} : null;
|
|
8544
8573
|
}
|
|
8574
|
+
function shownOf2(words) {
|
|
8575
|
+
return words.map((w) => w ?? "$?").join(" ").slice(0, 80);
|
|
8576
|
+
}
|
|
8577
|
+
function withoutComments(command) {
|
|
8578
|
+
return command.split("\n").map((line) => {
|
|
8579
|
+
for (let i = 0; i < line.length; i++) {
|
|
8580
|
+
if (line[i] === "#" && (i === 0 || line[i - 1] === " " || line[i - 1] === " ")) {
|
|
8581
|
+
return line.slice(0, i);
|
|
8582
|
+
}
|
|
8583
|
+
}
|
|
8584
|
+
return line;
|
|
8585
|
+
}).join("\n");
|
|
8586
|
+
}
|
|
8587
|
+
function detectSystemProcessStop(command, depth = 0) {
|
|
8588
|
+
if (!PRESCREEN_RE3.test(command)) return null;
|
|
8589
|
+
const named = serviceNamedIn(withoutComments(command));
|
|
8590
|
+
let direct = null;
|
|
8591
|
+
let dynamicKill = null;
|
|
8592
|
+
walkCommandScope(command, (node) => {
|
|
8593
|
+
const n = node;
|
|
8594
|
+
if (direct || !n || n.kind !== "CallExpr") return true;
|
|
8595
|
+
const words = (n.Args || []).map((a) => resolveWordLiteral(a));
|
|
8596
|
+
if (words.length === 0) return true;
|
|
8597
|
+
if (baseWord(words[0]) === "xargs" && words.some((w) => w !== null && baseWord(w) === "kill")) {
|
|
8598
|
+
dynamicKill ??= shownOf2(words);
|
|
8599
|
+
return true;
|
|
8600
|
+
}
|
|
8601
|
+
if (depth < MAX_PAYLOAD_DEPTH5) {
|
|
8602
|
+
const payload = literalShellPayload(words, baseWord(words[0]));
|
|
8603
|
+
if (payload !== null) {
|
|
8604
|
+
const inner = detectSystemProcessStop(payload, depth + 1);
|
|
8605
|
+
if (inner) direct = inner;
|
|
8606
|
+
return true;
|
|
8607
|
+
}
|
|
8608
|
+
}
|
|
8609
|
+
const head = unwrapCommandHead(words);
|
|
8610
|
+
if (head >= words.length) return true;
|
|
8611
|
+
const name = baseWord(words[head]);
|
|
8612
|
+
const rest = words.slice(head + 1);
|
|
8613
|
+
const shown = shownOf2(words);
|
|
8614
|
+
const viaXargs = words.slice(0, head).some((w) => w !== null && baseWord(w) === "xargs");
|
|
8615
|
+
if (name === "kill") {
|
|
8616
|
+
const targets = [];
|
|
8617
|
+
for (let i = 0; i < rest.length; i++) {
|
|
8618
|
+
const w = rest[i];
|
|
8619
|
+
if (i === 0 && w !== null && KILL_SIGNAL_RE.test(w)) {
|
|
8620
|
+
if (w === "-s") i++;
|
|
8621
|
+
continue;
|
|
8622
|
+
}
|
|
8623
|
+
if (w === "--") continue;
|
|
8624
|
+
targets.push(w);
|
|
8625
|
+
}
|
|
8626
|
+
if (targets.some((t) => t === "1" || t === "-1")) {
|
|
8627
|
+
direct = { service: "init (pid 1)", how: "kills", shown };
|
|
8628
|
+
} else if (viaXargs || targets.some((t) => t === null)) {
|
|
8629
|
+
dynamicKill ??= shown;
|
|
8630
|
+
}
|
|
8631
|
+
return true;
|
|
8632
|
+
}
|
|
8633
|
+
if (name === "pkill" || name === "killall") {
|
|
8634
|
+
let skipValue = false;
|
|
8635
|
+
for (const w of rest) {
|
|
8636
|
+
if (skipValue) {
|
|
8637
|
+
skipValue = false;
|
|
8638
|
+
continue;
|
|
8639
|
+
}
|
|
8640
|
+
if (w !== null && w.startsWith("-")) {
|
|
8641
|
+
if (/^-(?:u|U|g|G|t|P|s|n|o|r|q|-signal|-uid|-user)$/.test(w)) skipValue = true;
|
|
8642
|
+
continue;
|
|
8643
|
+
}
|
|
8644
|
+
if (w === null) {
|
|
8645
|
+
dynamicKill ??= shown;
|
|
8646
|
+
continue;
|
|
8647
|
+
}
|
|
8648
|
+
const service = serviceOf(w) ?? serviceNamedIn(w);
|
|
8649
|
+
if (service) direct = { service, how: "kills", shown };
|
|
8650
|
+
}
|
|
8651
|
+
return true;
|
|
8652
|
+
}
|
|
8653
|
+
if (name === "systemctl") {
|
|
8654
|
+
if (rest.includes("--user")) return true;
|
|
8655
|
+
const verb = rest.find((w) => w !== null && !w.startsWith("-"));
|
|
8656
|
+
if (verb === void 0 || verb === null || !SYSTEMCTL_STOP_VERBS.has(verb)) return true;
|
|
8657
|
+
for (const w of rest.slice(rest.indexOf(verb) + 1)) {
|
|
8658
|
+
const service = w === null ? null : serviceOf(w);
|
|
8659
|
+
if (service) direct = { service, how: verb === "kill" ? "kills" : "stops", shown };
|
|
8660
|
+
}
|
|
8661
|
+
return true;
|
|
8662
|
+
}
|
|
8663
|
+
if (name === "service") {
|
|
8664
|
+
const [unit, verb] = rest;
|
|
8665
|
+
const service = typeof unit === "string" ? serviceOf(unit) : null;
|
|
8666
|
+
if (service && verb === "stop") direct = { service, how: "stops", shown };
|
|
8667
|
+
return true;
|
|
8668
|
+
}
|
|
8669
|
+
if (name === "launchctl") {
|
|
8670
|
+
const verb = rest.find((w) => w !== null && !w.startsWith("-"));
|
|
8671
|
+
if (verb === void 0 || verb === null || !LAUNCHCTL_UNLOAD_VERBS.has(verb)) return true;
|
|
8672
|
+
const daemon = rest.find((w) => w !== null && LAUNCH_DAEMONS_RE.test(w));
|
|
8673
|
+
if (daemon) {
|
|
8674
|
+
direct = { service: daemon.replace(/^.*\//, ""), how: "unloads the system daemon", shown };
|
|
8675
|
+
}
|
|
8676
|
+
return true;
|
|
8677
|
+
}
|
|
8678
|
+
return true;
|
|
8679
|
+
});
|
|
8680
|
+
if (direct) return direct;
|
|
8681
|
+
if (dynamicKill !== null && named) {
|
|
8682
|
+
return { service: named, how: "kills the processes of", shown: dynamicKill };
|
|
8683
|
+
}
|
|
8684
|
+
return null;
|
|
8685
|
+
}
|
|
8545
8686
|
function patternSelects(pattern, targets) {
|
|
8546
8687
|
const pieces = pattern.toLowerCase().split(/[\\^$.*+?()[\]{}|]+/).filter(Boolean);
|
|
8547
8688
|
if (pieces.length === 0) return false;
|
|
@@ -9161,6 +9302,17 @@ async function evaluatePolicyCore(config, toolName, args, context = {}, hooks =
|
|
|
9161
9302
|
checkId: "commands.eval-dynamic"
|
|
9162
9303
|
});
|
|
9163
9304
|
}
|
|
9305
|
+
const stopped = detectSystemProcessStop(shellCommand);
|
|
9306
|
+
if (stopped) {
|
|
9307
|
+
consider("commands.system-processes", {
|
|
9308
|
+
decision: "review",
|
|
9309
|
+
blockedByLabel: "Node9: System Service Stopped",
|
|
9310
|
+
reason: `The AI ${stopped.how} ${stopped.service}: ${stopped.shown}`,
|
|
9311
|
+
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.",
|
|
9312
|
+
tier: 3,
|
|
9313
|
+
checkId: "commands.system-processes"
|
|
9314
|
+
});
|
|
9315
|
+
}
|
|
9164
9316
|
const builtin = strictestVerdict(candidates);
|
|
9165
9317
|
if (builtin) return builtin;
|
|
9166
9318
|
{
|
|
@@ -10242,7 +10394,7 @@ function matchCanaryArgs(args, values) {
|
|
|
10242
10394
|
return null;
|
|
10243
10395
|
}
|
|
10244
10396
|
}
|
|
10245
|
-
var import_url, import_picomatch, import_safe_regex2, import_picomatch2, import_module, import_picomatch3, import_safe_regex22, import_crypto, import_crypto2, import_crypto3, import_crypto4, 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, DLP_SCAN_LIMITS, BATCH_SEPARATOR, ENCODED_RUN_RE, 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, CONTROL_CHAR_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;
|
|
10397
|
+
var import_url, import_picomatch, import_safe_regex2, import_picomatch2, import_module, import_picomatch3, import_safe_regex22, import_crypto, import_crypto2, import_crypto3, import_crypto4, 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, DLP_SCAN_LIMITS, BATCH_SEPARATOR, ENCODED_RUN_RE, 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, CONTROL_CHAR_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;
|
|
10246
10398
|
var init_dist = __esm({
|
|
10247
10399
|
"packages/policy-engine/dist/index.mjs"() {
|
|
10248
10400
|
"use strict";
|
|
@@ -12128,6 +12280,11 @@ var init_dist = __esm({
|
|
|
12128
12280
|
example: "/tmp/build-helper --serve",
|
|
12129
12281
|
advice: "Keep Review. Malware often runs from /tmp."
|
|
12130
12282
|
},
|
|
12283
|
+
"commands.system-processes": {
|
|
12284
|
+
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.",
|
|
12285
|
+
example: "ps -eo pid,cmd | grep sshd | awk '{print $1}' | xargs kill -9",
|
|
12286
|
+
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."
|
|
12287
|
+
},
|
|
12131
12288
|
"commands.disk-destroy": {
|
|
12132
12289
|
plain: "The agent formats, overwrites or securely erases a disk or file.",
|
|
12133
12290
|
example: "dd if=/dev/zero of=/dev/sda",
|
|
@@ -12297,6 +12454,7 @@ var init_dist = __esm({
|
|
|
12297
12454
|
"commands.sql-no-where": "log",
|
|
12298
12455
|
"commands.temp-binary": "log",
|
|
12299
12456
|
"commands.disk-destroy": "log",
|
|
12457
|
+
"commands.system-processes": "log",
|
|
12300
12458
|
"commands.dangerous-word": "log",
|
|
12301
12459
|
"files.system-dirs": "log",
|
|
12302
12460
|
"files.shell-startup": "log",
|
|
@@ -12615,6 +12773,16 @@ var init_dist = __esm({
|
|
|
12615
12773
|
defaultValue: "review",
|
|
12616
12774
|
legacy: ["Manual Nuclear Protection"]
|
|
12617
12775
|
},
|
|
12776
|
+
{
|
|
12777
|
+
id: "commands.system-processes",
|
|
12778
|
+
group: "commands",
|
|
12779
|
+
owasp: "ASI02",
|
|
12780
|
+
title: "Stops a system service",
|
|
12781
|
+
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",
|
|
12782
|
+
values: ALL,
|
|
12783
|
+
defaultValue: "review",
|
|
12784
|
+
legacy: ["Node9: System Service Stopped"]
|
|
12785
|
+
},
|
|
12618
12786
|
{
|
|
12619
12787
|
id: "commands.dangerous-word",
|
|
12620
12788
|
group: "commands",
|
|
@@ -13274,6 +13442,82 @@ var init_dist = __esm({
|
|
|
13274
13442
|
)
|
|
13275
13443
|
)
|
|
13276
13444
|
}));
|
|
13445
|
+
INFRASTRUCTURE_SERVICES = [
|
|
13446
|
+
"init",
|
|
13447
|
+
"sshd",
|
|
13448
|
+
"dockerd",
|
|
13449
|
+
"docker-proxy",
|
|
13450
|
+
"containerd",
|
|
13451
|
+
"containerd-shim",
|
|
13452
|
+
"docker-containerd-shim",
|
|
13453
|
+
"runc",
|
|
13454
|
+
"systemd-journald",
|
|
13455
|
+
"journald",
|
|
13456
|
+
"systemd-logind",
|
|
13457
|
+
"systemd-udevd",
|
|
13458
|
+
"udevd",
|
|
13459
|
+
"dbus-daemon",
|
|
13460
|
+
"polkitd",
|
|
13461
|
+
"sssd",
|
|
13462
|
+
"kubelet",
|
|
13463
|
+
"kube-apiserver",
|
|
13464
|
+
"crond",
|
|
13465
|
+
"cron",
|
|
13466
|
+
"atd",
|
|
13467
|
+
"auditd",
|
|
13468
|
+
"rsyslogd",
|
|
13469
|
+
"syslogd",
|
|
13470
|
+
"chronyd",
|
|
13471
|
+
"ntpd",
|
|
13472
|
+
"NetworkManager",
|
|
13473
|
+
"wpa_supplicant",
|
|
13474
|
+
"dhclient",
|
|
13475
|
+
"avahi-daemon",
|
|
13476
|
+
"firewalld",
|
|
13477
|
+
"ufw",
|
|
13478
|
+
"cupsd",
|
|
13479
|
+
"snapd",
|
|
13480
|
+
"bluetoothd",
|
|
13481
|
+
"Xorg",
|
|
13482
|
+
"Xwayland",
|
|
13483
|
+
"gdm",
|
|
13484
|
+
"sddm",
|
|
13485
|
+
"lightdm"
|
|
13486
|
+
];
|
|
13487
|
+
SERVER_SERVICES = [
|
|
13488
|
+
"nginx",
|
|
13489
|
+
"apache2",
|
|
13490
|
+
"httpd",
|
|
13491
|
+
"mysqld",
|
|
13492
|
+
"mariadbd",
|
|
13493
|
+
"postgres",
|
|
13494
|
+
"postgresql",
|
|
13495
|
+
"redis-server",
|
|
13496
|
+
"mongod"
|
|
13497
|
+
];
|
|
13498
|
+
SYSTEM_SERVICES = [...INFRASTRUCTURE_SERVICES, ...SERVER_SERVICES];
|
|
13499
|
+
escape = (s) => s.replace(/[.*+?^${}()|[\]\\-]/g, "\\$&");
|
|
13500
|
+
SERVICE_WORD_RE = new RegExp(
|
|
13501
|
+
`(?:^|[^A-Za-z0-9_.-])(${SYSTEM_SERVICES.map(escape).join("|")})(?![A-Za-z0-9_.-])`,
|
|
13502
|
+
"i"
|
|
13503
|
+
);
|
|
13504
|
+
INIT_PATTERN_RE = /(?:["'*])init(?:["'*])/;
|
|
13505
|
+
UNIT_ALIASES = {
|
|
13506
|
+
docker: "dockerd",
|
|
13507
|
+
ssh: "sshd",
|
|
13508
|
+
mysql: "mysqld",
|
|
13509
|
+
mariadb: "mariadbd",
|
|
13510
|
+
redis: "redis-server",
|
|
13511
|
+
mongodb: "mongod",
|
|
13512
|
+
apache: "apache2",
|
|
13513
|
+
rsyslog: "rsyslogd",
|
|
13514
|
+
"systemd-networkd": "systemd-udevd",
|
|
13515
|
+
dbus: "dbus-daemon",
|
|
13516
|
+
avahi: "avahi-daemon",
|
|
13517
|
+
bluetooth: "bluetoothd",
|
|
13518
|
+
cups: "cupsd",
|
|
13519
|
+
chrony: "chronyd"
|
|
13520
|
+
};
|
|
13277
13521
|
MAX_INLINE_CODE = 64 * 1024;
|
|
13278
13522
|
WHAT = {
|
|
13279
13523
|
deletes: "deletes files",
|
|
@@ -13285,7 +13529,15 @@ var init_dist = __esm({
|
|
|
13285
13529
|
"builds-code": "runs code it builds at run time",
|
|
13286
13530
|
permissions: "changes permissions or ownership",
|
|
13287
13531
|
monitors: "captures the screen, the clipboard or the keyboard",
|
|
13288
|
-
amplifies: "writes or sends in an endless loop"
|
|
13532
|
+
amplifies: "writes or sends in an endless loop",
|
|
13533
|
+
"kills-service": "stops a system service"
|
|
13534
|
+
};
|
|
13535
|
+
KILL_API = {
|
|
13536
|
+
python: /\bos\.kill(?:pg)?\s*\(|\.(?:kill|terminate)\s*\(|\bsignal\.SIGKILL\b/,
|
|
13537
|
+
node: /\bprocess\.kill\s*\(|\.kill\s*\(\s*['"`]?SIG/,
|
|
13538
|
+
perl: /\bkill\s+(?:-?\d+|['"]?[A-Z]+['"]?)\s*,/,
|
|
13539
|
+
ruby: /\bProcess\.kill\b/,
|
|
13540
|
+
php: /\bposix_kill\s*\(/
|
|
13289
13541
|
};
|
|
13290
13542
|
OUTSIDE = String.raw`(?:~|\.\.[\\/]|/(?!(?:tmp|var/tmp)/(?![^'"\n]*\.\.)|dev/(?:null|stdout|stderr)\b))`;
|
|
13291
13543
|
pyImport = (mods) => new RegExp(String.raw`\b(?:import\s+(?:[\w.]+(?:\s+as\s+\w+)?\s*,\s*)*|from\s+)(?:${mods})\b`);
|
|
@@ -19184,6 +19436,7 @@ ${text}` : text);
|
|
|
19184
19436
|
"commands.sql-no-where",
|
|
19185
19437
|
"commands.temp-binary",
|
|
19186
19438
|
"commands.disk-destroy",
|
|
19439
|
+
"commands.system-processes",
|
|
19187
19440
|
"commands.dangerous-word",
|
|
19188
19441
|
"commands.node9-disarm",
|
|
19189
19442
|
"commands.reverse-shell",
|
|
@@ -19398,6 +19651,12 @@ ${text}` : text);
|
|
|
19398
19651
|
const char = value[index] ?? "";
|
|
19399
19652
|
return RUN_CHAR.test(char) || char !== "" && isInvisibleChar(char);
|
|
19400
19653
|
};
|
|
19654
|
+
PRESCREEN_RE3 = /\b(?:kill|pkill|killall|systemctl|service|launchctl|xargs)\b/;
|
|
19655
|
+
KILL_SIGNAL_RE = /^-(?:\d+|s|SIG[A-Z]+|[A-Z]{2,})$/;
|
|
19656
|
+
SYSTEMCTL_STOP_VERBS = /* @__PURE__ */ new Set(["stop", "kill", "disable", "mask"]);
|
|
19657
|
+
LAUNCHCTL_UNLOAD_VERBS = /* @__PURE__ */ new Set(["unload", "bootout", "remove"]);
|
|
19658
|
+
LAUNCH_DAEMONS_RE = /(?:^|\/)(?:System\/)?Library\/LaunchDaemons\//;
|
|
19659
|
+
MAX_PAYLOAD_DEPTH5 = 3;
|
|
19401
19660
|
RULE_NAME2 = "review-node9-disarm";
|
|
19402
19661
|
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.";
|
|
19403
19662
|
DAEMON_CMDLINES = [
|