Back to skill

Security audit

Visual Summarization Skill | 视觉摘要智述技能

Security checks for vulnerabilities and agentic risk

Overview

The skill is a real cloud-based visual summarization tool, but it also performs hidden identity resolution, silent account/token handling, local token persistence, and history lookup in ways users should review carefully before installing.

Install only if you are comfortable with a cloud service receiving your media or URLs, automatically associating requests with a local or upstream identity, storing service tokens in the workspace data directory, and providing cloud history/report lookup. Avoid using it with sensitive media or internal URLs unless the service account and retention behavior are acceptable.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
skills/smyx_common/scripts/util.py:549
Finding

Caller-Controlled Identity Can Be Exchanged for Cloud Access Tokens

Content
View full analysis

Vulnerability Details

File Location: scripts/visual_summary_analysis.py:44-59; skills/smyx_common/scripts/util.py:449-470, 549-612
Vulnerability Type: Improper authentication and caller-controlled identity impersonation
Risk Level: High

Vulnerable Code

python
# scripts/visual_summary_analysis.py:44-59
parser.add_argument("--open-id", required=False, help=argparse.SUPPRESS)

args = parser.parse_args()

try:
    # Initialize the internal user identity.
    OpenIdUtil.resolve_current_open_id(
        args.open_id,
        use_current=bool(args.open_id)
    )

    if args.list:
        open_id = ConstantEnum.CURRENT__OPEN_ID
        result = show_analyze_list(open_id)
        print(result)
        exit(0)
python
# skills/smyx_common/scripts/util.py:449-470
@classmethod
def resolve_current_open_id(cls, open_id=None, use_current=True):
    """Resolve and initialize the current open-id."""
    resolved_open_id = (open_id or "").strip() if isinstance(open_id, str) else open_id
    if not resolved_open_id and use_current:
        resolved_open_id = ConstantEnum.CURRENT__OPEN_ID or ConstantEnum.CURRENT__USER_NAME
    if not resolved_open_id:
        resolved_open_id = cls.get_api_key_file_open_id()
    if not resolved_open_id:
        resolved_open_id = cls.get_or_create_default_open_id()

    ConstantEnum.CURRENT__OPEN_ID = resolved_open_id
    if not ConstantEnum.CURRENT__USER_NAME:
        ConstantEnum.CURRENT__USER_NAME = resolved_open_id
    return resolved_open_id
python
# skills/smyx_common/scripts/util.py:549-612
def _get_or_create_user(username):
    _url = ApiEnum.BASE_URL_HEALTH + "/sys/phoneLogin"
    open_id = username
    _data = {
        "silent": 1,
        "register": 1,
        "openId": open_id,
        "mobile": username,
        "source": ConstantEnum.DEFAULT__SKILL_HUB_NAME
    }
    try:
        _response = requests.post(_url, json=_data)
        if _response.status_code == 200:
            _response_json
