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.

Zur Installation springen

Quellinformationen

Repository
BitterSecurity/Decepticon
Letzte Quellaktivität
2. Juni 2026 um 17:42
Erkannte Sprache von SKILL.md
Englisch
Sterne
5.565
Forks
1.053

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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.
Auf GitHub ansehen