Skip to main content

trust-boundary-analysis

Trust boundary mapping and startup sequence audit for developer tools, CLI apps, and plugin systems. Load when the target is a developer tool, CLI, IDE extension, or any application that loads config from the current directory.

Ir para a instalação

Informações da origem

Repositório
BitterSecurity/Decepticon
Última atividade na origem
2 de junho de 2026 às 17:42
Idioma detectado do SKILL.md
inglês
Estrelas
5.565
Forks
1.053

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
trust-boundary-analysis
description
Trust boundary mapping and startup sequence audit for developer tools, CLI apps, and plugin systems. Load when the target is a developer tool, CLI, IDE extension, or any application that loads config from the current directory.
metadata
{"subdomain":"analyst","when_to_use":"trust boundary startup sequence developer tool cli ide extension plugin config load current directory analysis"}
# Trust Boundary Analysis This skill targets the vulnerability class that produced 5 RCE vectors in Google Gemini CLI from a single architectural flaw: missing workspace trust. Developer tools that auto-load configuration from untrusted directories are a rich attack surface. ## When to Use Apply this skill when the target: - Loads `.env`, `settings.json`, or config files from the current working directory - Has a plugin/extension system that auto-discovers and loads code - Spawns child processes with configuration-controlled commands - Is a CLI tool, IDE extension, language server, or build tool - Uses MCP (Model Context Protocol) servers configured via project files ## Startup Sequence Audit For any CLI tool or developer application, trace the full initialization: ### 1. Config file discovery ```bash grep -rn 'readFile\|readFileSync\|fs.read\|open(' --include='*.ts' --include='*.js' \ /workspace/target/src/ | grep -i 'config\|settings\|env\|rc\|\.json' ``` Map the search order. Common dangerous patterns: - `cwd/.tool/config.json` → `cwd/.env` → `~/.tool/config` → `/etc/tool/config` - If the local (cwd) config is loaded BEFORE the user's global config, the attacker's repo-level config wins. Record each config loading point: ``` kg_add_node("code_location", "loadConfig() reads .env from cwd", props={"file": "src/config/settings.ts", "line": 42, "trust_level": "untrusted"}) ``` ### 2. Environment variable injection ```bash grep -rn 'process\.env\|os\.environ\|env::var\|getenv' --include='*.ts' \ --include='*.py' --include='*.rs' /workspace/target/src/ ``` Check: Are env vars from `.env` files injected into `process.env`? Which vars control dangerous behavior? Look for: - `*_COMMAND`, `*_CMD`, `*_EXEC` → shell execution - `*_PROXY` → SSRF / network interception - `*_PATH`, `*_DIR` → path traversal - `*_URL` → open redirect / SSRF - `DEBUG`, `NODE_ENV` → bypass security controls ### 3. Workspace trust check ```bash grep -rn 'trust\|isTrusted\|workspace.*safe\|folder.*trust' --include='*.ts' \ --include='*.js' /workspace/target/src/ ``` Look for the pattern: ```javascript // DANGEROUS: trust disabled by default if (!settings.folderTrustEnabled) { return { isTrusted: true }; // ← All workspaces trusted } ``` If no trust check exists, every config is loaded blindly. This is the root cause. ### 4. Command execution from config ```bash grep -rn 'spawn\|exec\|execSync\|child_process\|subprocess\|os\.system\|Popen' \ --include='*.ts' --include='*.js' --include='*.py' /workspace/target/src/ ``` For each `spawn`/`exec` call, check: - Is `shell: true` set? → shell injection via crafted values - Does the command come from config? → attacker-controlled execution - Is there any validation/allowlist on the command? ### 5. Plugin/tool auto-discovery ```bash grep -rn 'discoverTools\|loadPlugins\|autoDiscover\|mcpServers\|toolDiscovery' \ --include='*.ts' --include='*.js' /workspace/target/src/ ``` Check: Are plugins/tools loaded from project-level config BEFORE any user confirmation? MCP servers, language server plugins, and build tool extensions are common vectors. ## Trust Boundary Graph Modeling Map the attack flow as a chain in the knowledge graph: ``` ENTRYPOINT (malicious .env file in cloned repo) → enables → ENV_INJECT (process.env poisoned) → enables → SHELL_EXEC (spawn with shell:true) → reaches → CROWN_JEWEL (arbitrary code execution) ``` Use low edge weights (0.2–0.4) for automatic/silent steps. Use higher weights (1.0+) for steps requiring user interaction. Then call `plan_attack_chains(top_k=5)` to surface the cheapest paths. ## Shell Quoting Vulnerabilities When config values flow into shell commands, check for: 1. **Direct interpolation**: `` `command ${userValue}` `` → injection via `; id` 2. **Single-quote escape**: `osascript -e '${path}'` → escape via `'` in path 3. **Env var in shell context**: `PROXY_CMD="curl evil.com"` → executed as-is 4. **Argument injection**: `spawn('git', ['clone', userUrl])` → `--upload-pack=` prefix For each, the PoC pattern is: - Craft input that breaks out of the quoting context - Inject a command that proves execution (`id`, `env`, write a sentinel file) - Use `validate_finding` with the sentinel as the success pattern ## Negative Control Always test: does the same code path execute WITHOUT the malicious config? The negative control is the same operation with a clean/empty config directory. If the behavior occurs regardless, it's not a vulnerability — it's expected.
Ver no GitHub