Back to skill

Security audit

cliany-site

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a legitimate web-automation wrapper, but it can drive logged-in browser sessions, send page structure to LLM providers, and install unaudited external code without enough confirmation boundaries.

Review this before installing. Use it only on sites where you are authorized to automate actions, avoid sensitive accounts unless necessary, and assume page structure from logged-in pages may be sent to your configured LLM provider. Prefer a pinned, reviewed release in an isolated environment, and require explicit confirmation before login, form submission, purchases, account changes, or replaying generated adapters.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:53
Finding
Unpinned Remote Repository Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 53–58 **Vulnerability Type**: Unpinned third-party source installation **Risk Level**: Medium **Vulnerable Code**: ```bash # Clone and install git clone https://github.com/pearjelly/cliany.site.git cd cliany.site pip install -e . # Verify cliany-site --version cliany-site doctor --json ``` ### Technical Analysis The installation instructions clone the mutable default branch of a third-party Git repository and install it in editable mode without pinning an immutable commit, verifying a signature or checksum, or reviewing the downloaded source. Although the repository URL matches the Skill's declared homepage and is not an obviously deceptive source, `pip install -e .` can execute Python packaging and build hooks with the installing user's privileges. Because the executable implementation is not included in this Skill artifact, its installation behavior could not be audited. The effective code installed by these instructions can change after the Skill has been reviewed. A compromise of the upstream repository, maintainer account, release process, or dependency chain could therefore introduce arbitrary code into future installations. ### Attack Path 1. An attacker compromises the upstream repository, its maintainer account, or a dependency used by the project. 2. The attacker adds malicious packaging, build, or runtime code to the repository's default branch. 3. A user or autonomous agent follows the instructions in `SKILL.md`. 4. `git clone` retrieves the modified default branch without commit or release pinning. 5. `pip install -e .` invokes the package installation process and any applicable build hooks. 6. The malicious code executes with the privileges of the user performing the installation or later invoking the installed command. ### Impact Assessment Successful exploitation could provide arbitrary code executi ...[truncated 541 chars]
Remediation
## Remediation Suggestions 1. Pin installation to a reviewed release tag and its immutable commit hash rather than the repository's default branch. 2. Verify the release through a trusted signature mechanism and publish a SHA-256 checksum obtained through an independent trusted channel. 3. Prefer a version-pinned package or immutable source archive with hash verification. 4. Use a dedicated virtual environment with a locked dependency set and hash-verified dependency installation. 5. Avoid editable installation for end users unless development behavior is specifically required. 6. Include the executable source and dependency lock files in the audited Skill artifact, or clearly identify them as unaudited external components. 7. Document that users should inspect packaging configuration and build hooks before installation. A hardened example would clone and check out a documented immutable commit, verify that commit or release signature, and only then install inside an isolated virtual environment.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (22)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
There is a clear description-behavior mismatch. The declared purpose describes runtime functionality for automating web workflows via Chrome CDP and LLM, but this code chunk is only an installer. Its primary purpose is local deployment of the skill definition file to supported AI assistant skill folders. While installation may support the broader skill, the code shown does not implement any of the declared web-automation behavior and performs undeclared local file writes to several tool-specific directories. Therefore the supplied code chunk does not accurately represent the declared description.

Unvalidated Output Injection

High
Category
Output Handling
Content
# Explore workflow
cliany-site explore "https://example.com" "submit the contact form" --json

# Execute generated command
cliany-site example.com submit --name "Test" --email "test@test.com" --json
```
Confidence
80% confidence
Finding
Model output is used without validation or sanitization. Unvalidated output injected into downstream contexts (SQL, shell, HTML) enables injection attacks and arbitrary code execution.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill advertises login and arbitrary web workflow automation without warning that it may handle credentials, session data, or perform real actions on third-party sites. In this context, omission of safety boundaries increases the chance that users or agents will automate sensitive flows without adequate consent checks or operational safeguards.

Session Persistence

Medium
Category
Rogue Agent
Content
```bash
# 全局安装(所有项目可用)
mkdir -p ~/.config/opencode/skills/cliany-site
cp SKILL.md ~/.config/opencode/skills/cliany-site/SKILL.md

# 或项目级安装
Confidence
60% confidence
Finding
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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# 全局安装(所有项目可用)
mkdir -p ~/.config/opencode/skills/cliany-site
cp SKILL.md ~/.config/opencode/skills/cliany-site/SKILL.md

# 或项目级安装
mkdir -p .opencode/skills/cliany-site
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# 全局安装(所有项目可用)
mkdir -p ~/.config/opencode/skills/cliany-site
cp SKILL.md ~/.config/opencode/skills/cliany-site/SKILL.md

# 或项目级安装
mkdir -p .opencode/skills/cliany-site
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# 全局安装(所有项目可用)
mkdir -p ~/.config/opencode/skills/cliany-site
cp SKILL.md ~/.config/opencode/skills/cliany-site/SKILL.md

