Back to skill

Security audit

Skill 9 0.1.0

Security checks for vulnerabilities and agentic risk

Overview

This skill is an internet-access tool bundle, but it asks for sensitive account cookies and installs unpinned remote code with broad follow-on capabilities.

Install only if you are comfortable letting this skill add unpinned third-party tooling and handle authenticated sessions for multiple platforms. Do not paste primary-account cookies into chat; use dedicated low-privilege accounts, avoid browser-wide cookie extraction unless you have inspected the tool, and require explicit approval before any posting, liking, commenting, or account-changing action.

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

T08 · Insecure Dependencies

Error
Location
SKILL.md:30
Finding

Unpinned Remote Dependency Is Installed and Executed from a Mutable GitHub Branch

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 30-38
Vulnerability Type: Unpinned remote dependency and supply-chain code execution
Risk Level: High

Vulnerable Code

bash
## Setup

```bash
pip install https://github.com/Panniantong/agent-reach/archive/main.zip
agent-reach install --env=auto
agent-reach doctor

install auto-detects your environment and installs core dependencies (Node.js, mcporter, xreach CLI, gh CLI, yt-dlp, feedparser).

text

### Technical Analysis

The setup instructions install a Python package directly from the mutable `main` branch of a user-controlled GitHub repository. No immutable commit, signed release, version constraint, or cryptographic hash is specified. Consequently, the code retrieved during installation may differ from the code that was reviewed.

Installing a Python source archive can execute attacker-controlled packaging and build logic. The subsequently installed `agent-reach` command is then explicitly invoked with `install --env=auto`, which is described as installing several additional tools. This expands the effective supply chain beyond the reviewed skill and delegates package installation and environment modification to remotely maintained code.

Although downloading dependencies is relevant to the declared installer functionality, using an unpinned mutable branch and permitting it to install further components exceeds the minimum safe privilege needed. A fixed, verified release would provide the same functionality with substantially less supply-chain risk.

### Attack Path

1. An attacker compromises the referenced GitHub account, repository, dependency chain, or maintainer credentials.
2. The attacker modifies the repository's `main` branch or its packaging configuration.
3. A user or agent follows the skill instructions and runs the `pip install` command.
4. The malicious package executes during installation or when the installed `agent-re
...[truncated 827 chars]
Remediation
View remediation

Remediation Suggestions

  • Publish and install a specific, reviewed package release from a trusted package registry.
  • If installation from GitHub is unavoidable, pin the URL to an immutable full commit hash rather than main.
  • Require hash verification, such as pip install --require-hashes, against a separately distributed trusted digest.
  • Verify release signatures or attestations and document the expected publisher identity.
  • Audit and pin every dependency installed by agent-reach install; do not dynamically install unspecified latest versions.
  • Present the complete installation plan and obtain explicit user approval before adding Node.js, global npm tools, CLIs, services, or other system components.
  • Run installation in an isolated virtual environment or container with restricted filesystem and network access.
  • Avoid elevated execution and fail safely if the installer attempts to invoke sudo or modify system-wide locations.

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:48
Finding

Raw Session Cookies and Proxy Credentials Are Exposed Through Agent and Command-Line Interfaces

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 48-53 and 68-79
Vulnerability Type: Unsafe handling of authentication cookies and plaintext credentials
Risk Level: High

Vulnerable Code

bash
## Configure channels

```bash
agent-reach configure twitter-cookies "auth_token=xxx; ct0=yyy"
agent-reach configure proxy http://user:pass@ip:port
agent-reach configure --from-browser chrome    # auto-extract cookies from local browser
text

```text
### Cookie import for all platforms requiring login

> Important warning: Platforms using cookie-based login carry an account-ban risk. Users should be reminded to use a dedicated secondary account.

For all platforms requiring cookies, such as Twitter and XiaoHongShu, prefer Cookie-Editor import:

1. The user logs into the relevant platform in their browser.
2. The user installs Cookie-Editor.
3. The user selects Export, then Header String.
4. The user sends the exported string to the Agent.

Local users may also use `agent-reach configure --from-browser chrome` to extract cookies automatically.

Technical Analysis

The skill directs users to send complete exported cookie header strings to the agent. Authentication cookies such as auth_token are bearer credentials: possession may be sufficient to impersonate the user without knowing the account password. Sending them through an agent conversation may expose them to conversation logs, model-provider processing, tool traces, telemetry, or other components that do not need the credentials.

The alternative --from-browser chrome operation gives a remotely retrieved tool access to the local browser's credential store. The instructions do not establish platform scoping, cookie allowlists, explicit confirmation of the browser profile, secure storage behavior, retention limits, or deletion procedures. This creates a risk that more browser session data than necessary will be read.

Cookies a ...[truncated 2228 chars]

Remediation
View remediation

Remediation Suggestions

  • Do not ask users to paste raw cookie headers into agent conversations.
  • Prefer official OAuth or device-authorization flows with narrowly scoped, revocable tokens.
  • When cookies are unavoidable, use a local interactive credential prompt that does not expose values to the agent, command line, or conversation transcript.
  • Restrict browser extraction to an explicitly selected profile, platform domain, and allowlist of required cookie names.
  • Display the exact domains and cookie names requested and require informed user approval before extraction.
  • Pass secrets through protected standard input, an operating-system credential manager, or a file descriptor rather than command-line arguments.
  • Store secrets in the operating-system keychain or an encrypted secret store with restrictive permissions; never write plaintext credentials to logs.
  • Define retention and deletion behavior and provide commands to revoke and securely remove stored cookies and proxy credentials.
  • Redact cookie values, authorization headers, and URL-embedded passwords from diagnostics, process output, telemetry, and error messages.
  • Use a dedicated low-privilege account as defense in depth, but do not treat that measure as a substitute for secure credential handling.
  • Subject the browser-extraction implementation to an independent review before enabling it.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (10)

