Back to skill

Security audit

Zyte API

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Zyte API scraping integration, but users should understand it installs and authorizes the ClawLink plugin to route scraping requests through external services using connected credentials.

Install this only if you intend to use ClawLink and Zyte API from OpenClaw. Review the plugin trust boundary, connected Zyte account permissions, quota or billing impact, and avoid submitting confidential or internal URLs unless your organization approves that routing through ClawLink and Zyte.

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:48
Finding
Unpinned Third-Party Plugin Is Trusted with Credentials and Remote Tool Execution<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 48–136 **Vulnerability Type**: Unpinned and externally controlled dependency **Risk Level**: Medium ### Vulnerable Code ```bash openclaw plugins install clawhub:clawlink-plugin openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json openclaw gateway restart ``` ```markdown All Zyte API tool calls are authenticated automatically by ClawLink using the user's connected Zyte API credentials. **No API key is required in chat.** ClawLink stores the credentials securely and injects them into every Zyte API request on the user's behalf. ### Getting Connected 1. Install the ClawLink plugin (see Install above). 2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet. 3. Open https://claw-link.dev/dashboard?add=zyte-api and connect Zyte API. 4. Call `clawlink_list_integrations` to verify the connection is active. ``` ```markdown ## Discovery Workflow 1. Call `clawlink_list_integrations` to confirm Zyte API is connected. 2. Call `clawlink_list_tools --integration zyte-api` to see the live catalog. 3. Treat the returned list as the source of truth. Do not guess or assume what tools exist. 4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `zyte-api`. 5. If no Zyte API tools appear, direct the user to https://claw-link.dev/dashboard?add=zyte-api. ## Execution Workflow 1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first. 2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call. 3. Prefer targeted extraction and status checks before broad or repeated scraping requests. 4. For writes or anything marked as requiring confirmation, call `clawlink_preview_tool` first. 5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's int ...[truncated 3182 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `clawlink-plugin` to a specific, reviewed version rather than installing an implicitly mutable latest release. 2. Verify the package using a cryptographic digest and a trusted publisher signature before installation. 3. Publish or reference the exact reproducible source revision corresponding to the installed artifact. 4. Provide a permission manifest documenting filesystem, network, credential, configuration, and tool-execution access. 5. Maintain a local allowlist of approved Zyte tool identifiers and schemas instead of treating an unrestricted remote catalog as authoritative. 6. Validate remotely returned tool definitions against pinned schemas, including parameter types, confirmation requirements, and permitted destinations. 7. Require explicit, informed user approval before plugin installation, configuration modification, gateway restart, account pairing, or access to account and usage information. 8. Scope credentials to the minimum required Zyte permissions and use short-lived, revocable tokens where supported. 9. Prevent the plugin from exposing raw credentials to tool output, logs, error messages, or unrelated integrations. 10. Record and audit plugin installation, catalog changes, credential use, and API operations. 11. Define an update policy that requires renewed review and integrity verification before activating a new plugin version. 12. Avoid automatic gateway restarts; clearly disclose their operational effect and require separate user confirmation. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Vague Triggers

Medium
Confidence
82% confidence
Finding
The description says to use the skill when users want to "extract data at scale" or "monitor website content," but it does not define explicit trigger phrases, boundaries, or exclusion conditions. In a manifest/markdown context, this can cause the skill to activate for generic website-related requests that may not specifically require Zyte API scraping.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The skill encourages users to use hosted credentials and third-party scraping/account tools but does not clearly disclose that requested URLs, extraction targets, and account or usage queries will be sent to ClawLink and Zyte services. This creates a transparency and privacy risk because users may unknowingly submit sensitive internal URLs, target lists, or account metadata to external providers.

Intent-Code Divergence

Medium
Confidence
93% confidence
Finding
The skill states that all extraction operations require explicit user confirmation for high-volume or repeated scraping, but elsewhere classifies extraction tools as read operations that can be executed directly. This inconsistency can cause an agent to perform costly or policy-sensitive scraping without the additional confirmation the user was led to expect, increasing the risk of unauthorized third-party requests and spend.

Static analysis

No suspicious patterns detected.