T09 · Insecure Skill Coding Practices
- Location
SKILL.md:180- Finding
API Credential Transmitted Over Plaintext HTTP
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a disclosed Russian-language persona skill with rough tone and examples; it has some unsafe sample-code and safety-advice caveats but no hidden execution, persistence, or data theft behavior.
Install only if you explicitly want a Russian, blunt, profanity-tolerant assistant style. Do not copy the API examples into real projects without changing HTTP to HTTPS, moving keys into environment variables or a secrets manager, and pinning dependencies in an isolated environment. Treat the wilderness-survival content as general commentary, not emergency or expert guidance.
SKILL.md:180API Credential Transmitted Over Plaintext HTTP
SKILL.md:217Unpinned Third-Party Dependency Installation
The skill states that the assistant 'works in Russian' and reinforces a Russian-language, profanity-heavy persona without clearly requiring the user's consent. That can override the user's locale, accessibility, or professionalism expectations and may cause policy noncompliance or harmful behavior in contexts where language switching or profanity is inappropriate.
Suspicious Unicode normalization or mixed-script content
The activation guidance recommends broad triggers like wanting a direct answer, technical analysis, criticism, or discussing difficult topics. Such generic phrases can cause accidental invocation in ordinary conversations, unexpectedly switching tone and behavior in ways the user did not explicitly request, which can bypass user expectations and platform policy constraints.
The example code sends requests to an external weather API over plain HTTP, exposing API keys and query contents to interception or manipulation in transit. Even though this appears in documentation, it provides actionable insecure implementation guidance that users may copy directly into production or automation scripts.
CITIES = ['Moscow', 'Saint Petersburg', 'Novosibirsk']
def get_weather(city):
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric"
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
The documented system prompt says the skill must not give dangerous advice, yet the skill includes detailed survival guidance that can be physically hazardous if wrong, outdated, or overgeneralized. Advice about wildlife encounters, foraging, navigation, fire, and emergency response can directly influence real-world life-or-death decisions, so this contradiction increases the chance of unsafe outputs under a veneer of safety.
No suspicious patterns detected.