Back to skill

Security audit

Clawd Throttle

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its advertised LLM cost-routing purpose, but its optional HTTP proxy and endpoint settings can expose paid model accounts if enabled or misconfigured.

Review before installing. Keep HTTP proxy mode disabled unless you can bind it to loopback and protect it with authentication; do not expose port 8484 to a LAN or the internet. Use restricted provider API keys, verify every configured base URL, and secure the local config file if it contains credentials.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
Findings (3)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
src/index.ts:59
Finding

Unauthenticated HTTP Proxy Binds to All Network Interfaces

Content
View full analysis
{ log.info(`HTTP proxy listening on http://localhost:${config.http.port}`); }); } ``` ```ts // src/server/http-proxy.ts:29-39 const server = http.createServer(async (req, res) => { // CORS headers res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); res.setHeader( 'Access-Control-Allow-Headers', 'Content-Type, Authorization, x-api-key, X-Throttle-Force-Model', ); res.setHeader( 'Access-Control-Expose-Headers', 'X-Throttle-Model, X-Throttle-Tier, X-Throttle-Score, X-Throttle-Request-Id', ); ``` ```ts // src/server/http-proxy.ts:61-79 if (req.method === 'POST') { if (pathname !== '/v1/messages' && pathname !== '/v1/chat/completions') { sendError(res, 404, 'not_found', `Unknown route: POST ${pathname}`); return; } // Parse request body const body = await readBody(req); if (pathname === '/v1/messages') { await handleMessages(body, req, res, handlerDeps); } else { await handleChatCompletions(body, req, res, handlerDeps); } return; } ``` ### Technical Analysis Calling `httpServer.listen(config.http.port)` without specifying a hostname normally binds the server to the unspecified address, potentially exposing it on all available IPv4 or IPv6 interfaces. The informational log incorrectly describes the listener as `localhost`, which can ...[truncated 2059 chars]
Remediation
View remediation
{ log.info(`HTTP proxy listening on http://127.0.0.1:${config.http.port}`); }); ``` 2. Provide a separate, explicit configuration option for external binding and display a prominent security warning when it is enabled. 3. Require a dedicated proxy authentication token on all non-health endpoints. Compare tokens with a timing-safe comparison. 4. Do not treat incoming provider-style `Authorization` headers as authentication unless they are explicitly validated. 5. Replace wildcard CORS with a configurable allowlist. Disable browser CORS access by default. 6. Apply per-client rate limits, request quotas, concurrency limits, and conservative maximum-token limits. 7. Restrict model-forcing headers to authenticated and authorized clients. 8. Consider disabling `/stats` remotely or protecting it with the same authentication mechanism. 9. Add tests confirming that unauthenticated requests are rejected and that the default listener is loopback-only. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
src/config/index.ts:27
Finding

Unvalidated Provider Endpoints Receive API Credentials and Complete Prompts

Content
View full analysis
; } const config = deepMerge( defaults as unknown as Record, fileConfig as Record, ) as unknown as ThrottleConfig; ``` ```ts // src/proxy/anthropic.ts:8-35 export async function callAnthropic( request: ProxyRequest, config: ThrottleConfig, ): Promise { const url = `${config.anthropic.baseUrl}/v1/messages`; const startMs = performance.now(); const body: Record = { model: request.modelId, max_tokens: request.maxTokens, messages: request.messages.map(m => ({ role: m.role, content: m.content, })), }; if (request.systemPrompt) { body.system = request.systemPrompt; } if (request.temperature !== undefined) { body.temperature = request.temperature; } const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', ...buildAnthropicAuthHeaders(config), 'anthropic-version': '2023-06-01', }, body: JSON.stringify(body), }); ``` ```ts // src/proxy/google.ts:8-35 export async function callGoogle( request: ProxyRequest, config: ThrottleConfig, ): Promise { const url = `${config.google.baseUrl}/v1beta/models/${request.modelId}` + `:generateContent?key=${config.google.apiKey}`; const startMs = performance.now(); const contents = request.messages.map(m => ({ role: m.role === 'assistant' ? 'model' : 'user', parts: [{ text: m.content }], })); const bod ...[truncated 4304 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/setup.sh:17
Finding

Setup Installs Unlocked Dependency Versions and Permits Lifecycle Script Execution

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (70)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill openly exposes configuration inspection, mode changes, local logging, and persistent config storage in addition to routing. Because it handles API keys and provider metadata, under-describing these administrative capabilities increases the chance of secret mishandling, unauthorized configuration changes, or leakage of operational metadata through diagnostic commands.

Content

No source excerpt is available for this finding.

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · src/config/index.ts (reported line 40)May include surrounding context.

ts
}

  // Provider API keys
  if (process.env['ANTHROPIC_API_KEY']) {
    config.anthropic.apiKey = process.env['ANTHROPIC_API_KEY'];
  }
  if (process.env['ANTHROPIC_AUTH_TYPE']) {

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · src/config/index.ts (reported line 41)May include surrounding context.

ts
}

  // Provider API keys
  if (process.env['ANTHROPIC_API_KEY']) {
    config.anthropic.apiKey = process.env['ANTHROPIC_API_KEY'];
  }
  if (process.env['ANTHROPIC_AUTH_TYPE']) {

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · src/config/index.ts (reported line 52)May include surrounding context.

ts
if (process.env['ANTHROPIC_BASE_URL']) {
    config.anthropic.baseUrl = process.env['ANTHROPIC_BASE_URL'];
  }
  if (process.env['GOOGLE_AI_API_KEY']) {
    config.google.apiKey = process.env['GOOGLE_AI_API_KEY'];
  }
  if (process.env['OPENAI_API_KEY']) {

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · src/config/index.ts (reported line 53)May include surrounding context.

ts
if (process.env['ANTHROPIC_BASE_URL']) {
    config.anthropic.baseUrl = process.env['ANTHROPIC_BASE_URL'];
  }
  if (process.env['GOOGLE_AI_API_KEY']) {
    config.google.apiKey = process.env['GOOGLE_AI_API_KEY'];
  }
  if (process.env['OPENAI_API_KEY']) {

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · src/config/index.ts (reported line 55)May include surrounding context.

ts
if (process.env['GOOGLE_AI_API_KEY']) {
    config.google.apiKey = process.env['GOOGLE_AI_API_KEY'];
  }
  if (process.env['OPENAI_API_KEY']) {
    config.openai.apiKey = process.env['OPENAI_API_KEY'];
  }
  if (process.env['DEEPSEEK_API_KEY']) {

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · src/config/index.ts (reported line 56)May include surrounding context.

ts
if (process.env['GOOGLE_AI_API_KEY']) {
    config.google.apiKey = process.env['GOOGLE_AI_API_KEY'];
  }
  if (process.env['OPENAI_API_KEY']) {
    config.openai.apiKey = process.env['OPENAI_API_KEY'];
  }
  if (process.env['DEEPSEEK_API_KEY']) {

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · src/config/index.ts (reported line 58)May include surrounding context.

ts
if (process.env['OPENAI_API_KEY']) {
    config.openai.apiKey = process.env['OPENAI_API_KEY'];
  }
  if (process.env['DEEPSEEK_API_KEY']) {
    config.deepseek.apiKey = process.env['DEEPSEEK_API_KEY'];
  }
  if (process.env['XAI_API_KEY']) {

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
70% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · src/config/index.ts (reported line 59)May include surrounding context.

ts
if (process.env['OPENAI_API_KEY']) {
    config.openai.apiKey = process.env['OPENAI_API_KEY'];
  }
  if (process.env['DEEPSEEK_API_KEY']) {
    config.deepseek.apiKey = process.env['DEEPSEEK_API_KEY'];
  }
  if (process.env['XAI_API_KEY']) {

Static analysis

No suspicious patterns detected.