YARA rule 'agent_skill_remote_bootstrap_execution': Remote script or code download followed by execution/bootstrap installation [agent_skills]

High
Category
YARA Match
Confidence
98% confidence
Finding

The setup command installs a package directly from a GitHub archive URL and then runs its installer, which is a classic remote bootstrap pattern. In this skill context, the installed package then auto-installs multiple additional tools and dependencies, amplifying supply-chain compromise risk and potentially enabling arbitrary code execution on the host.

Content

Scanner excerpt · SKILL.md (reported line 33)May include surrounding context.

iles, clone repos, or write output in the agent workspace.** Use these directories instead:

PurposeDirectory
Temporary output (subtitles, downloads)/tmp/
Upstream tool repos~/.agent-reach/tools/
Config & tokens~/.agent-reach/

Violating this will pollute the user's workspace and degrade their agent experience over time.

Setup

bash
pip install https://github.com/Panniantong/agent-reach/archive/main.zip
agent-reach install --env=auto
agent-reach doctor

install auto-detects your environment and installs core dependencies (Node.js, mcporter, xreach CLI, gh CLI, yt-dlp, feedparser). Run doctor to see what's active.

Management

bash
agent-reach doctor        # channel status overview
agent-reach watch         # quick health + update check
agent-reach check-update  # check for new versions

Configure channels

bash
agent-reach configure twitter-cookies "auth_token=xxx; ct0=yyy"
agent-reach configure p

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The skill explicitly asks users to export full browser cookie header strings and send them to the agent. Full cookie strings are highly sensitive session credentials that can permit impersonation, bypass passwords/MFA for active sessions, and expose multiple unrelated cookies if the export is broad, making this materially dangerous in the context of internet-platform access tooling.

Content

No source excerpt is available for this finding.

YARA rule 'info_stealer': Information stealer patterns (credential harvesting, browser data theft) [malware]

High
Category
YARA Match
Confidence
97% confidence
Finding

Use of --cookies-from-browser chrome matches credential-harvesting behavior because it extracts authenticated browser session data for reuse by another tool. In a skill designed to extend an agent's reach across platforms, that capability is especially dangerous because it can silently transfer access from the user's browser into automation tooling, enabling unauthorized account access if mishandled.

Content

Scanner excerpt · SKILL.md (reported line 130)May include surrounding context.

o "/tmp/%(id)s" "URL"

Then read the .vtt file

Search (yt-dlp ytsearch)

yt-dlp --dump-json "ytsearch5:query"

If "no JS runtime" warning: ensure Node.js is installed, then run:

mkdir -p ~/.config/yt-dlp && echo "--js-runtimes node" >> ~/.config/yt-dlp/config

text

### Bilibili (yt-dlp)

> ⚠️ 服务器 IP 可能被 Bilibili 拦截(412 错误)。建议通过代理访问,或加 `--cookies-from-browser chrome`。

```bash
# Get video metadata
yt-dlp --dump-json "https://www.bilibili.com/video/BVxxx"

# Download subtitles
yt-dlp --write-sub --write-auto-sub --sub-lang "zh-Hans,zh,en" --convert-subs vtt --skip-download -o "/tmp/%(id)s" "URL"

# If blocked (412 / login required):
yt-dlp --cookies-from-browser chrome --dump-json "URL"

Reddit (JSON API)

bash
# Read a subreddit
curl -s "https://www.reddit.com/r/python/hot.json?limit=10" -H "User-Agent: agent-reach/1.0"

# Read a post with comments
curl -s "https://www.reddit.com/r/python/comments/POST_ID.json" -H

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill includes XiaoHongShu content-publication commands even though its stated purpose is to install and configure channel access. Enabling post creation from a setup skill materially increases risk because a user or agent may unknowingly gain the ability to publish content to a logged-in account, causing account abuse, spam, reputational damage, or policy violations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The trigger list includes Chinese-only activation phrases such as "帮我配", "帮我添加", and "帮我安装", and later sections continue to frame usage around Chinese-language prompts. This creates a language-specific expectation without user opt-in or an explicit statement that the skill is intended only for a Chinese-language context.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The --from-browser chrome workflow directs the agent to automatically extract cookies from a local browser, which is a sensitive credential-access operation. Browser cookies can grant authenticated access to user accounts, so bundling this into a convenience setup path creates a credential theft and session hijacking risk if misused or over-collected.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation frames agent-reach as only an installer/configuration tool, but the same skill immediately instructs the agent to use numerous upstream tools for scraping, account access, and operational actions. This scope expansion is dangerous because it encourages users and agents to treat a broad capability bundle as low-risk setup logic, reducing scrutiny around downstream data access and account-impacting behavior.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
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.

Content

Scanner excerpt · SKILL.md (reported line 125)May include surrounding context.

yt-dlp --dump-json "ytsearch5:query"

If "no JS runtime" warning: ensure Node.js is installed, then run:

mkdir -p ~/.config/yt-dlp && echo "--js-runtimes node" >> ~/.config/yt-dlp/config

text

### Bilibili (yt-dlp)

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

The skill invokes npx mcporter without pinning an exact package version or integrity hash, which allows whatever version is current at execution time to be downloaded and run. In a security-sensitive installer skill, this creates a supply-chain risk because a compromised upstream release or dependency could execute arbitrary code on the host.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The workspace rule presents a strict no-write expectation, yet later commands append to config files and run tools that write outputs, creating tension with the earlier blanket wording. Although some writes may occur outside the workspace, the documentation's absolute phrasing is contradicted by examples that do perform filesystem writes.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.