Back to skill

Security audit

One Person Company OS

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its stated business-dashboard purpose, but one runtime helper exposes an under-disclosed way to run arbitrary local Python scripts.

Review before installing. Normal use should be limited to the documented commands and a workspace path you explicitly approve. Do not let an agent invoke scripts/ensure_python_runtime.py with --apply --run-script unless the target is a trusted repository script and you have reviewed the resolved path.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/ensure_python_runtime.py:198
Finding

Unrestricted Local Python Script Execution Through Runtime Helper

Content
View full analysis
int: completed = subprocess.run([runtime_path, script_path, *script_args]) return completed.returncode ``` ```python parser.add_argument("--apply", action="store_true", help="兼容开关:可直接重跑目标脚本,但不会自动安装系统依赖") parser.add_argument("--run-script", help="可选,指定一个目标脚本;如果有兼容解释器则直接用它运行") ``` ```python if args.apply: if current_supported and args.run_script: return_code = run_script_with_runtime(sys.executable, args.run_script, run_args) action_summary = pick_text(language, "已用当前兼容 Python 运行目标脚本", "Ran the target script with the current compatible Python") elif compatible_runtime and args.run_script: return_code = run_script_with_runtime(compatible_runtime["executable"], args.run_script, run_args) action_summary = pick_text(language, "已用兼容 Python 运行目标脚本", "Ran the target script with the compatible Python interpreter") ``` ### Technical Analysis The `--run-script` argument accepts an unrestricted filesystem path. When combined with `--apply`, that path is passed directly to a Python interpreter without path validation, repository containment, or an allowlist of approved project scripts. Although the subprocess call uses an argument array and is therefore not vulnerable to shell metacharacter injection, it still provides an arbitrary code-execution primitive: any readable Python file selected by the caller can be executed with the privileges of the current agent process. The repository already contains an `ensure_within_directory` helper in `scripts/common.py`, but this execution path does not use it. The behavior also conflicts with the documented statement in `SKILL.md` that `scripts/ensure_python_ru ...[truncated 1697 chars]
Remediation
View remediation
Path: scripts_dir = (Path(__file__).resolve().parent).resolve() candidate = Path(script_path).expanduser().resolve() try: candidate.relative_to(scripts_dir) except ValueError as exc: raise ValueError("Target script must remain inside the repository scripts directory") from exc if candidate.name not in ALLOWED_SCRIPTS or not candidate.is_file(): raise ValueError("Target script is not an approved executable script") return candidate ``` The validated resolved path should then be passed to `subprocess.ru ...[truncated 7 chars]
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (125)

Tp4

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

The declared description suggests a broad skill for building a visual operating dashboard spanning multiple business areas (promise, buyer, product, delivery, cash, learning, assets). The supplied code, however, is narrowly focused on advancing the revenue/sales pipeline. It accepts counts for funnel stages, updates next revenue action, appends opportunities, saves state, and refreshes related workspace/dashboard outputs. While rendering a workspace/dashboard is tangentially related to a cockpit, the primary purpose of this code chunk is operational sales pipeline updating, not building a comprehensive multi-domain visual cockpit. Therefore the behavior is materially narrower and different from the declared purpose.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding

