Back to skill

Security audit

Shopee-店铺全球商品

Security checks for vulnerabilities and agentic risk

Overview

This Shopee product-management skill has real Review concerns because it handles credentials and billing, sends automatic feedback, can change live catalog data, and stores sensitive responses with weak scoping.

Install only if you trust LinkFox with Shopee merchant operations and account/billing flows. Before use, pin or verify LinkFox HTTPS endpoints, do not set custom gateway/login URL environment variables, require explicit confirmation for delete/publish/price/stock changes and billing orders, opt out of or block automatic feedback submission, and treat generated API keys plus saved response files as sensitive business secrets.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (7)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:144
Finding

Automatic External Feedback Submission Alters Agent Behavior

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/_shopee_global_product_common.py:18
Finding

API Credentials and Operational Data Can Be Redirected to an Arbitrary Environment-Controlled Host

Content
View full analysis
str: """ 获取配置在环境变量的API Key。 如果获取不到,按 SKILL.md 的 **## 解决认证和算力问题** 处理。 """ key = os.environ.get("LINKFOX_AGENT_API_KEY") or os.environ.get("LINKFOXAGENT_API_KEY") if not key: print( "API Key 未配置", file=sys.stderr, ) sys.exit(1) return key def call_api(endpoint: str, params: dict) -> dict: api_key = get_api_key() data = json.dumps(params).encode("utf-8") req = Request( endpoint, data=data, headers={ "Authorization": api_key, "Content-Type": "application/json", "User-Agent": "LinkFox-Skill/1.0", "SESSION_ID": os.environ.get("SESSION_ID", ""), "MESSAGE_ID": os.environ.get("MESSAGE_ID", ""), "MODE_ID": os.environ.get("MODE_ID", ""), "APP_NAME": os.environ.get("APP_NAME", ""), }, method="POST", ) try: with urlopen(req, timeout=150) as response: return json.loads(response.read().decode("utf-8")) ``` ### Technical Analysis The credential-bearing gateway URL is selected from environment variables without enforcing HTTPS or validating the hostname against an allowlist. Every request attaches the LinkFox API key as an `Authorization` header. Requests also include Agent/session metadata and operation parameters. Consequently, a compromised launcher, inherited shell configuration, CI environment, ...[truncated 1088 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/onboarding.py:72
Finding

Onboarding Access and Refresh Tokens Can Be Sent to Configurable Unvalidated Destinations

Content
View full analysis
str: return _env_base("LINKFOX_AGENT_API_URL", "https://tool-gateway.linkfox.com", "LINKFOX_TOOL_GATEWAY") def _login_base() -> str: return _env_base("LINKFOX_LOGIN_API_URL", "https://api.linkfox.com") def _agent_user_base() -> str: return _env_base("LINKFOX_AGENT_USER_API_URL", "https://agent-api.linkfox.com") ``` ```python def _headers(source: str, origin_host: str, *, access_token: str = "", user_id: str = "", group_id: str = "") -> dict: """构造带浏览器指纹的 headers;access_token 存在则挂 authorization+uid。""" h = { "Accept": "application/json, text/plain, */*", "Content-Type": "application/json;charset=UTF-8", "Origin": f"https://{origin_host}", "Referer": f"https://{origin_host}/", "source": source, "User-Agent": UA, } if access_token: h["authorization"] = access_token h["uid"] = _uid_header(access_token, user_id) if user_id else _LOGIN_FIXED_UID if group_id: h["tid"] = group_id return h ``` ```python def _login_by_token(access_token: str, refresh_token: str) -> dict: """新用户送算力。失败不阻断。""" resp = _http_post(f"{_agent_user_base()}/account/loginByToken", { "token": access_token, "refreshToken": refresh_token, "device": {"aid": "3026344186", "did": "", "type": "Windows", "os": "10", "model": "149.0.0.0", "brand": "Chrome"}, }, _headers("agent-linkfox-web", "agent.linkfox.com", access_token=access_token)) ``` ```python def _fetch_user_info_v3(access_token: str, user_id: str) -> dict: """从 userInfo 拿 group_id / member_id。""" resp = _http_post(f"{_login_base()}/linkFoxApp/api/userCenter/userInfo", {}, _headers("agent-linkfox-web", ...[truncated 2030 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/onboarding.py:478
Finding

Generated API Keys Are Printed in Full to Standard Output

Content
View full analysis
dict: masked = _mask_phone(phone) if not re.fullmatch(r"\d{11}", phone): return {"error": f"login: 手机号格式不正确: {phone}", "phone": masked} if not re.fullmatch(r"\d{4,8}", code): return {"error": f"login: 验证码格式不正确: {code}", "phone": masked} lg = _login_v3(phone, code, channel) if "error" in lg: return {"error": lg["error"], "phone": masked} if lg.get("is_new_user"): lbt = _login_by_token(lg["access_token"], lg["refresh_token"]) if "error" in lbt: print(f"{TAG} {lbt['error']}(不影响拿 key)", file=sys.stderr) info = _fetch_user_info_v3(lg["access_token"], lg["user_id"]) if "error" in info: return {"error": info["error"], "phone": masked} tok = _get_or_generate_api_token(lg["access_token"], lg["user_id"], info["group_id"]) if "error" in tok: return {"error": tok["error"], "phone": masked} return { "api_key": tok["api_key"], "phone": masked, "group_id": info["group_id"], "member_id": info["member_id"], "source": tok["source"], "nick_name": lg.get("nick_name", ""), "team_name": info.get("team_name", ""), "is_new_user": lg.get("is_new_user", False), } ``` ```python def _emit(obj: dict) -> None: print(json.dumps(obj, ensure_ascii=False, indent=2)) def _cmd_login(args) -> int: r = login_and_get_key(args.phone.strip(), args.code.strip(), args.channel) _emit(r) if "api_key" in r: print(f"{TAG} 成功获取 API key(来源: {r['source']})", file=sys.stderr) return 0 return 1 ``` ### Technical Analysis The login command returns the generated or existing API key in a dictionary and serializes the entire object to stdout. In an Agent environm ...[truncated 1035 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/_shopee_global_product_common.py:215
Finding

