T09 · Insecure Skill Coding Practices
- Location
modules/confirm.js:34- Finding
High-Risk Operations Are Approved Without User Confirmation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This security skill is not clearly malicious, but its core safety protections are unreliable and activation persistently changes the agent's memory.
Review before installing. Do not rely on this package as an enforcement-grade security layer until confirmation actually requires explicit approval, activation has documented scope and rollback, repository verification is hardened, and rollback validates backup files safely.
modules/confirm.js:34High-Risk Operations Are Approved Without User Confirmation
modules/security-check.js:9Official Repository Verification Can Be Bypassed with a Crafted URL
modules/rollback.js:9Rollback Accepts Symbolic Links as Trusted Backup Files
This finding again reflects materially misleading claims about core security functionality. In a security skill, nonfunctional or overstated protections can materially increase risk because users may stop applying other safeguards under the assumption this skill covers them.
This finding again reflects materially misleading claims about core security functionality. In a security skill, nonfunctional or overstated protections can materially increase risk because users may stop applying other safeguards under the assumption this skill covers them.
This finding again reflects materially misleading claims about core security functionality. In a security skill, nonfunctional or overstated protections can materially increase risk because users may stop applying other safeguards under the assumption this skill covers them.
This finding again reflects materially misleading claims about core security functionality. In a security skill, nonfunctional or overstated protections can materially increase risk because users may stop applying other safeguards under the assumption this skill covers them.
This finding again reflects materially misleading claims about core security functionality. In a security skill, nonfunctional or overstated protections can materially increase risk because users may stop applying other safeguards under the assumption this skill covers them.
The function presents a high-risk confirmation prompt but then unconditionally returns true without collecting or validating any user response. This completely defeats the stated protection and allows any caller to proceed with sensitive operations such as deleting files, modifying environment settings, or sending external messages without actual authorization.
Without declared permissions the skill's intent is opaque and cannot be validated.
The description and primary user-facing instructions are presented in Chinese, including the manifest description and main headings, but the document does not state that the skill is China-region-specific or provide an opt-in or alternative language. Under the policy, forcing a specific language without user choice can be a natural-language policy violation.
All user-facing natural-language strings and operational instructions in this file are presented only in Chinese, with no opt-in or alternative locale. Under the stated policy, forcing a specific language without user choice is a natural-language policy violation unless the locale restriction is justified and documented.
The skill presents itself as an enterprise security suite providing confirmation gates, backups, rollback, and safety checks, but the script only inserts policy text into a memory database. This creates a dangerous false sense of protection: users may rely on controls that are not actually enforced, leading to unsafe high-risk operations proceeding without real safeguards.
The activation output explicitly claims that the AI will automatically perform multiple security controls after restart, but no such mechanisms are implemented in this script. Misrepresenting advisory configuration as active security enforcement can cause operators to trust the system in situations where destructive actions remain unprotected.
The user-facing confirmation messages and required reply keywords are presented in Chinese, and the prompt instructs the user to reply with Chinese options such as "确认" or "是". This creates a language/locale constraint in the skill's natural-language behavior without any visible opt-in or alternative locale handling.
This code includes natural-language strings entirely in Chinese, including the module description and the default rollback reason, with no indication that the skill is region-specific or that users may choose another language. That creates a locale policy issue because the skill implicitly enforces a single language for interaction and logging.
This JavaScript file contains multiple natural-language strings shown to users, such as risk messages and the generated report, all written only in Chinese. Because the skill forces a specific language in user-facing output with no documented opt-in or locale selection, it violates the language/locale policy criterion.
The activation script invokes shell commands via docker exec and psql to modify a local PostgreSQL database, giving the skill direct mutation capability outside the application's normal APIs. While the current inputs are hardcoded, this design expands the attack surface and couples installation to privileged subprocess execution that could be abused if the script or environment is altered.
This code executes a shell command via execSync to insert and update records in the memory database, which is a state-changing operation. While the script prints progress messages, it does not clearly disclose that running activation will modify persistent database contents or upsert existing entries.
The console log emits a Chinese-only status message ('已加载') with no alternative language or localization choice. This is a natural-language policy concern because it imposes a specific language on users without opt-in or documented justification.
The file contains natural-language strings in Chinese and presents user-facing status/error output only in that language. Under the policy, forcing a specific language without user opt-in is a locale/language constraint that should be documented or made configurable.
Detected: suspicious.dangerous_exec