Back to skill

Security audit

Amazon Listing 承诺核查

Security checks for vulnerabilities and agentic risk

Overview

The skill is not plainly malicious, but it advertises a narrow listing-promise check while including broader paid ARI account, analysis, monitoring, export, and confirmation-setting controls that should be reviewed before install.

Install only if you want this skill to control a broader ARI review-intelligence workflow, not just check listing promises. Before using it, review ARI billing and auto-confirm settings, avoid enabling recurring monitoring unless you intend ongoing collection costs, and prefer explicit quote-only or per-action confirmation for paid reports and account changes.

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 (1)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/ari.py:1206
Finding
Specialized Workflow and Focus Restrictions Can Be Overridden## Vulnerability Details **File Location**: `scripts/ari.py:1206-1209` and `scripts/ari.py:1687-1688` **Vulnerability Type**: Improper enforcement of specialized capability boundaries **Risk Level**: Medium ### Vulnerable Code ```python def operation_payload(args): defaults = operation_defaults() workflow = (getattr(args, "workflow", None) or defaults.get("workflow") or "").strip() focus = (getattr(args, "focus", None) or defaults.get("focus") or "").strip() if not workflow or not focus: return None, error_obj( "ARI_VALIDATION_ERROR", 0, "运营工作流缺少 workflow/focus", "通用 Skill 请显式传 --workflow 和 --focus;专属 Skill 会内置固定值。") request_id = (getattr(args, "request_id", None) or "").strip() or str(uuid.uuid4()) return { "requestId": request_id, "workflow": workflow, "focus": focus, "asin": args.asin.upper(), "site": args.site or defaults.get("defaultSite") or "amz_us", "competitorAsin": (getattr(args, "competitor", None) or "").upper(), }, None ``` The specialized operations parser also exposes the override parameters: ```python def add_operation_args(parser, confirm=False): parser.add_argument("--asin", required=True) parser.add_argument("--site", default="amz_us", choices=SITES) parser.add_argument("--workflow") parser.add_argument("--focus") parser.add_argument("--competitor") parser.add_argument("--request-id", default="") if confirm: parser.add_argument("--confirm", action="store_true", help="确认按报价扣点并生成;未提供时只返回报价") ``` ### Technical Analysis This package declares an immutable specialized contract of `workflow=listing` and `focus=promise` in `skill-defaults.json`. Its documentation also states that the specialized entry point must not accept arbitrary workflows or prompts. However, `operation_payload()` gives command- ...[truncated 1964 chars]
Remediation
## Remediation Suggestions 1. In specialized packages, always load `workflow` and `focus` exclusively from `skill-defaults.json`. 2. Remove `--workflow` and `--focus` from the specialized command-line parser. 3. If a shared parser must be retained, reject caller-supplied values unless they exactly equal the packaged defaults. 4. Add explicit checks immediately before both quote and run requests: ```python expected_workflow = defaults.get("workflow") expected_focus = defaults.get("focus") if getattr(args, "workflow", None) not in (None, "", expected_workflow): return None, error_obj( "ARI_SPECIALIZATION_VIOLATION", 403, "Workflow overrides are not allowed by this specialized Skill." ) if getattr(args, "focus", None) not in (None, "", expected_focus): return None, error_obj( "ARI_SPECIALIZATION_VIOLATION", 403, "Focus overrides are not allowed by this specialized Skill." ) workflow = expected_workflow focus = expected_focus ``` 5. Include the expected workflow and focus in the quote response and verify them again when executing the quoted request. 6. Add regression tests proving that alternate workflow/focus arguments are rejected even when the account capability response lists them as supported. 7. Consider enforcing the distribution channel and permitted workflow/focus combination on the server so a modified local client cannot exceed the specialized package's scope.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (74)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The declared purpose is narrow listing-promise verification, but the body instructs the agent to perform broad account management, paid report generation, monitoring setup, exports, competitor operations, and workflow execution. This scope mismatch can mislead users and reviewers, causing over-privileged execution, unexpected charges, and access to more data/actions than implied by the skill metadata.

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
- CLI:本 Skill 目录下的 `scripts/ari.py`。在 Skill 根目录执行,例如
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The operations workflow executes generic product-operations tasks that are unrelated to listing-promise evidence verification. Because these flows can trigger paid analysis and business-operational outputs, they significantly exceed the declared purpose and create an unsafe mismatch between what the skill advertises and what it can actually do.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The skill metadata claims a narrow purpose—Amazon listing promise evidence checking—but the code exposes a much broader control surface: product operations, watch monitoring, exports, rankings, workbench flows, and paid AI actions. This violates least-privilege and increases the chance an agent or user invokes unrelated capabilities, including paid or persistent operations, under the guise of a limited-scope skill.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
The advise command generates AI responses for individual negative reviews, which is materially different from checking whether listing promises are supported by review evidence. In an agent setting, this scope creep can cause unauthorized paid content generation and action recommendations beyond the user's expected intent for this skill.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
From the opening sections, the file describes general Amazon review intelligence and content improvement workflows rather than the declared evidence-checking function. In an agent setting, oversized and misleading capability descriptions increase the chance that the model will perform unauthorized analysis, content generation, or paid operations outside the user's expected consent boundary.