Unsanitized Session Identifier Allows Output-Directory Traversal

Content
View full analysis
str: env = os.environ.get("SESSION_ID") if env: return env.strip() if "_auto" not in _LF_SESSION_CACHE: _LF_SESSION_CACHE["_auto"] = ( _lf_time.strftime("%H%M%S", _lf_time.localtime(ts)) + "-" + _lf_secrets.token_hex(3) ) return _LF_SESSION_CACHE["_auto"] ``` ```python def emit_result(result, slug=SLUG, inline=False): """落盘完整响应到 linkfox///data/-.json;大响应只打印摘要。无缓存。""" serialized = json.dumps(result, ensure_ascii=False, indent=2) ts = _lf_time.time() date_str = _lf_time.strftime("%Y-%m-%d", _lf_time.localtime(ts)) sid = _lf_session_id(ts) root = _lf_root() session_dir = os.path.join(root, date_str, sid) os.makedirs(session_dir, exist_ok=True) _lf_ensure_meta(root, session_dir, date_str, sid, ts) data_dir = os.path.join(session_dir, "data") os.makedirs(data_dir, exist_ok=True) out = os.path.join(data_dir, f"{slug}-{int(ts * 1_000_000)}.json") try: with open(out, "w", encoding="utf-8") as f: f.write(serialized) ``` A comparable construction occurs in `scripts/onboarding.py:153-160`: ```python def session_dir() -> str: ts = time.time() sid = (os.environ.get("SESSION_ID") or "").strip() or ( time.strftime("%H%M%S", time.localtime(ts)) + "-" + secrets.token_hex(3)) path = os.path.join(_linkfox_root(), time.strftime("%Y-%m-%d", time.localtime(ts)), sid) os.makedirs(path, exist_ok=True) return path ``` ### Technical Analysis `SESSION_ID` is treated as a trusted path component. The implementation does not reject absolute paths, parent-directory components, platform path separators, or other unsafe values. In Python, an absolute final ...[truncated 1053 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/_shopee_global_product_common.py:183
Finding

Full API Responses Fall Back to Undocumented Temporary or Home Storage with Default Permissions

Content
View full analysis
str: cached = _LF_SESSION_CACHE.get("_root") if cached: return cached candidates = [] acpx = (os.environ.get("ACPX_WORKSPACES") or "").strip() if acpx: acpx = acpx.split(os.pathsep)[0].strip() if acpx: candidates.append(os.path.join(acpx, "linkfox")) candidates.append(os.path.join(os.getcwd(), "linkfox")) candidates.append(os.path.join(os.path.expanduser("~"), "linkfox")) candidates.append(os.path.join(_lf_tempfile.gettempdir(), "linkfox")) for root in candidates: try: os.makedirs(root, exist_ok=True) probe = os.path.join(root, ".write_probe") with open(probe, "w", encoding="utf-8") as f: f.write("") os.remove(probe) except OSError: continue root = os.path.abspath(root) _LF_SESSION_CACHE["_root"] = root return root fallback = os.path.abspath(candidates[-1]) _LF_SESSION_CACHE["_root"] = fallback return fallback ``` ```python def emit_result(result, slug=SLUG, inline=False): """落盘完整响应到 linkfox///data/-.json;大响应只打印摘要。无缓存。""" serialized = json.dumps(result, ensure_ascii=False, indent=2) ts = _lf_time.time() date_str = _lf_time.strftime("%Y-%m-%d", _lf_time.localtime(ts)) sid = _lf_session_id(ts) root = _lf_root() session_dir = os.path.join(root, date_str, sid) os.makedirs(session_dir, exist_ok=True) _lf_ensure_meta(root, session_dir, date_str, sid, ts) data_dir = os.path.join(session_dir, "data") os.makedirs(data_dir, exist_ok=True) out = os.path.join(data_dir, f"{slug}-{int(ts * 1_000_000)}.json") try: with open(out, "w", encoding="utf-8") ...[truncated 1534 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
scripts/onboarding.py:169
Finding

Runtime Messages Recommend Installing Unpinned Third-Party Packages

Content
View full analysis
dict: try: import qrcode except ImportError: err = "缺少 qrcode 依赖,请运行: pip install qrcode pillow" print(f"{TAG} render_qr: {err}", file=sys.stderr) return {"png_path": None, "ascii_qr": None, "error": err} ``` ```python def _require_requests() -> None: if requests is None: raise RuntimeError("缺少 requests 依赖,请运行: pip install requests") ``` ### Technical Analysis The script directs users to install mutable package names without version constraints, hashes, a lockfile, a required package index, or virtual-environment guidance. The referenced packages are established package names, and no evidence of deliberate typosquatting was found. Nevertheless, installation behavior can vary over time or according to the user’s configured package index. ### Attack Path 1. The script detects that `requests`, `qrcode`, or `pillow` is unavailable. 2. The user follows the displayed `pip install` command. 3. pip resolves an unconstrained package version from its configured index. 4. A compromised index, dependency, or future package release supplies hostile code. 5. Package installation or later import executes that code with the user’s privileges. ### Impact Assessment Malicious dependency code would execute with the privileges of the Python environment performing the installation or import. This may permit access to files, environment variables, LinkFox credentials, and network resources available to that user. Exploitation requires a compromised dependency source or release; none is included directly in the audited project. ]]>
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
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
Findings (72)

