qianfan clawhub

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill matches its marketplace purpose, but its installer has unsafe package extraction and credential-routing behavior that users should review before using.

Use this only with a trusted Baidu endpoint, avoid custom --endpoint values unless you fully trust the server, set an explicit safe --workdir, and install only trusted skill slugs until ZIP path validation and package verification are added.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A malformed or malicious skill package could place or overwrite files outside the expected Qianfan skills folder under the user's permissions.

Why it was flagged

The install destination is built from the requested slug and ZIP member names without a visible normalization or bounds check; malicious '..' or absolute paths in a slug or archive could write outside the intended skill directory.

Skill content
skill_dir = os.path.join(self.skills_dir, slug_name) ... target_path = os.path.join(skill_dir, target_name) ... target_path = os.path.join(skill_dir, name)
Recommendation

Reject slugs and ZIP entries containing absolute paths, '..', drive prefixes, or symlink escapes, and verify each resolved path remains inside the intended skill directory before writing.

What this means

If a user or agent uses an untrusted endpoint, the Baidu API key could be disclosed to that server.

Why it was flagged

The required BAIDU_API_KEY is sent as a Bearer token to whatever endpoint is supplied, while SKILL.md frames the integration as Baidu Cloud services and does not clearly warn about custom endpoints.

Skill content
parser.add_argument('--endpoint', type=str, default=None, help='指定 API 服务器地址') ... url = f"{self.endpoint}/v2/skills/download" ... headers = {'Authorization': f'Bearer {self.api_key}'}
Recommendation

Default to and allowlist the Baidu endpoint, or require explicit user confirmation before sending BAIDU_API_KEY to any custom endpoint.

What this means

Users may assume installed skills have been verified when the code appears to rely mainly on the remote response and ZIP parsing.

Why it was flagged

Downloaded skill packages are trusted and written directly; the reviewed source does not show signature, hash, manifest, or provenance verification despite SKILL.md describing integrated 'verification'.

Skill content
response = requests.get(url, params=params, headers=headers, timeout=60) ... with zipfile.ZipFile(io.BytesIO(response.content)) as zf: ... dst.write(src.read())
Recommendation

Add package signature or checksum verification and document exactly what is verified before installation.

What this means

A local process listening on that port could redirect where downloaded skill files are installed.

Why it was flagged

When --workdir is not provided, an unauthenticated localhost service can determine the default skills directory, which differs from the documented default-only behavior.

Skill content
response = requests.get("http://localhost:4096/path", timeout=5) ... json_data = response.json() ... self.skills_dir = os.path.join(json_data['directory'], 'skills')
Recommendation

Document this local path lookup, validate the returned path, and consider requiring an explicit --workdir or trusted local service identity before using it.