The declared description suggests a visual business dashboard/cockpit for broad operational oversight. The code instead builds structured role-agent brief documents for specific operating roles, either printing them or saving them as files. Its primary purpose is document generation for role execution and handoff, not creating a visual cockpit interface. While some arena concepts overlap with company operations, the implemented functionality is materially different from the declared purpose.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description suggests a broader product capability: building a visual business operations dashboard/cockpit spanning multiple company domains. The supplied code instead performs a narrow operational task: accepting CLI arguments for a calibration reason/decision/next action, updating stored state, rendering the workspace, writing a record, and generating a runtime report. While this may support an operating cockpit workflow, its primary behavior is state mutation and recordkeeping for calibration decisions, not constructing or presenting a visual cockpit. The actual functionality is therefore materially narrower and different from the declared purpose.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description describes a substantial business dashboard/cockpit capability spanning multiple operational domains. The supplied code does not implement any cockpit, visualization, business tracking, or related functionality. It only emits a deprecation message for an old calibration command and exits with a nonzero status. This is a materially different primary purpose, so it is a clear mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description suggests the skill's purpose is to build a visual operating cockpit/dashboard for a one-person AI-native company. However, this code chunk's primary function is narrower and different: it saves the current workspace state as a recoverable checkpoint, records metadata about why it was saved, and emits a runtime report. Although it does call render_workspace and references a dashboard artifact, that appears to be a supporting side effect of persisting state rather than implementing the cockpit-building capability itself. Therefore the code's actual primary behavior is checkpoint persistence and reporting, which is a materially different purpose from the declared description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about building a visual business operations dashboard/cockpit for a one-person AI company. The supplied code does not implement any dashboard, visualization, business-domain logic, or cockpit functionality. Instead, it is an environment/setup script focused on Python runtime compatibility and recovery actions across macOS, Windows, and Linux. Its primary purpose is materially different from the declared purpose, so this is a clear mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared purpose describes creating a visual business operating dashboard/cockpit covering multiple company functions. The supplied code instead is narrowly focused on producing a formal DOCX artifact document in a company workspace, updating related files, saving state, and logging/reporting execution. While this may support operations documentation, its primary purpose and user-facing behavior are materially different from building a visual cockpit. No special permissions are declared, but the mismatch is primarily functional rather than permission-based.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description promises a visual operating cockpit for managing multiple business domains. The supplied code does not build a cockpit, UI, or business management view. Instead, it is a CLI preflight utility that checks runtime readiness, determines persistence mode, loads existing state if present, and prints/emits a status report about environment and next actions. This is a materially different primary purpose from the declared description, so it should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared purpose describes a substantive business dashboard/cockpit capability spanning multiple operational areas. The supplied code does not implement any such functionality. Instead, it is a minimal deprecated wrapper that outputs a message to stderr and exits with a nonzero status. This is a materially different primary purpose, so it should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description promises a visual business operating cockpit spanning multiple company-management domains. The supplied code does not implement any cockpit, visualization, business tracking, or related functionality. Instead, it is a small deprecated CLI utility that emits an error/deprecation message and exits. Its primary purpose is materially different from the declared description, so this is a clear mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description suggests substantial business operating or dashboard functionality, potentially a visual cockpit spanning multiple domains. However, the actual code does not build, display, or manage any cockpit or business data. It simply emits a deprecation message for an old command and instructs the user to use other scripts instead. This is a materially different primary purpose, so it should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description suggests an end-user/business-facing skill that builds a visual operating dashboard for managing a one-person AI company. The supplied code does not implement dashboard creation, business operations visualization, or management across promise/buyer/product/delivery/cash/learning/assets. Instead, it performs developer-oriented QA checks on repository packaging for multiple platform adapters, including file existence checks, manifest validation, textual content assertions, and MCP server tool validation. This is a materially different primary purpose, so the description does not accurately represent the code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about creating a visual operating dashboard for managing multiple business dimensions. The supplied code does not implement any cockpit or visualization behavior; it only delegates execution to a validate_release.main() function as a command-line validation entry point. This is a materially different primary purpose, so the description does not accurately represent the code chunk.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

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).

Content

Scanner excerpt · scripts/ensure_python_runtime.py (reported line 177)May include surrounding context.

python
"platform": os_release.get("PRETTY_NAME", "Arch Linux"),
                    "installer": "pacman",
                    "title": pick_text(language, "通过 pacman 安装兼容 Python", "Install a compatible Python via pacman"),
                    "commands": [["sudo", "pacman", "-Sy", "--noconfirm", "python"]],
                    "notes": [pick_text(language, "Arch 默认提供当前 Python 3。", "Arch provides the current Python 3 by default.")],
                }
            )

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
80% confidence
Finding

Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.

Content

Scanner excerpt · scripts/localization.py (reported line 354)May include surrounding context.

python
},
        "risks": {
            "zh-CN": ["问题积压", "只修小问题不修价值交付", "有数据但没有判断"],
            "en-US": ["Issue backlog growth", "Fixing only surface issues instead of value delivery", "Having data without judgment"],
        },
    },
    "grow": {

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

Lines L31-L32 state that Chinese users default to all-Chinese output and English users default to all-English output. This imposes a language behavior based on assumed user identity rather than explicitly offering a language choice, which matches the policy-violation category for language or locale constraints.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file contains contributor instructions in Chinese across the main actionable bullets, which can impose a language requirement on contributors. The policy allows locale constraints only when explicitly justified or when users are given a choice, neither of which appears here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Because this is a markdown file, natural-language policy review applies. The phrase "a Chinese-first workspace with Chinese file names and operating language by default" imposes a default locale preference rather than presenting language choice as user opt-in, which matches the language-policy violation criteria.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill declares shell, file read, and file write capabilities implicitly through recommended commands and workspace persistence behavior, but it does not explicitly constrain or disclose its tool scope. That weakens least-privilege protections and can allow broader-than-expected execution or file modification if the hosting agent grants default tool access.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The user-facing description and default prompt are written entirely in Chinese, which implies a fixed language/locale experience without offering the user a choice or opt-in. The policy explicitly flags language or locale constraints when they are imposed without user selection or documented justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The natural-language values for the role's display name, workspace filename, and mission are entirely in Chinese, which implies a fixed language/locale for the skill experience. The file does not indicate that language is user-selectable or that the Chinese-only presentation is required for a justified region-specific use case.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest’s user-facing fields are written entirely in Chinese, including the display name, mission, inputs, and outputs, with no indication that the skill is region-specific or that users may choose another language. This can violate language/locale policy when a skill implicitly enforces one language without opt-in or justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest uses Chinese-only natural language for the display name, workspace filename, and mission without indicating that the role is region-specific or offering any language choice. This can violate language/locale policy where skills must not force a specific language absent user opt-in or documented justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This manifest contains user-facing fields such as display name, mission, inputs, outputs, and constraints exclusively in Chinese. Because the file provides no indication that Chinese is optional, configurable, or justified as a region-specific role, it may violate language/locale policy by imposing a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest uses Chinese-only display and operational field values, including the role name and mission text, with no indication that the skill is region-specific or that users may opt into another language. This can violate a language/locale policy when skills are expected to avoid forcing a specific language absent explicit justification or user choice.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.