T01 · Skill Instruction Hijacking
- Location
SKILL.md:11- Finding
Agent workflow hijacking forces secondary QR-code delivery and indefinite polling
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent 1688 reporting purpose, but it uses broad browser, extension, CDP, Feishu, and file access in ways that can expose seller data or login QR codes beyond the active request.
Use this only after review or hardening: restrict the extension to required 1688 hosts, remove ids ["*"] or add strict sender authorization, avoid sending login QR codes to any chat other than the active user-approved destination, secure or remove raw-data and token caches, verify downloaded installers, and run the browser in a dedicated isolated profile or machine.
SKILL.md:11Agent workflow hijacking forces secondary QR-code delivery and indefinite polling
plugin/manifest.json:14Unauthenticated external extension API exposes stored seller analytics
plugin/manifest.json:18Extension requests access to all HTTPS origins and unrestricted localhost services
plugin/content.js:218Raw MTOP authentication token is written to browser logs
scripts/fetch_data.py:27Full raw seller records are exported to a predictable temporary file
scripts/push_feishu_post.py:63Feishu bearer token is cached in plaintext without enforced file permissions
scripts/setup.ps1:94Windows setup downloads and executes an unverified remote Python script
scripts/setup.sh:14Linux setup globally installs an unpinned and apparently unused npm package
scripts/start-browser.sh:46Authenticated Chromium runs without a sandbox and accepts all DevTools origins
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
h = host or CDP_HOST
p = port or CDP_PORT
try:
with urllib.request.urlopen(f'http://{h}:{p}/json/version', timeout=3):
pass
except Exception:
return False
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
def get_1688_tab():
"""快捷函数:获取当前1688页面的 CDP 连接信息"""
with urllib.request.urlopen(f'http://{CDP_HOST}:{CDP_PORT}/json/list') as resp:
tabs = json.loads(resp.read())
for t in tabs:
if t['type'] == 'page' and '1688.com' in t.get('url', ''):
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
headers={'Content-Type': 'application/json'},
method='POST',
)
with urllib.request.urlopen(req, timeout=15) as resp:
data = json.loads(resp.read().decode('utf-8'))
if data.get('code') != 0:
raise RuntimeError(f'获取 token 失败: code={data.get("code")} msg={data.get("msg")}')
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
},
method='POST',
)
return urllib.request.urlopen(req, timeout=15)
try:
with _post() as resp:
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The skill exposes browser/Xvfb process management, remote debugging port setup, and marker-based instance ownership checks, all of which materially expand the attack surface beyond what the description suggests. A CDP-enabled browser process can provide deep access to authenticated sessions and page content if reached by unintended code or local attackers.
The documented externally_connectable configuration allows any Chrome extension ("ids": ["*"]) to message this plugin, greatly expanding the trust boundary. In the context of a data-harvesting extension handling authenticated seller metrics, a malicious or compromised extension could request sensitive collected data or abuse exposed actions if runtime validation is weak or absent.
The background service exposes all collected seller workstation and SYCM data through chrome.runtime.onMessageExternal without any visible authentication, sender allowlist, or user consent gate in this code path. Any external extension permitted by the manifest can query and extract stored business data, turning a local data-collection tool into a cross-extension data-sharing channel.
This file implements a cross-extension API that is broader than the stated purpose of fetching 1688 seller workstation data. By offering externally callable OPEN_CLAW_API and GET_VERSION handlers, the extension creates an unnecessary attack surface and enables data brokerage to other extensions or companion software.
The content script automatically uses authenticated session cookies to call internal 1688 APIs and collect account/business analytics without an in-page warning or just-in-time consent. In the context of a browser extension, this enables silent harvesting of sensitive seller operational data from pages the user is merely viewing, which is substantially more dangerous than passive DOM extraction.
Automatically forwarding the harvested analytics data from the content script to the background process expands exposure from page context to extension-wide context, where additional storage, relay, or upload may occur. Because this transfer happens without user-facing notice and includes sensitive account/business metrics, it materially increases the risk of unauthorized collection and later exfiltration.
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
{
"manifest_version": 3,
"name": "1688 Data Claw - 数据采集器",
"version": "1.0.0",
"description": "采集1688店铺经营数据,为OpenClaw提供结构化数据接口",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAur6CE+BGEBWB5atgTevs6vDdZ6meGWEF+rhbEE5RPwraDMAPRjj3a3arI0nu499MVxHRHIso7U96k7U1sPC6MDpjgHyGEQora44bUp5mv5O4pztCLF+/b9nETcXlmJjJLf/3B4clXKC1PCJDQgODbl6HIUL5RumrDDkJM93jc/2hHetJS0cGvisO9tE0jYYmGsUtJ0SA7yJS73NuH1xbhzj5+xrYAR92b/rgpe1RXuQLyotvKqUnGCdw1aAs/T4nNJ3YSFevted0cqjvU0zTvFVf8UooH6uRbgHpE0gHiD2aO5B0z4ZBdq38MbMPbtTLhYqq78pgJRXiGt9SIxXAywIDAQAB",
"permissions": [
"activeTab",
"storage",
"scripting",
"tabs",
"background"
],
"ex
The manifest claims the extension is for collecting data from 1688, but it requests host permissions for all HTTPS sites. In a Chrome extension, broad host permissions enable code execution, DOM access, and network interaction far beyond the stated scope, which materially expands the attack surface and could allow collection of sensitive data from unrelated sites if other extension code is compromised or abused.
The public eval() method exposes arbitrary JavaScript execution in the connected browser tab via CDP Runtime.evaluate. In this skill context, that is far more powerful than 'data fetching': it can read page content, interact with authenticated sessions, invoke extension APIs indirectly, alter state, and become a general browser-compromise primitive for any upstream caller that can reach this API.