Back to skill

Security audit

Yufluent Clawhub Publish Yufluentcn Review Intel

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent cloud review-analysis client, but it can send the user's API token and review text to an arbitrary configured HTTP endpoint.

Review the endpoint configuration before installing or running this skill. Only use a trusted HTTPS TOKENAPI_BASE_URL, avoid submitting personal or confidential review content unless you accept cloud processing, and treat the TOKENAPI_KEY as a revocable secret. The package does not look malicious, but the endpoint and transport controls need careful handling.

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

Warning
Location
scripts/yufluent_api.py:211
Finding

Arbitrary API endpoint configuration can expose bearer credentials and review data over plaintext HTTP

Content
View full analysis
str: base = (base_url or "").strip().rstrip("/") if not base: base = "http://localhost:8080/v1" if base.endswith("/v1"): return base return f"{base}/v1" ``` ```python def _auth_headers(api_key: str) -> dict[str, str]: return { "Authorization": f"Bearer {api_key}", "Accept": "application/json", } ``` ```python root = base_url or os.getenv("TOKENAPI_BASE_URL", "") url = skill_run_url(root, skill_id) try: resp = _post_json(url, api_key=key, body=payload, timeout=timeout) except requests.RequestException as exc: raise YufluentApiError(f"Request failed: {exc}") from exc ``` ### Technical Analysis The client obtains its network destination from the optional `base_url` argument or the `TOKENAPI_BASE_URL` environment variable. The URL normalization logic accepts arbitrary schemes and hosts without enforcing TLS, rejecting embedded credentials, or restricting the destination to a trusted Yufluent service. The request includes two sensitive data classes: 1. `TOKENAPI_KEY`, transmitted in the `Authorization: Bearer` header. 2. The complete analysis payload, including the review text read from an explicitly supplied file or command-line value, product information, language, and platform. Sending these values to a cloud service is necessary for the Skill's declared cloud-based review-analysis functionality. The security defect is that the same sensitive values can be sent to any configured endpoint, including a remote endpoint using plaintext HTTP. The default loopback HTTP endpoint is not itself an Internet disclosure, but the implementation does not limit ...[truncated 2322 chars]
Remediation
View remediation
s ...[truncated 761 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
Findings (15)

Tainted flow: 'url' from os.getenv (line 271, credential/environment) → requests.post (network output)

Critical
Category
Data Flow
Confidence
94% confidence
Finding

The code allows the request destination to be influenced by TOKENAPI_BASE_URL/base_url, then sends a bearer API key and arbitrary JSON payload to that URL via requests.post. If an attacker can control environment variables or skill configuration, this becomes SSRF/exfiltration of credentials and user data, made worse by the default allowance of plain HTTP in normalize_api_root.

Content

Scanner excerpt · scripts/yufluent_api.py (reported line 150)May include surrounding context.

python
}
    if body is not None:
        kwargs["json"] = body
    return requests.post(url, **kwargs)


def _raise_for_status(resp: requests.Response) -> None:

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · SKILL.md (reported line 31)May include surrounding context.

md
## 快速开始(3 步,60 秒)

1. **注册获取 API 密钥** → https://claw.changzhiai.com/login (新用户即送体验积分,无需绑卡)
2. **设置环境变量**:export TOKENAPI_KEY=*** 或写入 .env 文件
3. **运行**:参照下方 Examples 示例执行 python scripts/run.py ...

> 还没注册?前往 https://claw.changzhiai.com/login 免费获取密钥。

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
79% confidence
Finding

The README is entirely in Chinese and names the skill yufluentcn-review-intel, suggesting a fixed Chinese-language experience. The file does not state that the language restriction is optional or justified as a region-specific tool, which may conflict with language-choice policy.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly states that review analysis is executed via a cloud service, but it does not clearly warn users that raw review content may be transmitted off-host to a remote provider. This creates a privacy and data-handling transparency issue: users may submit customer reviews containing personal data, confidential business information, or regulated content without informed consent or appropriate controls.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill repeatedly states that analysis is performed via a cloud Harness, but it does not give a prominent, explicit warning that submitted review text will be transmitted to an external service. Although it advises against including PII later in the document, the absence of an upfront privacy/transmission notice increases the risk of users sending sensitive commercial or personal data without informed consent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad, generic review-analysis requests that overlap with common user intents. This can cause the skill to activate unexpectedly and route user data into this workflow, including cloud processing, when the user may not have explicitly chosen this specific third-party skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The file uses Chinese-only user-facing text in the docstring and argument help, and --lang defaults to zh. This enforces a specific language/locale by default rather than clearly offering a neutral default or explicit opt-in, which can violate language-choice policy.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script sends user-provided review text to a remote cloud API via run_skill(...), but this file provides no explicit warning, consent prompt, or data-handling notice before transmitting potentially sensitive content. In a review-analysis skill, users may paste proprietary customer feedback, internal moderation notes, or personal data, so silent cloud transmission creates a real privacy and compliance risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file contains user-facing natural-language messages and instructions entirely in Chinese, including errors and operational guidance, with no indication that language selection is configurable or intentionally limited to a Chinese-specific deployment. That creates a locale policy concern under the rule for forced language without user opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This code file performs network operations to a remote service and includes authenticated requests using a bearer token, but it provides no user-facing print/log/comment warning that user-provided payloads and credentials will be sent over the network. The default base URL is also plain HTTP, which increases the sensitivity of the undisclosed transmission behavior.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The dependency is specified with a lower bound only (requests>=2.31.0), which allows future installs to resolve to different versions over time. This weakens reproducibility and can unintentionally introduce vulnerable or breaking releases, making security posture harder to verify.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
requests>=2.31.0

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
89% confidence
Finding

Because requests is not pinned to a specific version, it is impossible to determine from this manifest alone whether the installed version includes fixes for known advisories. That uncertainty can result in deployment of an affected release, especially across different environments or at different installation times.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The module docstring is written entirely in Chinese and does not provide an English alternative, user opt-in, or any justification that this skill is region-specific. Under the policy, forcing a specific language without user choice can be a natural-language locale violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The natural-language strings in the module and function docstrings are written only in Chinese, which imposes a specific language/locale on maintainers or users reading embedded help without any opt-in or documented locale constraint. Under the policy, language-specific behavior should either offer user choice or be clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The top-level docstring frames the file as a cloud thin client, which suggests a simple invocation wrapper. However, the module also implements record_outcome for posting execution outcomes to /v1/agent/outcomes, an additional behavioral role not reflected in the documentation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.