T09 · Insecure Skill Coding Practices
- Location
SKILL.md:417- Finding
API Token Transmitted Through a Plaintext HTTP URL
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent SEO auditing guide, but it includes unsafe examples that could expose API tokens and run mutable third-party code.
Review before installing. Use the skill only in a sandboxed project context, pin any npm tools before running them, avoid global installs, and do not copy the Baidu push example as written. Store tokens in environment variables or a secret manager, prefer HTTPS endpoints, and rotate any token already used with the plaintext example.
SKILL.md:417API Token Transmitted Through a Plaintext HTTP URL
SKILL.md:196Unpinned npm Packages May Download and Execute Mutable Third-Party Code
The description says to use the skill whenever the user needs 'seo-audit-master related functionality,' which does not define concrete trigger phrases or clear boundaries for invocation. This broad wording can overlap with many generic SEO-related requests and lacks negative examples beyond a vague statement about 'complex needs.'
The description explicitly states '支持中文交互' and the document consistently presents the skill as Chinese-only, without offering a language choice or documenting a justified region-specific restriction. This can violate language/locale policy because it imposes a locale preference without user opt-in.
The file states "本Skill无需额外API Key配置" at L199, but later says users must register/search-platform access and that tokens are stored in environment variables at L200-L201. This is reinforced by later sections that explicitly say API keys are required and should be configured in environment variables, creating an active contradiction in the skill's documented setup intent.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The skill includes sample code that transmits published post URLs and an access token to http://data.zz.baidu.com/... over plaintext HTTP. This exposes the token and submitted URLs to interception or modification by network attackers, enabling credential theft, unauthorized submissions, or traffic manipulation. In a publishing/SEO workflow, the risk is heightened because users may copy this snippet directly into production WordPress hooks.
add_action("publish_post", "baidu_push");
function baidu_push($post_id) {
$url = get_permalink($post_id);
$api = "http://data.zz.baidu.com/urls?site=blog.example.com&token=YOUR_TOKEN";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api);
curl_setopt($ch, CURLOPT_POST, true);
Earlier setup guidance says no extra API key configuration is needed for the skill itself (L199), but the Q&A at L505-L506 and quick-start at L538-L540 instruct users to configure API keys and establish API connections as a general prerequisite. These statements conflict on the expected operating model and user intent for the skill.
No suspicious patterns detected.