...[truncated 3571 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the caller-controlled --open-id override from the production CLI unless it is strictly required for a trusted administrative workflow.
  2. Do not issue access tokens based solely on an Open ID, username, or mobile value. Require proof of identity such as:
    • a signed assertion from a trusted upstream identity provider;
    • an authenticated session bound to the identity;
    • a one-time challenge;
    • or another server-verified credential.
  3. Verify the assertion's signature, issuer, audience, expiration, nonce, and subject before assigning CURRENT__OPEN_ID.
  4. Bind the authenticated subject to the requested account server-side. Never rely on a client-supplied identity field as authorization evidence.
  5. Disable silent account registration during ordinary report queries. Separate account provisioning from authentication and require an explicit, authenticated enrollment process.
  6. Ensure report-list and analysis APIs derive the tenant and user identity from the validated access token rather than from request parameters such as pnaUserName.
  7. Reject attempts to override an already authenticated identity and log identity-switch attempts without recording tokens.
  8. Add tests proving that supplying another user's identifier cannot obtain credentials, enumerate reports, or create analyses under that account.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Findings (51)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill documentation and detected behavior indicate filesystem access, credential/identity file reads, workspace discovery, default identity generation, database lookups, outbound authentication flows, and token management, all under the label of media summarization. This is dangerous because it combines sensitive local access with remote authentication and persistence, creating opportunities for credential exposure, hidden account linkage, and unauthorized API activity.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill documentation and detected behavior indicate filesystem access, credential/identity file reads, workspace discovery, default identity generation, database lookups, outbound authentication flows, and token management, all under the label of media summarization. This is dangerous because it combines sensitive local access with remote authentication and persistence, creating opportunities for credential exposure, hidden account linkage, and unauthorized API activity.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill documentation and detected behavior indicate filesystem access, credential/identity file reads, workspace discovery, default identity generation, database lookups, outbound authentication flows, and token management, all under the label of media summarization. This is dangerous because it combines sensitive local access with remote authentication and persistence, creating opportunities for credential exposure, hidden account linkage, and unauthorized API activity.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill documentation and detected behavior indicate filesystem access, credential/identity file reads, workspace discovery, default identity generation, database lookups, outbound authentication flows, and token management, all under the label of media summarization. This is dangerous because it combines sensitive local access with remote authentication and persistence, creating opportunities for credential exposure, hidden account linkage, and unauthorized API activity.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill documentation and detected behavior indicate filesystem access, credential/identity file reads, workspace discovery, default identity generation, database lookups, outbound authentication flows, and token management, all under the label of media summarization. This is dangerous because it combines sensitive local access with remote authentication and persistence, creating opportunities for credential exposure, hidden account linkage, and unauthorized API activity.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill documentation and detected behavior indicate filesystem access, credential/identity file reads, workspace discovery, default identity generation, database lookups, outbound authentication flows, and token management, all under the label of media summarization. This is dangerous because it combines sensitive local access with remote authentication and persistence, creating opportunities for credential exposure, hidden account linkage, and unauthorized API activity.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill documentation and detected behavior indicate filesystem access, credential/identity file reads, workspace discovery, default identity generation, database lookups, outbound authentication flows, and token management, all under the label of media summarization. This is dangerous because it combines sensitive local access with remote authentication and persistence, creating opportunities for credential exposure, hidden account linkage, and unauthorized API activity.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill documentation and detected behavior indicate filesystem access, credential/identity file reads, workspace discovery, default identity generation, database lookups, outbound authentication flows, and token management, all under the label of media summarization. This is dangerous because it combines sensitive local access with remote authentication and persistence, creating opportunities for credential exposure, hidden account linkage, and unauthorized API activity.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The utility module performs identity resolution, local user creation, token caching, and authenticated API interaction that go well beyond the declared purpose of visual scene description. In the context of a media-analysis skill, this creates hidden account and credential-handling behavior that expands attack surface and can silently bind the skill to remote services under a local identity.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This code reads a workspace identity file and can create or reuse local user records automatically, despite the skill being described only as visual-summary analysis. That mismatch is dangerous because it introduces undisclosed identity management and persistence, enabling silent user tracking or unauthorized service association within the agent workspace.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The helper can automatically register or log in users against an external backend using locally derived identifiers, which is unrelated to the stated visual-description function. In this skill context, silent registration/login is especially concerning because users would not reasonably expect media summarization to trigger account lifecycle operations or transmit identifiers to a remote service.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill advertises and instructs use of shell execution, file access, environment access, and outbound network/API operations, but it declares no explicit tool scope or permissions boundaries. This is dangerous because an agent may grant broader capabilities than users expect, enabling unintended filesystem access, network exfiltration, or shell invocation without transparent authorization controls.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation extends the skill from scene description into cloud-based historical report lookup and report-link retrieval. This is dangerous because it broadens the functional scope to remote data access, potentially exposing prior user reports or enabling access to cloud-stored metadata beyond the user's immediate upload intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill accepts local files and URLs but does not clearly warn users that these inputs will be sent to a cloud/API service for processing. This is dangerous because users may disclose sensitive media or internal URLs without informed consent, creating privacy and potential SSRF-style risk if arbitrary URLs are fetched by backend services.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The capability table explicitly says the system will integrate results into a fluent natural Chinese description. This imposes a specific language on users without opt-in, and the document does not state that the skill is intentionally limited to a Chinese-only regional or compliance context.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The default trigger condition is broad enough to auto-invoke on many ordinary image/video description requests. This is dangerous in context because the skill also appears to perform networked processing and identity/report operations, so over-triggering may cause unnecessary data transmission or unintended execution without specific user intent.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation instructs automatic fallback to a local default user and even automatic user creation for identity association. This is dangerous because it can silently link actions to an unintended account, create persistent identifiers without consent, and enable hidden cross-session tracking or data mixing between users.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The method returns a fixed Chinese-language string for analysis output, which imposes a specific language on users without any visible opt-in or configuration path in this file. This matches the language/locale policy violation category because the skill appears to force one locale in user-facing text.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script resolves an internal user identity automatically via OpenIdUtil.resolve_current_open_id without clear user disclosure, consent, or visible help text. In a skill that processes user-supplied media and can list prior analyses, silently binding actions to an internal identity can cause privacy issues, cross-user data exposure, or unexpected attribution of requests.

Content

No source excerpt is available for this finding.

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · skills/smyx_analysis/scripts/skill.py (reported line 28)May include surrounding context.

python
result_json = JsonUtil.parse(result_json_pure_text, result_json_pure_text)

        result_json_common_ai_response = result_json.get("commonAiResponse") if isinstance(result_json,
                                                                                           dict) else result_json
        if result_json_common_ai_response:
            result_json = result_json_common_ai_response

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · skills/smyx_analysis/scripts/skill.py (reported line 33)May include surrounding context.

python
result_json = JsonUtil.parse(result_json_pure_text, result_json_pure_text)

        result_json_common_ai_response = result_json.get("commonAiResponse") if isinstance(result_json,
                                                                                           dict) else result_json
        if result_json_common_ai_response:
            result_json = result_json_common_ai_response

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Multiple hard-coded user-facing messages are in Chinese, including report headers, status, errors, and list output text. The file does not offer a language selection or indicate that the skill is intentionally limited to a Chinese-speaking or region-specific context, which creates a locale policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code reads the entire local file into memory and sends it via self.analysis(...) as multipart upload data, which is a network transmission of user-provided content. In this file there is no confirmation prompt, logging/print disclosure, or explanatory warning comment/docstring near the operation to inform the user that local file contents will be uploaded.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill implements show_analyze_list(open_id, ...) and calls skill.get_output_analysis_list(open_id=open_id), which exposes prior analysis history rather than only generating a description for the user-supplied media. This exceeds the declared skill purpose and can leak metadata or prior outputs tied to an open_id, creating an unnecessary privacy and data-exposure surface if the caller can enumerate or access another user's history.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The CLI includes a hidden --open-id parameter and a --list mode that prints prior analysis records, enabling behavior beyond analyzing current input media. Hidden/internal compatibility arguments increase risk because they can enable undocumented access paths, and the code uses a resolved/current open ID without any visible authorization guard in this file before returning history.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.install_untrusted_source

Install source points to URL shortener or raw IP.

Warn
Code
suspicious.install_untrusted_source
Location
skills/smyx_common/scripts/config-dev.yaml:2