Context-Inappropriate Capability

High
Confidence
96% confidence
Finding
The example encouraging optimization of five bullet points based on reviews introduces generative marketing content creation, which is outside a verification-only skill. This is dangerous because it can turn an evidence-auditing tool into a content authoring system, increasing the risk of ungrounded claims, policy violations, or misuse of review-derived outputs for persuasive listing changes without proper controls.

Intent-Code Divergence

High
Confidence
97% confidence
Finding
The documentation presents this skill as a narrow Amazon listing promise-evidence checker, but the instructions describe a broad multipurpose ARI toolkit with collection, VOC, operations, monitoring, exports, and rankings. This scope mismatch can cause the agent or user to invoke actions far beyond the declared purpose, undermining least privilege and creating a confused-deputy risk where broader capabilities are exercised under the guise of a limited review skill.

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill advertises executable capabilities (env, file_write, network, shell) but does not declare a restrictive tool scope such as permissions or allowed-tools. This weakens sandboxing and reviewability, making it easier for the skill to access local state, network resources, or write files beyond what users would reasonably expect.

Vague Triggers

Medium
Confidence
87% confidence
Finding
The skill says users only need to express a product and goal, then gives a very general example like asking to analyze an ASIN's reviews and summarize issues and trends. This does not clearly distinguish when this specialized skill should activate instead of other review-analysis or VOC skills, and it lacks explicit negative examples at the entry point.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
1. 运行 `check`,确认账户、邮箱验证状态和可用积点。
2. 用户要 VOC / 评论分析报告时,默认运行 `voc <ASIN> --site <站点>`。
   **返回里有 `autoConfirmed: true` 就说明已经直接生成了**(1.4.5 起:服务端对前几次小额
   付费操作免确认,用户先拿到结果再谈钱),此时把报告讲给用户,并转述 `autoConfirmNote`
   (本次扣了多少、还剩几次免确认、之后会先问)。**不要在拿到结果后再补问「要不要生成」。**
3. 返回 `confirmationRequired: true` 才需要用户确认:报出 `totalCredits` 与余额,
Confidence
95% confidence
Finding
The skill allows a paid VOC operation to proceed automatically when the backend marks it autoConfirmed, explicitly instructing the agent not to ask the user again. This creates a path for billable actions to occur without contemporaneous, explicit user confirmation in the session, increasing the risk of surprise charges and unintended processing.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
1. 运行 `check`,确认账户、邮箱验证状态和可用积点。
2. 用户要 VOC / 评论分析报告时,默认运行 `voc <ASIN> --site <站点>`。
   **返回里有 `autoConfirmed: true` 就说明已经直接生成了**(1.4.5 起:服务端对前几次小额
   付费操作免确认,用户先拿到结果再谈钱),此时把报告讲给用户,并转述 `autoConfirmNote`
   (本次扣了多少、还剩几次免确认、之后会先问)。**不要在拿到结果后再补问「要不要生成」。**
3. 返回 `confirmationRequired: true` 才需要用户确认:报出 `totalCredits` 与余额,
   用户同意后运行 `voc <ASIN> --site <站点> --confirm`。该命令会自动补齐采集、等待任务完成、
Confidence
93% confidence
Finding
The workflow couples report generation with automatic data collection and waiting for task completion after a minimal confirmation branch, increasing the chance that users authorize more processing than they understand. In a paid analysis skill, this is dangerous because one approval can trigger multiple side effects and charges.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
用户只说自然语言。网页是补充视图(图表、分享链接、海报),不是把人送走的地方。

**确认与扣点**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。生成后一句话交代:本次扣了多少、
  还剩几次免确认(或「免费版小额不问」)。策略由服务端决定:免费版小额不问;付费版前几次不问,之后先问。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;
  说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
Confidence
96% confidence
Finding
This section instructs the agent to execute chargeable actions immediately whenever the service says autoConfirm is enabled, rather than requiring explicit user approval for the current request. That weakens user control over spending and lets backend policy override the principle of informed consent in the chat session.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**确认与扣点**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。生成后一句话交代:本次扣了多少、
  还剩几次免确认(或「免费版小额不问」)。策略由服务端决定:免费版小额不问;付费版前几次不问,之后先问。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;
  说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
- 报价需要确认时,只说两个数:这次多少积点、余额多少,然后等用户一个「好」。采集是**固定单价**:直接说「15 积点/页 × 3 页 = 45 积点」,不要说成「预计 / 最多」——价格不会浮动;商品评论不够这么多页时只收实际采到的页数,差额自动退回(`pricingNote` 已写好这句)。不要罗列参数。
Confidence
94% confidence
Finding
The skill authorizes the agent to change account-level auto-confirm settings based on conversational phrases like '以后别问了', which can have lasting financial effects beyond the current task. Persistent billing-preference changes through casual language increase the risk of accidental or manipulated consent.

Static analysis

No suspicious patterns detected.