T09 · Insecure Skill Coding Practices
- Location
scripts/patch-config.sh:4- Finding
Arbitrary Python Code Execution Through Unsafely Interpolated Configuration Path
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a legitimate GigaChat integration, but it uses sensitive credentials with insecure TLS defaults and unsafe local scripts that users should review before installing.
Install only if you are comfortable reviewing and hardening the scripts first. Pin and verify gpt2giga, require proper CA/TLS verification instead of the insecure fallback, avoid running as root, inspect the config patch before applying it, and confirm nothing important is using port 8443 before starting the proxy.
scripts/patch-config.sh:4Arbitrary Python Code Execution Through Unsafely Interpolated Configuration Path
scripts/start-proxy.sh:45TLS Certificate Verification Is Disabled When a Fixed CA File Is Absent
scripts/setup.sh:3Unpinned Third-Party Proxy Package Is Installed Without Integrity Verification
scripts/start-proxy.sh:24Startup Script Can Terminate Unrelated Processes Through Unvalidated PID and Port Cleanup
Referenced artifact was not completely inspected
- `SKILL.md` — This file
The skill contains mixed-script text, including Cyrillic and likely confusable characters in agent identity content. Mixed-script/confusable Unicode can be used to hide misleading text, create deceptive identities, or evade reviews and pattern-based security checks, especially when the skill also writes persistent agent files.
The skill documents shell execution and file modification behavior but does not declare any explicit tool scope or permissions. This weakens the trust boundary for users and platforms because the skill can start processes, patch configuration, and create files without transparent permission declarations.
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.
1. **GigaChat API Access**:
- Register at https://developers.sber.ru/
- Create a GigaChat API application
- Note your Client ID and Client Secret
- Choose scope: `GIGACHAT_API_PERS` (free tier) or `GIGACHAT_API_CORP` (paid)
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -s -X POST http://localhost:8443/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "GigaChat-Max",
The persistent agent files at this location also contain suspicious mixed-script/confusable text (for example, visually deceptive Cyrillic/Latin substitutions). Combining persistence with deceptive Unicode increases the risk of hidden instructions, misleading identities, or review evasion that survives across sessions.
}
Create agent workspace:
```bash
mkdir -p /root/.openclaw/agents/ruslan/workspace
The persistent agent files at this location also contain suspicious mixed-script/confusable text (for example, visually deceptive Cyrillic/Latin substitutions). Combining persistence with deceptive Unicode increases the risk of hidden instructions, misleading identities, or review evasion that survives across sessions.
}
Create agent workspace:
```bash
mkdir -p /root/.openclaw/agents/ruslan/workspace
The SOUL.md example instructs the agent to always speak Russian and adopt a specific regional context. This is a natural-language locale policy constraint presented without any user choice or opt-in, which can violate language/locale policy requirements.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
- **Free Tier Quotas:** Limited tokens per model
- **SSL Verification:** Disabled by default due to Sber's custom CA; install Sber root CA to `/etc/ssl/certs/sber-ca.crt` to enable
- **Credentials:** Passed via environment variables only (never on the command line); protect `~/.openclaw/gigachat-new.env` with `chmod 600`
## References
The manifest says the skill integrates GigaChat with OpenClaw via a gpt2giga proxy, which implies provider configuration is part of setup, but this file goes beyond passive integration logic by directly patching the user's local OpenClaw config. That persistent file modification is a meaningful behavior not stated in the description.
The script explicitly disables TLS certificate verification when the expected Sber CA file is missing, causing the proxy to trust unauthenticated HTTPS endpoints. This enables man-in-the-middle interception or modification of OAuth/token exchanges and API traffic, which can expose credentials, tokens, prompts, and responses. In the context of a proxy that handles authentication material, this is more dangerous than a generic connectivity workaround.
This code file reads and sources an environment file, then exports GIGACHAT_CREDENTIALS, which indicates access to sensitive credentials. While the script has basic status messages, it does not disclose to the user that sensitive credentials are being loaded from disk, and there is no inline warning comment or confirmation around that operation.
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.
export GIGACHAT_CREDENTIALS
export GIGACHAT_SCOPE="${GIGACHAT_SCOPE:-GIGACHAT_API_PERS}"
nohup gpt2giga \
--proxy.host 127.0.0.1 \
--proxy.port 8443 \
--proxy.pass-model true \
The script launches gpt2giga as a background process bound to 127.0.0.1:8443, redirects output to a log file, and writes a PID file. Although it prints a startup message afterward, there is no prior disclosure in comments or user-facing messaging that the script will start a long-running local proxy and create persistent files under the user's home directory.
No suspicious patterns detected.