Back to skill

Security audit

AI-Search-Hub

Security checks for vulnerabilities and agentic risk

Overview

The skill is a browser automation helper for AI chat sites, but it can automatically copy and reuse a signed-in browser profile, so users should review it carefully before installing.

Install only if you are comfortable with the skill opening or attaching to a local Chromium browser, sending prompts to the selected external AI provider, and potentially copying signed-in browser profile data into a persistent debug directory. Prefer a fresh dedicated browser profile, disable implicit invocation, avoid submitting secrets or regulated data, and delete the debug profile after use.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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 (2)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/run_web_chat.py:449
Finding

Whole Browser Profile Is Copied and Exposed Through Chrome DevTools

Content
View full analysis
None: if not src.exists(): return if src.is_dir(): shutil.copytree(src, dst, dirs_exist_ok=True) return dst.parent.mkdir(parents=True, exist_ok=True) shutil.copy2(src, dst) def seed_debug_profile(source: Optional[Path], target: Path, profile_directory: str = "Default") -> None: target.parent.mkdir(parents=True, exist_ok=True) if source and source.exists(): try: if source.resolve() == target.resolve(): clear_lock_markers(target) return except OSError: pass reset_directory(target) if not source or not source.exists(): return for item_name in SHARED_USER_DATA_ITEMS: copy_path(source / item_name, target / item_name) profile_source = source / profile_directory if profile_source.exists(): copy_path(profile_source, target / profile_directory) clear_lock_markers(target) ``` ```python args = [ str(installation.browser_path), f"--remote-debugging-port={port}", "--remote-debugging-address=127.0.0.1", f"--user-data-dir={installation.user_data_dir}", f"--profile-directory={installation.profile_directory}", "--no-first-run", "--no-default-browser-check", "--disable-breakpad", initial_url, ] ``` ```python seed_debug_profile( installation.user_data_dir, debug_profile_dir, installation.profile_directory, ) debug_installation = BrowserInstallation( name=installation.name, browser_path=installation.browser_path, user_data_dir=debug_profile_dir, prof ...[truncated 2636 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
agents/openai.yaml:1
Finding

Implicit Invocation Can Trigger Sensitive Browser Profile Duplication Without Specific Approval

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
Findings (28)

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · README.en.md (reported line 19)May include surrounding context.

md
yle=flat-square&logo=openai&logoColor=white" alt="OpenAI Codex CLI">
  <img src="https://img.shields.io/badge/Cursor-000?style=flat-square&logo=cursor&logoColor=white" alt="Cursor">
  <img src="https://img.shields.io/badge/Kiro-232F3E?style=flat-square&logo=amazon&logoColor=white" alt="Kiro">
  <img src="https://img.shields.io/badge/OpenClaw-FF6B35?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJMNCA3djEwbDggNSA4LTV2LTEweiIgZmlsbD0id2hpdGUiLz48L3N2Zz4=&logoColor=white" alt="OpenClaw">
  <img src="https://img.shields.io/badge/Antigravity-4285F4?style=flat-square&logo=google&logoColor=white" alt="Google Antigravity">
  <img src="https://img.shields.io/badge/OpenCode-00D4AA?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTkuNCA1LjJMMyAxMmw2LjQgNi44TTIxIDEybC02LjQtNi44TTE0LjYgMTguOCIgc3Ryb2tlPSJ3aGl

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · README.md (reported line 19)May include surrounding context.

md
yle=flat-square&logo=openai&logoColor=white" alt="OpenAI Codex CLI">
  <img src="https://img.shields.io/badge/Cursor-000?style=flat-square&logo=cursor&logoColor=white" alt="Cursor">
  <img src="https://img.shields.io/badge/Kiro-232F3E?style=flat-square&logo=amazon&logoColor=white" alt="Kiro">
  <img src="https://img.shields.io/badge/OpenClaw-FF6B35?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDJMNCA3djEwbDggNSA4LTV2LTEweiIgZmlsbD0id2hpdGUiLz48L3N2Zz4=&logoColor=white" alt="OpenClaw">
  <img src="https://img.shields.io/badge/Antigravity-4285F4?style=flat-square&logo=google&logoColor=white" alt="Google Antigravity">
  <img src="https://img.shields.io/badge/OpenCode-00D4AA?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTkuNCA1LjJMMyAxMmw2LjQgNi44TTIxIDEybC02LjQtNi44TTE0LjYgMTguOCIgc3Ryb2tlPSJ3aGl

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description presents a broader skill orchestration capability across several services and mentions specific lifecycle features: auto-start or attach to a Chrome DevTools session on port 9222, profile seeding from local browser data, and login detection with automatic continuation. The supplied code chunk does something narrower: a Doubao-only Playwright automation that connects to a provided CDP endpoint or launches a persistent local profile, opens the chat page, optionally waits for the user to complete login by pressing Enter, sends a prompt, and extracts the answer. While some aspects partially align—browser automation, optional CDP connection, manual login wait—the code lacks key declared behaviors and broader scope. Therefore the description does not accurately represent this code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description presents a broader browser automation skill covering several AI sites and specific session/profile-management behavior. The supplied code chunk is narrower: it only automates LongCat chat interactions. While it does support connecting to an existing DevTools endpoint and waiting for a user to log in, it lacks several declared behaviors: no multi-site handling, no explicit port-9222 auto-discovery/default attach behavior, no copying/seeding of profile data from the user's local browser, and no actual login-state detection logic. Its primary purpose is related but materially narrower than declared, so this is a description-behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The code's core purpose broadly matches part of the description: it automates web chat sites, can connect via CDP or launch a persistent browser context, detects login requirements, waits for manual login, and continues automatically. However, there are material discrepancies. First, the declared site coverage includes Yuanbao, LongCat, and Doubao, but SITE_CONFIG contains only qwen, gemini, and grok, so a substantial portion of the promised functionality is missing. Second, the description claims it will seed an isolated debug browser profile from the user's local browser data, but this code only accepts a provided profile directory for launch_persistent_context and contains no logic to copy or seed data from an existing local browser profile. Third, while CDP attachment is supported, the description implies specific handling around a DevTools session on port 9222; this code merely accepts arbitrary --cdp-url or --cdp-http values and does not auto-discover or default to 9222 on its own. These are material description-versus-behavior mismatches, even though the implemented subset is otherwise aligned.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The description overstates the implemented functionality. This code chunk is narrowly focused on Yuanbao and lacks the multi-site orchestration implied by the declaration. Its browser handling is limited to either launching a persistent Chromium context with a provided profile directory or connecting to a user-supplied CDP endpoint; there is no logic to auto-launch Chrome, no default attachment to localhost:9222, and no profile seeding from existing local browser data. Login handling is also simpler than declared: the script does not determine whether login is actually needed, but instead pauses for manual confirmation by default. Writing the final answer to a file is an extra supporting detail, not the main mismatch. Overall, the actual behavior is materially narrower than the declared purpose.

Content

No source excerpt is available for this finding.

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · scripts/run_web_chat.py (reported line 121)May include surrounding context.

python
b",
    "chrome://newtab/",
    "edge://newtab",
    "edge://newtab/",
    "brave://newtab",
    "brave://newtab/",
    "arc://newtab",
    "arc://newtab/",
)


@dataclass(frozen=True)
class BrowserInstallation:
    name: str
    browser_path: Path
    user_data_dir: Path
    profile_directory: str = "Default"


def parse_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser(
        description="Standardized runner for Yuanbao, LongCat, Doubao, Qwen, Gemini, and Grok chat automation."
    )
    parser.add_argument("--site", choices=sorted(SITE_CONFIG), required=True, help="Target chat site.")
    parser.add_argument("--prompt", required=True, help="Prompt to send to the site.")
    parser.add_argument(
        "--repo-root",
        help="Repository root. Defaults to the current directory or nearest parent containing the site scripts.",
    )
    parser.add_argument("--output", help="Optional output path. Defaults to out/<site>_answer.txt.")
    parser.add_argument("--cdp

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README describes sending the same user query to multiple external providers but does not warn that prompts may be transmitted to several third-party platforms, potentially across jurisdictions and with different retention policies. In this skill’s context, that omission is security-relevant because the tool is designed for automated, parallel browser-driven dispatch, making accidental disclosure of sensitive prompts more likely.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly recommends allow_implicit_invocation: true together with a broad default prompt that can auto-run browser automation against multiple external AI sites. In a skill that can start or attach to Chrome DevTools, seed a browser profile from local user data, and wait for login, broad implicit activation materially increases the chance of unintended invocation, privacy leakage, and user-confusion-driven consent bypass.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README describes sending a single prompt across multiple third-party AI/search platforms and collecting results, but it does not clearly warn that user prompts may be transmitted to external providers and processed under those providers' policies. In this skill's context, that omission is materially risky because the tool is designed for automated multi-destination dispatch, increasing the chance that sensitive or proprietary prompts are disclosed more broadly than the user expects.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The example configuration enables allow_implicit_invocation: true without nearby warnings that the skill may auto-run browser automation, attach to Chrome DevTools on port 9222, and potentially use a logged-in browser context. In an agent setting, implicit invocation can cause unreviewed external requests and account-context actions, which is dangerous when the skill can reach multiple third-party services automatically.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises behavior that implies shell, network, file read/write, and environment access, but it does not declare any explicit tool scope or permission boundaries. That makes it easier for an agent runtime to invoke powerful capabilities without clear least-privilege constraints, increasing the chance of unintended file access, profile copying, browser control, or network actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill describes connecting to or starting a Chrome DevTools remote-debugging session but does not clearly warn the user about the security implications. DevTools access can expose page contents, cookies, authenticated sessions, and broad browser automation control; in this context, that makes the capability more dangerous because it is tied to real logged-in browser state.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill describes connecting to or starting a Chrome DevTools remote-debugging session but does not clearly warn the user about the security implications. DevTools access can expose page contents, cookies, authenticated sessions, and broad browser automation control; in this context, that makes the capability more dangerous because it is tied to real logged-in browser state.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

If the expected send-button selectors fail, the script iterates over all visible enabled buttons and clicks the last one whose text is not in a small exclusion list. On a dynamic web app like Doubao, that can trigger unrelated actions such as opening tools, changing modes, confirming dialogs, or other state-changing UI flows, causing unintended interaction in the user's logged-in browser context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script launches a persistent Chromium profile directory and stores session state locally without clearly warning that cookies, login tokens, and browsing artifacts will be retained on disk. Because this skill is specifically designed to seed or reuse authenticated browser state, retained profile data can expose accounts to other local users, later processes, or accidental reuse.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script sends the provided question to longcat.chat, an external service, but does not present an explicit disclosure or confirmation that user-supplied content will leave the local machine. In this skill’s context, users may paste sensitive prompts, credentials, or internal data into an automation tool, so silent network transmission creates a real confidentiality risk even though it is core functionality.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script seeds a debug profile by copying shared browser state and an entire selected profile directory from the user's real Chromium profile. That can duplicate cookies, session tokens, browsing artifacts, saved settings, and other sensitive local state into a repository-controlled debug directory, expanding exposure well beyond what is necessary for chat automation.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/run_web_chat.py (reported line 522)May include surrounding context.

python
if sys.platform.startswith("win"):
        creationflags = subprocess.CREATE_NEW_PROCESS_GROUP | subprocess.DETACHED_PROCESS

    STARTED_DEBUG_BROWSER = subprocess.Popen(
        args,
        stdout=STARTED_DEBUG_BROWSER_LOG_HANDLE,
        stderr=subprocess.STDOUT,

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill automatically clones data from the user's browser profile before starting automation, but the flow only prints that an isolated debug profile is being started and does not clearly warn that sensitive local browser state is being copied. In a skill that attaches to login-capable browser sessions, lack of explicit disclosure materially increases the risk of uninformed credential and session exposure.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script forwards arbitrary user prompts to third-party chat services such as Qwen, Gemini, and Grok without an explicit runtime disclosure that the prompt contents will leave the local machine. Because prompts may contain sensitive business, personal, or credential material, this omission creates a real privacy and data-handling risk in the context of browser automation for external services.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/run_web_chat.py (reported line 765)May include surrounding context.

python
cmd = build_site_command(args, repo_root, ws_url)
        print("Running:", " ".join(f'"{part}"' if " " in part else part for part in cmd), flush=True)
        completed = subprocess.run(cmd, cwd=repo_root)
        return completed.returncode
    finally:
        stop_debug_browser(STARTED_DEBUG_BROWSER)

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
75% confidence
Finding

Natural-language policy issues include forcing a specific language without opt-in. Although an English link is present, the file's main instructions and descriptions are written in Chinese by default, so users reading this entrypoint are not given an explicit language choice before encountering the content.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The code creates parent directories and writes output to the provided path, but there is no confirmation prompt or explicit user-facing disclosure near the write operation about modifying local files. Although the --output flag implies persistence, the implementation performs filesystem changes silently once the flag is supplied.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script writes the final answer to any caller-supplied path without an explicit warning that local files will be created or overwritten. While this is expected CLI behavior, in an agent skill context the path may be constructed indirectly, so unannounced file modification can lead to unintended data placement, overwrites, or disclosure through writing sensitive model output to disk.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.