T09 · Insecure Skill Coding Practices
- Location
setup-secure.sh:139- Finding
Arbitrary Python Code Execution Through Unsafe Configuration Interpolation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill matches its webhook automation purpose, but its setup and migration helpers handle secrets unsafely and include a real local code-execution risk.
Review this before installing. Treat the webhook key like an account credential, avoid running setup-secure.sh with untrusted or copied webhook URLs, avoid storing real keys in .env.example, .env.migrated, shell history, screenshots, or Git, and delete or protect migration backups. Use test/dry-run first and only run live commands when you intend to trigger the configured RPA workflow.
setup-secure.sh:139Arbitrary Python Code Execution Through Unsafe Configuration Interpolation
setup-secure.sh:73Webhook Signing Keys Are Entered Visibly, Printed, and Written to Plaintext Helper Files
migrate-to-env.sh:16Migration Leaves Additional Plaintext Copies of the Original Signing Key
MANUAL.md:453Documentation Recommends Installing an Unused and Unpinned Third-Party Dependency
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
配置完成后,请手动将 export 命令添加到 ~/.bashrc 或 ~/.zshrc。
# 临时设置(当前终端会话)
export BAZHUAYU_WEBHOOK_KEY="你的签名密钥"
export BAZHUAYU_WEBHOOK_URL="https://api-rpa.bazhuayu.com/api/v1/bots/webhooks/xxx/invoke"
# 永久设置(添加到 ~/.bashrc 或 ~/.zshrc)
echo 'export BAZHUAYU_WEBHOOK_KEY="你的签名密钥"' >> ~/.bashrc
echo 'export BAZHUAYU_WEBHOOK_URL="https://api-rpa.bazhuayu.com/api/v1/bots/webhooks/xxx/invoke"' >> ~/.bashrc
source ~/.bashrc
vim config.json
填入配置(key 留空):
{
"url": "https://api-rpa.bazhuayu.com/api/v1/bots/webhooks/你的 ID/invoke",
"key": "",
"paramNames": ["keyword", "url"],
"defaultParams": {
"keyword": "默认关键词",
"url": "https://example.com"
}
}
python3 bazhuayu-webhook.
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
--prune-empty --tag-name-filter cat -- --all
# 2. 推送更改
git push origin --force --all
# 3. 联系 GitHub/GitLab 支持清除缓存 (如已推送到远程)
The Chinese description frames the skill as a webhook-trigger utility, but the documented workflow includes interactive collection of secrets, creation of local config and .env-related files, permission modification, optional shell environment changes, and migration execution. Even if intended for convenience, these side effects materially expand the trust boundary and could expose or persist sensitive data on disk without users realizing the full scope.
The Chinese description frames the skill as a webhook-trigger utility, but the documented workflow includes interactive collection of secrets, creation of local config and .env-related files, permission modification, optional shell environment changes, and migration execution. Even if intended for convenience, these side effects materially expand the trust boundary and could expose or persist sensitive data on disk without users realizing the full scope.
Referenced artifact was not completely inspected
- **安全指南**: `SECURITY.md` - 安全最佳实践
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<p>本教程详细介绍如何在八爪鱼 RPA 中创建和配置 Webhook 触发器。</p>
<!-- 步骤 1 -->
<div class="step">
<h2><span class="step-number">1</span>进入触发器管理</h2>
<ol>
Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.
config['key'] = env_key
# 3. 加载环境变量中的参数默认值 (BAZHUAYU_PARAM_*)
for env_name, env_value in os.environ.items():
if env_name.startswith('BAZHUAYU_PARAM_'):
param_name = env_name.replace('BAZHUAYU_PARAM_', '')
# 转换为驼峰或小写格式
This markdown file is written entirely in Chinese and does not indicate that other languages are supported or that the Chinese-only presentation is an intentional, justified region-specific requirement. Under the policy rule, forcing a specific language without user opt-in is a natural-language policy violation.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 创建目录
mkdir -p ~/.openclaw/workspace/skills/bazhuayu-webhook
cd ~/.openclaw/workspace/skills/bazhuayu-webhook
# 下载主程序(需要主程序文件)
The manual instructs users to place the Webhook signing key directly in a local config.json file but does not warn about file permissions, secret leakage, or safer secret storage options. Because this key authorizes invocation of remote RPA jobs, exposure could let anyone with filesystem access or access to backups/repositories trigger automation on the user's account.
The run examples show simple commands that trigger a remote Webhook-backed RPA task, but the manual does not clearly warn that these commands will execute automation in the user's external RPA environment. In an agent or copy-paste context, this can lead to unintended job execution, side effects on third-party sites, or use of paid/account-bound resources.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Linux
sudo ntpdate pool.ntp.org
# 或使用 timedatectl
sudo timedatectl set-ntp true
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Linux
sudo ntpdate pool.ntp.org
# 或使用 timedatectl
sudo timedatectl set-ntp true
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Linux
sudo ntpdate pool.ntp.org
# 或使用 timedatectl
sudo timedatectl set-ntp true
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Linux
sudo ntpdate pool.ntp.org
# 或使用 timedatectl
sudo timedatectl set-ntp true
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Linux
sudo ntpdate pool.ntp.org
# 或使用 timedatectl
sudo timedatectl set-ntp true
The quickstart tells users to run test commands but does not explicitly warn that doing so will send a real request to the configured external Webhook endpoint. In this skill’s context, that can unintentionally trigger a remote RPA job, causing side effects such as data collection, task execution, or unintended automation against external systems.
The final instruction to run the tool lacks any warning that execution will invoke the configured remote Webhook and trigger the associated RPA workflow. Because this is the final call-to-action in a setup guide, users are especially likely to execute it immediately without understanding that it performs an external action with potentially irreversible operational effects.
The skill documentation is presented entirely in Chinese from the title onward, with no indication that users may choose another language or that the skill is intended only for a Chinese-speaking or region-specific audience. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern.
This markdown file contains all user-facing security guidance in Chinese, and there is no indication that the skill is region-specific or that users can opt into this locale. That creates a natural-language policy concern because it effectively forces a specific language for understanding safety-critical instructions.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 设置正确权限 (仅所有者可读写)
chmod 600 config.json
# 验证权限
ls -la config.json
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 设置正确权限 (仅所有者可读写)
chmod 600 config.json
# 验证权限
ls -la config.json
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 设置正确权限 (仅所有者可读写)
chmod 600 config.json
# 验证权限
ls -la config.json
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 设置正确权限 (仅所有者可读写)
chmod 600 config.json
# 验证权限
ls -la config.json
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# 设置正确权限 (仅所有者可读写)
chmod 600 config.json
# 验证权限
ls -la config.json