T09 · Insecure Skill Coding Practices
- Location
render.py:100- Finding
Configuration-Controlled Skill Name Enables Output Path Traversal
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is mostly a coherent real-estate skill kit, but its generator and installer have local file-boundary flaws that users should review before installing.
Review before installing. Only run render.py and install.sh on configurations and generated skill directories you trust, inspect generated SKILL.md and manifest.json before installation, avoid rendering untrusted YAML, and verify all tax, loan, and policy outputs against current official sources before using them for real transactions.
render.py:100Configuration-Controlled Skill Name Enables Output Path Traversal
install.sh:86Unvalidated Manifest Entry Allows Arbitrary Local File Hashing
This overview advertises business-domain real-estate skills, but also includes instructions for generating branded skills and installing them into local agent directories via install.sh. That introduces system-level file write/installation behavior not clearly scoped in the metadata, which can mislead users into invoking a skill expecting advisory content while it performs local environment modification.
This overview advertises business-domain real-estate skills, but also includes instructions for generating branded skills and installing them into local agent directories via install.sh. That introduces system-level file write/installation behavior not clearly scoped in the metadata, which can mislead users into invoking a skill expecting advisory content while it performs local environment modification.
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
try:
from ruleengine import get_rules as _gr
rules, _ = _gr("loanterm", city=city)
return rules
except Exception:
return {}
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
try:
from ruleengine import get_rules as _gr
rules, _ = _gr("loanterm", city=city)
return rules
except Exception:
return {}
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
try:
from ruleengine import get_rules as _gr
rules, _ = _gr("loanterm", city=city)
return rules
except Exception:
return {}
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
try:
from ruleengine import get_rules as _gr
rules, _ = _gr("loanterm", city=city)
return rules
except Exception:
return {}
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
try:
from ruleengine import get_rules as _gr
rules, _ = _gr("loanterm", city=city)
return rules
except Exception:
return {}
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
try:
from ruleengine import get_rules as _gr
rules, _ = _gr("loanterm", city=city)
return rules
except Exception:
return {}
This file contains multiple natural-language statements such as the Chinese title and branding text like "中文房产 AI" and "中文精选列表" that position the skill and publishing flow around a single language/locale. Under the policy, forcing or assuming a specific language without user opt-in can be a natural-language policy violation unless the locale constraint is clearly documented and justified as region-specific.
The README describes the repository as a Chinese real-estate AI skill set and explicitly emphasizes it as a Chinese-language toolkit, which amounts to a language/locale constraint in the skill description. There is no indication that users may opt into another language or locale, nor a documented justification limiting the skill to a region-specific compliance scope.
Without declared permissions the skill's intent is opaque and cannot be validated.
The invocation text is extremely broad—covering installation, usage, generation, and role-based selection for essentially any real-estate-related AI skill request. Overbroad matching can cause this skill to activate in contexts where it is not the best fit, increasing the chance that users are routed into installation/generation flows or exposed to unrelated capabilities without clear intent.
The top-level description is written as a Chinese-only usage directive and presents the skill as oriented to Chinese-language interaction, without indicating that the user may choose another language. Under the stated policy, forcing a specific language without opt-in is a natural-language policy concern.
The entire skill documentation is written only in Chinese, including headings and operational instructions, with no indication that language selection is optional or that the skill is intentionally limited to a Chinese-speaking context. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation.
The file’s user-facing natural-language content, field values, and examples are entirely in Chinese, and there is no indication that the user can choose another language or that the locale restriction is explicitly documented as a justified regional constraint. Under the stated policy, forcing a specific language without user opt-in is a language/locale policy concern.
The trigger list is very broad and consists of common real-estate terms such as '买房', '新房', '小区', and '房源'. This can cause the skill to activate in routine conversation outside the user's intended scope, leading to unintended routing, over-collection of context, or inappropriate tool/skill invocation in adjacent housing discussions.
The trigger list includes generic real-estate shopping terms such as '湖景房', '买房', '售楼处', '认筹', '户型', and '价格', which are common across many unrelated property queries. This can cause the skill to activate outside its intended project scope, increasing the chance of misrouting users into branded sales flows, collecting leads inappropriately, or presenting project-specific claims when the user did not ask for this development.
The trigger keywords include broad, everyday housing phrases such as '买房', '找房', and '看小区' without clear constraints on user intent, geography, or workflow stage. This can cause the skill to activate too broadly, leading to unintended invocation in unrelated conversations and increasing the risk of over-collection of context or steering users into sales/conversion flows they did not explicitly request.
This Python file includes its primary natural-language documentation and usage text only in Chinese, which effectively forces a specific language for users interacting with the skill. Under the policy, language constraints should offer user choice or be clearly documented as justified; neither is present here.
The quick-start section encourages immediate use of calculators while the critical caveat that all policy rules are only demonstration data appears much later under '已知边界'. For a real-estate finance/tax tool, users may act on incorrect tax, loan, or qualification outputs, causing financial loss or compliance mistakes because the warning is not prominent at the point of use.
The description uses broad trigger wording such as '用户问房贷月供、买房税费、新房交房费用、楼层差价或折扣叠加测算', which can cause the agent to invoke this skill for loosely related housing-finance queries without a tight boundary. Over-broad invocation criteria increase the chance of inappropriate routing, misleading financial output, or unnecessary exposure of user financial details to a tool when a simpler conversational answer would suffice.
The file's natural-language interface is entirely in Chinese, including the module description, CLI help text, runtime output, and error messages. This imposes a specific language/locale on users without any opt-in or configurable alternative, which matches the language-policy violation criteria.
This file contains extensive natural-language instructions and output text exclusively in Chinese, including the module docstring and CLI help context. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified, which is not stated here.
This code file embeds all user-facing instructions and descriptions in Chinese, including the main module docstring and command help text context, which effectively forces a specific language for users. The policy requires flagging language or locale constraints when the skill does not offer a language choice or clearly justify the restriction.
This Python skill is a code file, so SQP-3 applies. The natural-language strings present the tool entirely in Chinese and the CLI description also fixes the language, with no opt-in, alternate locale, or justification that the skill is strictly region- or locale-bound; this can violate a language/locale policy requiring user choice.