Tainted flow: 'req' from os.environ.get (line 73, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
95% confidence
Finding

The request destination and several outbound headers are derived from environment variables, including LINKFOX_TOOL_GATEWAY and session/application identifiers, and are sent over the network without validation. If an attacker can influence the runtime environment, they can redirect requests to an attacker-controlled endpoint and exfiltrate the API key plus session-linked metadata, which is especially dangerous in a skill that handles authenticated Shopee merchant operations.

Content

Scanner excerpt · scripts/_shopee_global_product_common.py (reported line 88)May include surrounding context.

python
method="POST",
    )
    try:
        with urlopen(req, timeout=150) as response:
            return json.loads(response.read().decode("utf-8"))
    except HTTPError as e:
        body = e.read().decode("utf-8") if e.fp else ""

Tainted flow: 'url' from os.environ.get (line 235, credential/environment) → requests.post (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

The POST target URL is derived from environment-controlled base URLs, and the same request carries sensitive material such as SMS login data, access tokens, refresh tokens, uid/tid headers, and potentially generated API keys. If an attacker can influence environment variables in the skill runtime, they can redirect these requests to attacker-controlled infrastructure and exfiltrate credentials or impersonation tokens.

Content

Scanner excerpt · scripts/onboarding.py (reported line 196)May include surrounding context.

python
except RuntimeError as e:
        return {"_error": str(e)}
    try:
        r = requests.post(url, json=body or {}, headers=headers, timeout=timeout)
        return r.json()
    except Exception as e:
        body_text = ""

Tainted flow: 'req' from os.environ.get (line 244, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

The gateway URL is constructed from environment-derived configuration and used by urllib to send authenticated requests with the LinkFox API key in the Authorization header. In a hostile or misconfigured runtime, this creates a server-side exfiltration path where the API key and account actions can be redirected to an attacker-controlled endpoint.

Content

Scanner excerpt · scripts/onboarding.py (reported line 246)May include surrounding context.

python
headers["Content-Type"] = "application/json"
        req = Request(url, method=method, data=body_bytes, headers=headers)
        try:
            with urlopen(req, timeout=30) as resp:
                return json.loads(resp.read().decode())
        except urllib.error.HTTPError as e:
            status = e.code

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

A skill presented as a Shopee product-management integration reportedly performs account, billing, login, SMS, and payment-related LinkFox operations instead. That is a severe trust-boundary violation: users invoking listing or inventory workflows could unknowingly trigger authentication, subscription, or payment flows and expose unrelated account data.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

A skill presented as a Shopee product-management integration reportedly performs account, billing, login, SMS, and payment-related LinkFox operations instead. That is a severe trust-boundary violation: users invoking listing or inventory workflows could unknowingly trigger authentication, subscription, or payment flows and expose unrelated account data.

Content

No source excerpt is available for this finding.

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

Scanner excerpt · references/onboarding.md (reported line 14)May include surrounding context.

md
示 JSON 里的 phone/agreements
   - 收到验证码后:`python scripts/onboarding.py login <phone> <code>`
   - 拿到 `api_key` 后把下面三平台配置转发给用户,提示重启会话生效:
     - Windows PowerShell(永久):`setx LINKFOX_AGENT_API_KEY "<key>"`
     - macOS zsh:`echo 'export LINKFOX_AGENT_API_KEY="<key>"' >> ~/.zshrc && source ~/.zshrc`
     - Linux bash:`echo 'export LINKFOX_AGENT_API_KEY="<key>"' >> ~/.bashrc && source ~/.bashrc`
     - 变量名 `LINKFOX_AGENT_API_KEY`(主推)或 `LINKFOXAGENT_API_KEY`(老规范)任一即可

**billing 场景**:`errcode=402` 或消息含 `算力/余额/quota/insufficient/充值/套餐到期`。
- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单,否则输出编号清单让用户选
- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`(通常 `wechat/alipay`)
- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The file implements a LinkFox onboarding, billing, and payment CLI, which is materially unrelated to the declared Shopee GlobalProduct skill purpose. This kind of capability mismatch is dangerous because users or orchestrators may invoke the skill expecting Shopee product management while the code instead performs account login, token issuance, and purchasing flows.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code includes package enumeration, order creation, payment QR generation, and order-status queries, which are unrelated to Shopee GlobalProduct management. Embedding monetization and payment collection behavior inside a commerce-integration skill creates a strong risk of deceptive billing, misuse of user trust, and unauthorized purchase workflows.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This section performs SMS-based LinkFox login, token handling, team discovery, and API-key retrieval/generation, none of which are necessary for Shopee GlobalProduct operations as described in the manifest. Collecting authentication material under an unrelated skill increases the likelihood of credential harvesting or unauthorized platform access under false pretenses.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
82% confidence
Finding

The skill advertises capabilities that include environment access, filesystem writes, network access, and shell execution, but it does not declare any explicit tool scope or permission boundary. In an agent environment, this weakens least-privilege guarantees and can allow broader-than-expected actions, especially when combined with automatic file output and external API interaction.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger condition is intentionally broad and says the skill should activate even when 'global product' is not explicitly mentioned, as long as the request loosely relates to authorized merchant product management. Overbroad activation increases the chance of the wrong skill handling a task, leading to unnecessary credential use, unintended API calls, or data exposure in adjacent workflows.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation says the tool consumes compute resources and warns against repeated probing, but later states '不消耗算力' (does not consume compute). Contradictory metering and cost semantics can mislead users into unintended repeated calls, increasing financial exposure, rate-limit pressure, and operational risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill states it will always write full API responses to the project directory, potentially including merchant IDs, product data, publication details, and other sensitive business information. Automatic persistent storage without clear opt-in or data-minimization controls increases the risk of accidental disclosure through source trees, shared workspaces, backups, or later agent access.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file documents write and delete operations such as add_global_item, update_global_item, and especially delete_global_item, but it does not include any warning that these actions modify or remove live product data. Under the markdown-specific missing-warning rule, descriptions that omit user-data or system-impact warnings for destructive behaviors should be flagged.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation presents update_price and update_stock as routine operations but does not warn that they can immediately affect storefront pricing, availability, and downstream sales behavior. Because this is a markdown skill description covering system-affecting write operations, the absence of a user-facing warning qualifies as a missing warning finding.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The section on create_publish_task and set_sync_field explains cross-shop publishing and synchronization behavior, but it lacks any caution that these actions can propagate product data or configuration changes to multiple destination shops. For markdown files, omitting warnings about actions that affect user data or system integrity is in scope for this rule.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/api.md (reported line 122)May include surrounding context.


curl 示例

bash
export KEY=$LINKFOX_AGENT_API_KEY

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The document describes a write-capable API that adds a global SKU model, but it does not clearly warn that the operation mutates catalog data or may create persistent product records. In this skill context, users may invoke the endpoint through a generic proxy workflow, so missing change-impact warnings increases the risk of accidental inventory/catalog modification rather than a direct exploit.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation exposes a publish operation that can make product listings externally visible across shops, but it does not warn about the action's externally visible and potentially hard-to-reverse effects. In an agent setting, this increases the risk of accidental publication, especially because the doc says to 'pass full body' and frames the endpoint as a normal management action without confirmation guidance.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This documentation exposes a destructive API operation that permanently deletes a global product, but it does not include any warning about irreversibility, expected side effects, or the need for explicit user confirmation before invocation. In an agent-driven workflow, that omission is dangerous because the skill may be triggered from broad product-management requests, increasing the chance of accidental or unauthorized destructive actions against a merchant's catalog.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This documentation exposes a destructive delete capability ('Delete global SKU model') without any warning, confirmation guidance, or mention of irreversible business impact. In an agent skill that can be triggered by product-management intents, missing safety framing increases the chance of accidental or overly broad deletion requests being issued against a live merchant account.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file contains core usage instructions and field descriptions primarily in Chinese, while some labels and examples remain in English. Because the file does not offer an alternative language or explain that the skill is intended only for Chinese-speaking users, it may violate a language/locale policy requiring user opt-in or documented justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file contains the core operational instructions and parameter descriptions in Chinese, which effectively forces a specific language on users. The policy allows locale constraints only when user choice is offered or the restriction is clearly justified, neither of which is stated here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file contains all user-facing instructions in Chinese, including headings, parameter descriptions, and usage guidance. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale constraint is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

This markdown file documents an operation that updates sync fields for already published items, which can affect live listing behavior or data. The description provides usage details but does not include any caution, confirmation expectation, or warning about impacts to published product data.

Content

No source excerpt is available for this finding.