# 或项目级安装
mkdir -p .opencode/skills/cliany-site
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# 全局安装(所有项目可用)
mkdir -p ~/.config/opencode/skills/cliany-site
cp SKILL.md ~/.config/opencode/skills/cliany-site/SKILL.md

# 或项目级安装
mkdir -p .opencode/skills/cliany-site
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# 全局安装(所有项目可用)
mkdir -p ~/.config/opencode/skills/cliany-site
cp SKILL.md ~/.config/opencode/skills/cliany-site/SKILL.md

# 或项目级安装
mkdir -p .opencode/skills/cliany-site
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# 全局安装
mkdir -p ~/.claude/skills/cliany-site
cp SKILL.md ~/.claude/skills/cliany-site/SKILL.md

# 或 OpenClaw 专用路径
Confidence
85% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# 全局安装
mkdir -p ~/.claude/skills/cliany-site
cp SKILL.md ~/.claude/skills/cliany-site/SKILL.md

# 或 OpenClaw 专用路径
Confidence
85% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
### Codex

```bash
mkdir -p ~/.codex/skills/cliany-site
cp SKILL.md ~/.codex/skills/cliany-site/SKILL.md
```
Confidence
85% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
### Codex

```bash
mkdir -p ~/.codex/skills/cliany-site
cp SKILL.md ~/.codex/skills/cliany-site/SKILL.md
```
Confidence
85% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The example trigger phrases are broad natural-language requests that could overlap with ordinary user prompts, causing an agent to invoke this skill unexpectedly. Because the skill performs real browser automation and can explore workflows, unintended activation could lead to navigation, account actions, or data exposure beyond the user's intent.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The invocation guidance uses broad triggers like 'web automation', 'CDP', 'browser CLI', and generic workflow requests, which can cause the agent to activate this skill for a wide range of normal browsing or automation prompts. In context, the skill can drive Chrome, persist sessions, send page structure to an external LLM provider, and generate executable adapters, so overbroad activation materially increases the chance of unintended sensitive actions or data exposure.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The skill explicitly states that an agent may autonomously invoke commands without per-command confirmation. Because those commands can open browser sessions, reuse stored logins, explore authenticated pages, transmit AXTree data to third-party LLM APIs, and generate runnable code, removing confirmation significantly raises the risk of unauthorized actions and inadvertent leakage of sensitive page structure.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The manifest explicitly advertises browser login, workflow exploration, and replay through Chrome CDP and an LLM, but it does not warn that the skill may access authenticated sessions, page contents, cookies/session state, or other sensitive web data. In an agent ecosystem, that omission is security-relevant because it can cause users or orchestrators to invoke high-risk browser automation without informed consent or proper guardrails, increasing the chance of credential exposure, unintended account actions, or collection of sensitive information.

Session Persistence

Medium
Category
Rogue Agent
Content
CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
CODEX_DIR="$CODEX_HOME/skills/cliany-site"
if [ -d "$CODEX_HOME" ] || command -v codex >/dev/null 2>&1; then
  mkdir -p "$CODEX_DIR"
  cp "$SKILL_FILE" "$CODEX_DIR/SKILL.md"
  echo "[OK] Codex: $CODEX_DIR/SKILL.md"
  installed=$((installed + 1))
Confidence
86% confidence
Finding
The script persists SKILL.md into tool-specific skill directories so it will be loaded automatically in future agent sessions. In the context of AI coding assistants, persistence materially increases risk because any unsafe or prompt-injection content in the skill would continue affecting later sessions without renewed user review.

Natural-Language Policy Violations

Low
Confidence
83% confidence
Finding
README 的功能说明、安装说明和使用示例均仅以中文呈现,没有提供英文版本、语言切换说明或区域性限制理由。若组织要求技能说明不应默认强制单一语言而应提供选择或明确告知,这属于语言/locale 策略层面的自然语言问题。

Missing User Warnings

Low
Confidence
86% confidence
Finding
The README instructs users to provide LLM API keys but does not remind them that these credentials are sensitive or how to store them safely. This can lead to accidental disclosure through shell history, checked-in config files, screenshots, or logs, especially in an agent-oriented workflow.

Intent-Code Divergence

Low
Confidence
98% confidence
Finding
The inline security manifest explicitly says 'Environment variables accessed: none', but the code uses $HOME repeatedly and also expands ${CODEX_HOME:-$HOME/.codex}. This is an active contradiction between the documentation comment and the script's actual behavior, even though the variables are used only for local path resolution.

Intent-Code Divergence

Low
Confidence
78% confidence
Finding
The comment summarizes local writes at a high level, but the code performs writes into several distinct per-tool locations under the user's home directory and may create those directories first. While related to the stated purpose, the documentation is less accurate than the concrete behavior and could mislead a reviewer about the breadth of filesystem modification.

Static analysis

No suspicious patterns detected.