Back to skill

Security audit

Byted Data Search

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its data-query purpose, but it exposes cloud access keys to any caller-supplied gateway URL, so it needs review before installation.

Install only if you trust the Volcengine gateway workflow and can restrict the credentials to the minimum needed. Avoid using --url except for an approved HTTPS gateway, do not pass secrets on the command line, and rotate any key that may have been used with an untrusted endpoint.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/mcp_gateway_client.py:75
Finding

Arbitrary Gateway URL Enables Cloud Credential Disclosure

Content
View full analysis
Remediation
View remediation
str: parsed = urlparse(url) if parsed.scheme != "https": raise ValueError("The MCP gateway must use HTTPS") if parsed.hostname not in ALLOWED_GATEWAY_HOSTS: raise ValueError("Unapproved MCP gateway hostname") if parsed.username or parsed.password: raise ValueError("Gateway URLs must not contain user information") return url ``` 3. **Validate the endpoint before calling `load_credentials()`.** This prevents credentials from entering a request flow involving an untrusted destination. 4. **Disable redirects or validate every redirect target.** For a fixed API gateway, use: ```python response = requests.post( validated_url, headers=headers, json=payload, timeout=timeout_seconds, allow_redirects=False, ) ``` 5. **Do not transmit the secret key as a reusable raw header if the service supports signed requests.** Prefer Volcengine's official request-signing mechanism so the secret key remains local and only a time-limited request signature is transmitted. 6. **Reject plaintext transport unconditionally.** Only permit HTTPS with normal certificate verification enabled. 7. **Avoid command-line credential arguments.** Values passed through `--access-key` and `--secret-key` may be exposed through shell history or process listings. Prefer protected environment injection, an OS credential store, or the official cloud SDK credent ...[truncated 490 chars]
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared purpose is a constrained industry-data lookup skill, but the analyzed behavior indicates generic MCP tool invocation plus credential-backed remote access without clearly declaring that broader capability. Description/behavior mismatches are dangerous because reviewers and orchestrators may route trust and permissions based on the description while the implementation can exercise materially wider powers.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill requires access to environment variables containing Volcengine credentials and performs remote API calls, but it does not declare any tool scope, permissions, or allowed-tools boundary. This creates an overprivileged execution surface where the runtime may permit broader env/network access than the skill’s stated purpose requires, increasing the chance of credential misuse or unintended external access.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The natural-language instructions and examples are entirely Chinese and describe the skill's behavior as if it always operates in Chinese, with no opt-in or alternative locale guidance. Under the policy, locale constraints should either be optional for the user or clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The activation rule says the skill should trigger for essentially any mention of companies, industries, or supply chains, including ambiguous everyday conversation. Overly broad triggering can cause unnecessary invocation of a credentialed networked skill, increasing data exposure, user confusion, and the risk that unrelated prompts are sent into external query flows without clear need.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script sets --locale to zh-CN by default, and the surrounding CLI description/help text is also Chinese. Under the policy, forcing a specific language or locale without user opt-in is a natural-language policy violation unless the constraint is clearly documented as justified or optional by default.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest frames the skill as querying compliant public data sources for company and industry information. While network access is expected, directly loading cloud access keys from environment variables adds a credential-management capability that is not described or obviously required by a read-oriented public-data search skill.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

The comment says 'Cap limit at 50 (server max page_size)', but the code actually enforces min(args.limit, 300), allowing up to 300. This is an active contradiction between documentation in code and behavior, which could mislead maintainers or users about request size constraints.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.