微信公众号发布工具

Security checks across malware telemetry and agentic risk

Overview

This WeChat publishing skill matches its stated purpose, but it handles high-impact account credentials and public posting with some under-disclosed persistence and safety gaps that users should review carefully.

Install only if you trust the code with your WeChat official-account credentials. Prefer draft mode, preview every article, avoid direct publishing unless you explicitly confirm it, store secrets outside the project when possible, and delete or rotate token caches/logs if you stop using the skill.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Risk analysis

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.

#
ASI03: Identity and Privilege Abuse
Medium
What this means

Anyone who can read that cache file could potentially use the account token until it expires, including for publishing-related actions.

Why it was flagged

The skill caches a WeChat access token that can be used to act as the public account. File mode 600 helps, but the token is still stored in plaintext and this is not clearly surfaced in the main metadata.

Skill content
"access_token": self._access_token ... with open(self.cache_file, 'w', encoding='utf-8') as f: json.dump(cache, f, ensure_ascii=False, indent=2) ... os.chmod(self.cache_file, 0o600)
Recommendation

Store tokens in an OS keychain or encrypted store, document the cache location, and provide a clear cleanup/rotation command.

#
ASI02: Tool Misuse and Exploitation
Medium
What this means

A mistaken or premature invocation could send content to the public WeChat account audience rather than only saving a draft.

Why it was flagged

The skill exposes direct public/mass publishing capability. This is central to the skill, but the primary instructions do not explicitly require a draft preview or user confirmation before direct publication.

Skill content
python publish.py --publish "文章标题" "文章内容" ... **WeChatAPI** ... `publish_all()` - 群发消息
Recommendation

Default to draft mode, require explicit user confirmation for `--publish`/mass-send actions, and show the final title/content/template before publishing.

#
ASI06: Memory and Context Poisoning
Medium
What this means

Local logs may reveal information about unpublished drafts or uploaded media if another process or user can access them.

Why it was flagged

The included audit acknowledges that logs can retain WeChat media IDs, draft IDs, and image URLs. These persistent artifacts may expose account-related publishing data.

Skill content
H-02: 日志文件可能泄露敏感信息 ... media_id 未完全脱敏 ... 草稿 ID 可能被利用 ... 图片 URL 暴露公众号信息
Recommendation

Reduce logged identifiers, rotate logs, make cleanup paths relative to the skill directory, and document where logs are stored.

#
ASI08: Cascading Failures
Medium
What this means

Untrusted or copied article content could be transformed into unsafe HTML and propagated into a public publishing channel, even if WeChat later filters some content.

Why it was flagged

The audit reports that Markdown is converted to HTML without filtering dangerous tags before the content is sent into a publishing workflow.

Skill content
Markdown 转 HTML 可能存在 XSS ... html = markdown.markdown(...) ... return html  # ❌ 未过滤危险标签
Recommendation

Sanitize HTML with a strict allowlist before draft or publication, and preview the sanitized result before sending it to WeChat.

#
ASI10: Rogue Agents
Low
What this means

If enabled, scheduled publishing may run later without the user actively watching each post.

Why it was flagged

The guide documents an optional persistent scheduled publishing setup. It is user-directed and purpose-aligned, but it can continue running after setup.

Skill content
创建定时任务(macOS) ... launchctl load ~/Library/LaunchAgents/com.wechat.publish.plist
Recommendation

Use scheduled mode only for reviewed content, document how to disable it, and require approval before any scheduled job performs direct publication.

#
ASI04: Agentic Supply Chain Vulnerabilities
Low
What this means

Users need to install Python dependencies locally and should understand that this adds third-party code to the environment.

Why it was flagged

The skill requires local package installation even though registry metadata says there is no install spec. The provided requirements are version-pinned, so this is mainly an install-disclosure gap rather than evidence of malicious behavior.

Skill content
pip install -r requirements.txt
Recommendation

Declare the install step and dependencies in metadata/install specs, keep versions pinned, and install in a virtual environment.

#
ASI03: Identity and Privilege Abuse
Low
What this means

Installing users must provide secrets that let the tool access their WeChat publishing account and optional image services.

Why it was flagged

The skill requires WeChat account credentials and optional image-provider API keys, but registry metadata lists no required environment variables or primary credential. The credential need is purpose-aligned and disclosed in the documentation.

Skill content
编辑 config.yaml 填入 AppID 和 AppSecret ... export DALL_E_API_KEY="sk-..."
Recommendation

Document all required and optional credentials in registry metadata, prefer environment variables or a secret manager, and avoid committing populated config files.