T09 · Insecure Skill Coding Practices
- Location
scripts/publish_wp_article.py:25- Finding
WordPress credentials may be transmitted to an insecure or redirected endpoint
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill publishes approved SEO articles to WordPress and handles credentials in a disclosed but security-sensitive way.
Install only in a trusted workspace, use a dedicated WordPress account with the minimum post-editing permissions, keep the .env file private, verify WP_SITE_URL starts with https://, test with draft status first, and remove the WordPress snippet plus revoke the application password if you stop using the skill.
scripts/publish_wp_article.py:25WordPress credentials may be transmitted to an insecure or redirected endpoint
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
cp .env.example .env
用你的实际信息编辑 .env / Edit .env with your actual values:
The command export $(cat .env | grep "^WP_" | xargs) unsafely parses the .env file through the shell, which can break on spaces, quotes, or shell metacharacters and may unintentionally execute or mis-handle attacker-controlled content if the .env file is modified. In an agent or shared-workspace context, loading secrets this way increases the risk of credential disclosure or command injection via environment-file contents.
Load environment variables and publish a test draft:
export $(cat .env | grep "^WP_" | xargs)
python3 scripts/publish_wp_article.py '{
"title": "Test Article — Please Delete",
This repeats the same unsafe shell-loading pattern for secrets from .env, which can misparse credentials containing spaces and can become dangerous if the file contents are attacker-influenced. Because the skill is intended for automation, this pattern is more risky than in a purely manual local workflow: agents may run it in shared or less-trusted environments.
export $(cat .env | grep "^WP_" | xargs)
python3 scripts/publish_wp_article.py '{
"title": "Top 5 Benefits of Renting Robots for Corporate Events",
The documented command exports secrets from a local .env file into the shell environment before running the publisher. Exposing WordPress credentials as environment variables increases the chance of accidental leakage through process inspection, shell history/workflow logging, inherited subprocess environments, or downstream agent/tool misuse.
cd ~/.openclaw/workspace-marketing
export $(cat .env | grep "^WP_" | xargs)
python3 skills/wp-seo-publisher/scripts/publish_wp_article.py '<json_data>'
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `seo_title` | String | 否 | 自定义 SEO 标题(留空则用 title) |
| `seo_description` | String | 否 | 自定义 meta description(留空则用 excerpt) |
| `tags` | Array | 否 | 标签名称列表(不存在的 tag 会自动创建) |
| `category_id` | Number | 否 | 分类 ID(留空则用 .env 中的默认值) |
| `status` | String | 否 | `publish` 或 `draft`(默认 `draft`) |
## RankMath 免费版自动处理的 SEO 功能
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `seo_title` | String | 否 | 自定义 SEO 标题(留空则用 title) |
| `seo_description` | String | 否 | 自定义 meta description(留空则用 excerpt) |
| `tags` | Array | 否 | 标签名称列表(不存在的 tag 会自动创建) |
| `category_id` | Number | 否 | 分类 ID(留空则用 .env 中的默认值) |
| `status` | String | 否 | `publish` 或 `draft`(默认 `draft`) |
## RankMath 免费版自动处理的 SEO 功能
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
| `seo_title` | String | 否 | 自定义 SEO 标题(留空则用 title) |
| `seo_description` | String | 否 | 自定义 meta description(留空则用 excerpt) |
| `tags` | Array | 否 | 标签名称列表(不存在的 tag 会自动创建) |
| `category_id` | Number | 否 | 分类 ID(留空则用 .env 中的默认值) |
| `status` | String | 否 | `publish` 或 `draft`(默认 `draft`) |
## RankMath 免费版自动处理的 SEO 功能
The skill clearly expects access to environment variables and outbound network connectivity to WordPress, but it does not declare any tool scope restrictions such as allowed tools or permissions. This creates an over-broad execution model where an agent may use more capabilities than necessary, reducing containment if the skill is misused or modified.
This duplicate finding identifies the same risk: persistent application-password based access that survives beyond a single run. In the context of an agent skill with network publishing capability, credential persistence meaningfully increases blast radius if the execution environment is abused.
- WP_CATEGORY_ID
credentials:
- type: wordpress_app_password
description: WordPress Application Password with edit_posts capability. Grants REST API access to create posts and manage tags as the configured user.
---
# WordPress SEO Publisher
This duplicate finding identifies the same risk: persistent application-password based access that survives beyond a single run. In the context of an agent skill with network publishing capability, credential persistence meaningfully increases blast radius if the execution environment is abused.
- WP_CATEGORY_ID
credentials:
- type: wordpress_app_password
description: WordPress Application Password with edit_posts capability. Grants REST API access to create posts and manage tags as the configured user.
---
# WordPress SEO Publisher
The file's operative instructions, requirements, workflow, and warnings are presented in Chinese, which effectively forces a specific language for users and agents consuming the skill. There is no opt-in, alternate language option, or stated region-specific justification that would exempt this from the language/locale policy.
No suspicious patterns detected.