@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/dashboard.mjs
CHANGED
|
@@ -1778,6 +1778,26 @@ function collectShellFileAccesses(command, context = {}) {
|
|
|
1778
1778
|
}
|
|
1779
1779
|
return out;
|
|
1780
1780
|
}
|
|
1781
|
+
function serviceNamedIn(text) {
|
|
1782
|
+
const re = new RegExp(SERVICE_WORD_RE.source, "gi");
|
|
1783
|
+
for (let m = re.exec(text); m; m = re.exec(text)) {
|
|
1784
|
+
const lower2 = m[1].toLowerCase();
|
|
1785
|
+
if (lower2 === "init" && !INIT_PATTERN_RE.test(text)) continue;
|
|
1786
|
+
return SYSTEM_SERVICES.find((s) => s.toLowerCase() === lower2) ?? m[1];
|
|
1787
|
+
}
|
|
1788
|
+
return null;
|
|
1789
|
+
}
|
|
1790
|
+
function serviceOf(name) {
|
|
1791
|
+
const leaf = name.replace(/^.*[\\/]/, "").replace(/\.service$/, "").replace(/@.*$/, "");
|
|
1792
|
+
const lower2 = leaf.toLowerCase();
|
|
1793
|
+
return SYSTEM_SERVICES.find((s) => s.toLowerCase() === lower2) ?? UNIT_ALIASES[lower2] ?? null;
|
|
1794
|
+
}
|
|
1795
|
+
function killsService(language, code2) {
|
|
1796
|
+
const api = KILL_API[language].exec(code2);
|
|
1797
|
+
if (!api) return null;
|
|
1798
|
+
const service = serviceNamedIn(code2);
|
|
1799
|
+
return service ? `${api[0].trim()} with ${service}` : null;
|
|
1800
|
+
}
|
|
1781
1801
|
function inlineLanguageOf(interp) {
|
|
1782
1802
|
const i = interp.toLowerCase();
|
|
1783
1803
|
if (/^python[\d.]*$/.test(i)) return "python";
|
|
@@ -1852,6 +1872,15 @@ function judgeInlineCode(language, code2, isProtected) {
|
|
|
1852
1872
|
return { outcome: "unreadable", what: "is too long for node9 to read" };
|
|
1853
1873
|
}
|
|
1854
1874
|
const text = language === "python" ? resolvePythonAliases(code2) : code2;
|
|
1875
|
+
const killed = killsService(language, text);
|
|
1876
|
+
if (killed) {
|
|
1877
|
+
return {
|
|
1878
|
+
outcome: "dangerous",
|
|
1879
|
+
what: WHAT["kills-service"],
|
|
1880
|
+
evidence: killed.slice(0, 60),
|
|
1881
|
+
category: "kills-service"
|
|
1882
|
+
};
|
|
1883
|
+
}
|
|
1855
1884
|
for (const [category, re] of TABLES[language]) {
|
|
1856
1885
|
const m = re.exec(text);
|
|
1857
1886
|
if (!m) continue;
|
|
@@ -8539,6 +8568,118 @@ function scanArgumentSecrets(args) {
|
|
|
8539
8568
|
severity: "review"
|
|
8540
8569
|
} : null;
|
|
8541
8570
|
}
|
|
8571
|
+
function shownOf2(words) {
|
|
8572
|
+
return words.map((w) => w ?? "$?").join(" ").slice(0, 80);
|
|
8573
|
+
}
|
|
8574
|
+
function withoutComments(command) {
|
|
8575
|
+
return command.split("\n").map((line) => {
|
|
8576
|
+
for (let i = 0; i < line.length; i++) {
|
|
8577
|
+
if (line[i] === "#" && (i === 0 || line[i - 1] === " " || line[i - 1] === " ")) {
|
|
8578
|
+
return line.slice(0, i);
|
|
8579
|
+
}
|
|
8580
|
+
}
|
|
8581
|
+
return line;
|
|
8582
|
+
}).join("\n");
|
|
8583
|
+
}
|
|
8584
|
+
function detectSystemProcessStop(command, depth = 0) {
|
|
8585
|
+
if (!PRESCREEN_RE3.test(command)) return null;
|
|
8586
|
+
const named = serviceNamedIn(withoutComments(command));
|
|
8587
|
+
let direct = null;
|
|
8588
|
+
let dynamicKill = null;
|
|
8589
|
+
walkCommandScope(command, (node) => {
|
|
8590
|
+
const n = node;
|
|
8591
|
+
if (direct || !n || n.kind !== "CallExpr") return true;
|
|
8592
|
+
const words = (n.Args || []).map((a) => resolveWordLiteral(a));
|
|
8593
|
+
if (words.length === 0) return true;
|
|
8594
|
+
if (baseWord(words[0]) === "xargs" && words.some((w) => w !== null && baseWord(w) === "kill")) {
|
|
8595
|
+
dynamicKill ??= shownOf2(words);
|
|
8596
|
+
return true;
|
|
8597
|
+
}
|
|
8598
|
+
if (depth < MAX_PAYLOAD_DEPTH5) {
|
|
8599
|
+
const payload = literalShellPayload(words, baseWord(words[0]));
|
|
8600
|
+
if (payload !== null) {
|
|
8601
|
+
const inner = detectSystemProcessStop(payload, depth + 1);
|
|
8602
|
+
if (inner) direct = inner;
|
|
8603
|
+
return true;
|
|
8604
|
+
}
|
|
8605
|
+
}
|
|
8606
|
+
const head = unwrapCommandHead(words);
|
|
8607
|
+
if (head >= words.length) return true;
|
|
8608
|
+
const name = baseWord(words[head]);
|
|
8609
|
+
const rest = words.slice(head + 1);
|
|
8610
|
+
const shown = shownOf2(words);
|
|
8611
|
+
const viaXargs = words.slice(0, head).some((w) => w !== null && baseWord(w) === "xargs");
|
|
8612
|
+
if (name === "kill") {
|
|
8613
|
+
const targets = [];
|
|
8614
|
+
for (let i = 0; i < rest.length; i++) {
|
|
8615
|
+
const w = rest[i];
|
|
8616
|
+
if (i === 0 && w !== null && KILL_SIGNAL_RE.test(w)) {
|
|
8617
|
+
if (w === "-s") i++;
|
|
8618
|
+
continue;
|
|
8619
|
+
}
|
|
8620
|
+
if (w === "--") continue;
|
|
8621
|
+
targets.push(w);
|
|
8622
|
+
}
|
|
8623
|
+
if (targets.some((t) => t === "1" || t === "-1")) {
|
|
8624
|
+
direct = { service: "init (pid 1)", how: "kills", shown };
|
|
8625
|
+
} else if (viaXargs || targets.some((t) => t === null)) {
|
|
8626
|
+
dynamicKill ??= shown;
|
|
8627
|
+
}
|
|
8628
|
+
return true;
|
|
8629
|
+
}
|
|
8630
|
+
if (name === "pkill" || name === "killall") {
|
|
8631
|
+
let skipValue = false;
|
|
8632
|
+
for (const w of rest) {
|
|
8633
|
+
if (skipValue) {
|
|
8634
|
+
skipValue = false;
|
|
8635
|
+
continue;
|
|
8636
|
+
}
|
|
8637
|
+
if (w !== null && w.startsWith("-")) {
|
|
8638
|
+
if (/^-(?:u|U|g|G|t|P|s|n|o|r|q|-signal|-uid|-user)$/.test(w)) skipValue = true;
|
|
8639
|
+
continue;
|
|
8640
|
+
}
|
|
8641
|
+
if (w === null) {
|
|
8642
|
+
dynamicKill ??= shown;
|
|
8643
|
+
continue;
|
|
8644
|
+
}
|
|
8645
|
+
const service = serviceOf(w) ?? serviceNamedIn(w);
|
|
8646
|
+
if (service) direct = { service, how: "kills", shown };
|
|
8647
|
+
}
|
|
8648
|
+
return true;
|
|
8649
|
+
}
|
|
8650
|
+
if (name === "systemctl") {
|
|
8651
|
+
if (rest.includes("--user")) return true;
|
|
8652
|
+
const verb = rest.find((w) => w !== null && !w.startsWith("-"));
|
|
8653
|
+
if (verb === void 0 || verb === null || !SYSTEMCTL_STOP_VERBS.has(verb)) return true;
|
|
8654
|
+
for (const w of rest.slice(rest.indexOf(verb) + 1)) {
|
|
8655
|
+
const service = w === null ? null : serviceOf(w);
|
|
8656
|
+
if (service) direct = { service, how: verb === "kill" ? "kills" : "stops", shown };
|
|
8657
|
+
}
|
|
8658
|
+
return true;
|
|
8659
|
+
}
|
|
8660
|
+
if (name === "service") {
|
|
8661
|
+
const [unit, verb] = rest;
|
|
8662
|
+
const service = typeof unit === "string" ? serviceOf(unit) : null;
|
|
8663
|
+
if (service && verb === "stop") direct = { service, how: "stops", shown };
|
|
8664
|
+
return true;
|
|
8665
|
+
}
|
|
8666
|
+
if (name === "launchctl") {
|
|
8667
|
+
const verb = rest.find((w) => w !== null && !w.startsWith("-"));
|
|
8668
|
+
if (verb === void 0 || verb === null || !LAUNCHCTL_UNLOAD_VERBS.has(verb)) return true;
|
|
8669
|
+
const daemon = rest.find((w) => w !== null && LAUNCH_DAEMONS_RE.test(w));
|
|
8670
|
+
if (daemon) {
|
|
8671
|
+
direct = { service: daemon.replace(/^.*\//, ""), how: "unloads the system daemon", shown };
|
|
8672
|
+
}
|
|
8673
|
+
return true;
|
|
8674
|
+
}
|
|
8675
|
+
return true;
|
|
8676
|
+
});
|
|
8677
|
+
if (direct) return direct;
|
|
8678
|
+
if (dynamicKill !== null && named) {
|
|
8679
|
+
return { service: named, how: "kills the processes of", shown: dynamicKill };
|
|
8680
|
+
}
|
|
8681
|
+
return null;
|
|
8682
|
+
}
|
|
8542
8683
|
function patternSelects(pattern, targets) {
|
|
8543
8684
|
const pieces = pattern.toLowerCase().split(/[\\^$.*+?()[\]{}|]+/).filter(Boolean);
|
|
8544
8685
|
if (pieces.length === 0) return false;
|
|
@@ -9158,6 +9299,17 @@ async function evaluatePolicyCore(config, toolName, args, context = {}, hooks =
|
|
|
9158
9299
|
checkId: "commands.eval-dynamic"
|
|
9159
9300
|
});
|
|
9160
9301
|
}
|
|
9302
|
+
const stopped = detectSystemProcessStop(shellCommand);
|
|
9303
|
+
if (stopped) {
|
|
9304
|
+
consider("commands.system-processes", {
|
|
9305
|
+
decision: "review",
|
|
9306
|
+
blockedByLabel: "Node9: System Service Stopped",
|
|
9307
|
+
reason: `The AI ${stopped.how} ${stopped.service}: ${stopped.shown}`,
|
|
9308
|
+
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.",
|
|
9309
|
+
tier: 3,
|
|
9310
|
+
checkId: "commands.system-processes"
|
|
9311
|
+
});
|
|
9312
|
+
}
|
|
9161
9313
|
const builtin = strictestVerdict(candidates);
|
|
9162
9314
|
if (builtin) return builtin;
|
|
9163
9315
|
{
|
|
@@ -10247,7 +10399,7 @@ function matchCanaryArgs(args, values) {
|
|
|
10247
10399
|
return null;
|
|
10248
10400
|
}
|
|
10249
10401
|
}
|
|
10250
|
-
var getFilename2, __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, POSTURE_CATEGORY_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, 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, 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, CANONICAL_EXTRACTOR_VERSION;
|
|
10402
|
+
var getFilename2, __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, POSTURE_CATEGORY_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, 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, 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, CANONICAL_EXTRACTOR_VERSION;
|
|
10251
10403
|
var init_dist = __esm({
|
|
10252
10404
|
"packages/policy-engine/dist/index.mjs"() {
|
|
10253
10405
|
"use strict";
|
|
@@ -12122,6 +12274,11 @@ var init_dist = __esm({
|
|
|
12122
12274
|
example: "/tmp/build-helper --serve",
|
|
12123
12275
|
advice: "Keep Review. Malware often runs from /tmp."
|
|
12124
12276
|
},
|
|
12277
|
+
"commands.system-processes": {
|
|
12278
|
+
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.",
|
|
12279
|
+
example: "ps -eo pid,cmd | grep sshd | awk '{print $1}' | xargs kill -9",
|
|
12280
|
+
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."
|
|
12281
|
+
},
|
|
12125
12282
|
"commands.disk-destroy": {
|
|
12126
12283
|
plain: "The agent formats, overwrites or securely erases a disk or file.",
|
|
12127
12284
|
example: "dd if=/dev/zero of=/dev/sda",
|
|
@@ -12291,6 +12448,7 @@ var init_dist = __esm({
|
|
|
12291
12448
|
"commands.sql-no-where": "log",
|
|
12292
12449
|
"commands.temp-binary": "log",
|
|
12293
12450
|
"commands.disk-destroy": "log",
|
|
12451
|
+
"commands.system-processes": "log",
|
|
12294
12452
|
"commands.dangerous-word": "log",
|
|
12295
12453
|
"files.system-dirs": "log",
|
|
12296
12454
|
"files.shell-startup": "log",
|
|
@@ -12629,6 +12787,16 @@ var init_dist = __esm({
|
|
|
12629
12787
|
defaultValue: "review",
|
|
12630
12788
|
legacy: ["Manual Nuclear Protection"]
|
|
12631
12789
|
},
|
|
12790
|
+
{
|
|
12791
|
+
id: "commands.system-processes",
|
|
12792
|
+
group: "commands",
|
|
12793
|
+
owasp: "ASI02",
|
|
12794
|
+
title: "Stops a system service",
|
|
12795
|
+
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",
|
|
12796
|
+
values: ALL,
|
|
12797
|
+
defaultValue: "review",
|
|
12798
|
+
legacy: ["Node9: System Service Stopped"]
|
|
12799
|
+
},
|
|
12632
12800
|
{
|
|
12633
12801
|
id: "commands.dangerous-word",
|
|
12634
12802
|
group: "commands",
|
|
@@ -13288,6 +13456,82 @@ var init_dist = __esm({
|
|
|
13288
13456
|
)
|
|
13289
13457
|
)
|
|
13290
13458
|
}));
|
|
13459
|
+
INFRASTRUCTURE_SERVICES = [
|
|
13460
|
+
"init",
|
|
13461
|
+
"sshd",
|
|
13462
|
+
"dockerd",
|
|
13463
|
+
"docker-proxy",
|
|
13464
|
+
"containerd",
|
|
13465
|
+
"containerd-shim",
|
|
13466
|
+
"docker-containerd-shim",
|
|
13467
|
+
"runc",
|
|
13468
|
+
"systemd-journald",
|
|
13469
|
+
"journald",
|
|
13470
|
+
"systemd-logind",
|
|
13471
|
+
"systemd-udevd",
|
|
13472
|
+
"udevd",
|
|
13473
|
+
"dbus-daemon",
|
|
13474
|
+
"polkitd",
|
|
13475
|
+
"sssd",
|
|
13476
|
+
"kubelet",
|
|
13477
|
+
"kube-apiserver",
|
|
13478
|
+
"crond",
|
|
13479
|
+
"cron",
|
|
13480
|
+
"atd",
|
|
13481
|
+
"auditd",
|
|
13482
|
+
"rsyslogd",
|
|
13483
|
+
"syslogd",
|
|
13484
|
+
"chronyd",
|
|
13485
|
+
"ntpd",
|
|
13486
|
+
"NetworkManager",
|
|
13487
|
+
"wpa_supplicant",
|
|
13488
|
+
"dhclient",
|
|
13489
|
+
"avahi-daemon",
|
|
13490
|
+
"firewalld",
|
|
13491
|
+
"ufw",
|
|
13492
|
+
"cupsd",
|
|
13493
|
+
"snapd",
|
|
13494
|
+
"bluetoothd",
|
|
13495
|
+
"Xorg",
|
|
13496
|
+
"Xwayland",
|
|
13497
|
+
"gdm",
|
|
13498
|
+
"sddm",
|
|
13499
|
+
"lightdm"
|
|
13500
|
+
];
|
|
13501
|
+
SERVER_SERVICES = [
|
|
13502
|
+
"nginx",
|
|
13503
|
+
"apache2",
|
|
13504
|
+
"httpd",
|
|
13505
|
+
"mysqld",
|
|
13506
|
+
"mariadbd",
|
|
13507
|
+
"postgres",
|
|
13508
|
+
"postgresql",
|
|
13509
|
+
"redis-server",
|
|
13510
|
+
"mongod"
|
|
13511
|
+
];
|
|
13512
|
+
SYSTEM_SERVICES = [...INFRASTRUCTURE_SERVICES, ...SERVER_SERVICES];
|
|
13513
|
+
escape = (s) => s.replace(/[.*+?^${}()|[\]\\-]/g, "\\$&");
|
|
13514
|
+
SERVICE_WORD_RE = new RegExp(
|
|
13515
|
+
`(?:^|[^A-Za-z0-9_.-])(${SYSTEM_SERVICES.map(escape).join("|")})(?![A-Za-z0-9_.-])`,
|
|
13516
|
+
"i"
|
|
13517
|
+
);
|
|
13518
|
+
INIT_PATTERN_RE = /(?:["'*])init(?:["'*])/;
|
|
13519
|
+
UNIT_ALIASES = {
|
|
13520
|
+
docker: "dockerd",
|
|
13521
|
+
ssh: "sshd",
|
|
13522
|
+
mysql: "mysqld",
|
|
13523
|
+
mariadb: "mariadbd",
|
|
13524
|
+
redis: "redis-server",
|
|
13525
|
+
mongodb: "mongod",
|
|
13526
|
+
apache: "apache2",
|
|
13527
|
+
rsyslog: "rsyslogd",
|
|
13528
|
+
"systemd-networkd": "systemd-udevd",
|
|
13529
|
+
dbus: "dbus-daemon",
|
|
13530
|
+
avahi: "avahi-daemon",
|
|
13531
|
+
bluetooth: "bluetoothd",
|
|
13532
|
+
cups: "cupsd",
|
|
13533
|
+
chrony: "chronyd"
|
|
13534
|
+
};
|
|
13291
13535
|
MAX_INLINE_CODE = 64 * 1024;
|
|
13292
13536
|
WHAT = {
|
|
13293
13537
|
deletes: "deletes files",
|
|
@@ -13299,7 +13543,15 @@ var init_dist = __esm({
|
|
|
13299
13543
|
"builds-code": "runs code it builds at run time",
|
|
13300
13544
|
permissions: "changes permissions or ownership",
|
|
13301
13545
|
monitors: "captures the screen, the clipboard or the keyboard",
|
|
13302
|
-
amplifies: "writes or sends in an endless loop"
|
|
13546
|
+
amplifies: "writes or sends in an endless loop",
|
|
13547
|
+
"kills-service": "stops a system service"
|
|
13548
|
+
};
|
|
13549
|
+
KILL_API = {
|
|
13550
|
+
python: /\bos\.kill(?:pg)?\s*\(|\.(?:kill|terminate)\s*\(|\bsignal\.SIGKILL\b/,
|
|
13551
|
+
node: /\bprocess\.kill\s*\(|\.kill\s*\(\s*['"`]?SIG/,
|
|
13552
|
+
perl: /\bkill\s+(?:-?\d+|['"]?[A-Z]+['"]?)\s*,/,
|
|
13553
|
+
ruby: /\bProcess\.kill\b/,
|
|
13554
|
+
php: /\bposix_kill\s*\(/
|
|
13303
13555
|
};
|
|
13304
13556
|
OUTSIDE = String.raw`(?:~|\.\.[\\/]|/(?!(?:tmp|var/tmp)/(?![^'"\n]*\.\.)|dev/(?:null|stdout|stderr)\b))`;
|
|
13305
13557
|
pyImport = (mods) => new RegExp(String.raw`\b(?:import\s+(?:[\w.]+(?:\s+as\s+\w+)?\s*,\s*)*|from\s+)(?:${mods})\b`);
|
|
@@ -19191,6 +19443,7 @@ ${text}` : text);
|
|
|
19191
19443
|
"commands.sql-no-where",
|
|
19192
19444
|
"commands.temp-binary",
|
|
19193
19445
|
"commands.disk-destroy",
|
|
19446
|
+
"commands.system-processes",
|
|
19194
19447
|
"commands.dangerous-word",
|
|
19195
19448
|
"commands.node9-disarm",
|
|
19196
19449
|
"commands.reverse-shell",
|
|
@@ -19405,6 +19658,12 @@ ${text}` : text);
|
|
|
19405
19658
|
const char = value[index] ?? "";
|
|
19406
19659
|
return RUN_CHAR.test(char) || char !== "" && isInvisibleChar(char);
|
|
19407
19660
|
};
|
|
19661
|
+
PRESCREEN_RE3 = /\b(?:kill|pkill|killall|systemctl|service|launchctl|xargs)\b/;
|
|
19662
|
+
KILL_SIGNAL_RE = /^-(?:\d+|s|SIG[A-Z]+|[A-Z]{2,})$/;
|
|
19663
|
+
SYSTEMCTL_STOP_VERBS = /* @__PURE__ */ new Set(["stop", "kill", "disable", "mask"]);
|
|
19664
|
+
LAUNCHCTL_UNLOAD_VERBS = /* @__PURE__ */ new Set(["unload", "bootout", "remove"]);
|
|
19665
|
+
LAUNCH_DAEMONS_RE = /(?:^|\/)(?:System\/)?Library\/LaunchDaemons\//;
|
|
19666
|
+
MAX_PAYLOAD_DEPTH5 = 3;
|
|
19408
19667
|
RULE_NAME2 = "review-node9-disarm";
|
|
19409
19668
|
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.";
|
|
19410
19669
|
DAEMON_CMDLINES = [
|