Back to skill

Security audit

亚马逊差评回复助手 · AI生成回复话术

Security checks for vulnerabilities and agentic risk

Overview

This assistant can spend your ARI credits without asking, including through a command documented as a free preview.

Before requesting analysis, set and verify “ask every time” using autoconfirm off. Use the dedicated quote command for previews, and avoid deepdive until its billing behavior is fixed. Separately approve recurring collection and competitor-monitoring costs; omitting --confirm does not reliably prevent spending.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/ari.py
Finding

Quote-only deepdive can execute a paid analysis

Content
View full analysis

Impact

Account credits can be consumed when the caller requested the documented non-confirmed deepdive behavior. For an absent main-product subscription, the command can additionally report that analysis was downgraded without charging even after the paid request executed.

Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (87)

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The security-relevant mismatch is the expansion from review assistance into automatic credit-consuming execution, including first-run spending without a user-defined amount limit. The broader feature set alone is not a vulnerability, but service-provided auto-confirmation is treated as spending authority without establishing informed user consent.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The competitor-binding instructions state that adding a competitor starts automatic weekly collection, without an accompanying requirement to disclose and authorize that recurring activity. Consent to a one-time comparison or relationship binding does not establish consent to ongoing, potentially billable collection.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The explicit '--type compare' and '--competitor' arguments indicate a competitor-comparison operation rather than the declared review-response and status-tracking workflow. Although both involve Amazon ASINs, competitor analysis is a distinct, undeclared capability. The underlying Python implementation is not supplied, so its exact processing and resource access cannot be verified.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The visible interface centers on scheduled monitoring and watch lifecycle management, not negative-review replies or case handling. Although ASIN subscriptions could support the declared workflow, configuring recurring watches with pricing acceptance and optional competitor monitoring goes materially beyond merely listing subscribed ASINs' pending reviews. No supplied command generates buyer messages, provides appeal advice, recommends improvements, or updates individual review-handling statuses. The underlying script is not shown, so this assessment is limited to the capabilities exposed by the supplied commands.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The description mentions using existing ASIN subscriptions to handle negative reviews, but the supplied chunk exposes subscription-management operations, including scheduled competitor monitoring and explicit price acceptance. These go beyond supporting review-response functionality. No commands shown list pending reviews, generate responses or update review-handling status. Because the chunk contains usage examples rather than the underlying script, it establishes the exposed operations but does not prove that billing or monitoring actually executes.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The supplied command performs category-level ranking, a capability not disclosed in the declared review-response and case-tracking workflow. Sharing the subject of negative reviews does not make leaderboard generation a supporting implementation detail. The CLI implementation is not supplied, so the effect of --confirm and any additional side effects cannot be determined.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The command explicitly selects analyze --type compare and supplies a --competitor ASIN rather than requesting pending reviews, response drafts, appeals, or status updates. This indicates an undeclared comparative-analysis capability. The underlying script is not provided, so its detailed operations and any external effects cannot be verified.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

Although ASIN subscriptions are mentioned as context in the description, the supplied commands expose a broader monitoring-management workflow, including competitor tracking and price acceptance, that is not declared. These are substantive user-facing capabilities rather than merely implementation details of drafting review replies or tracking review-resolution status. The chunk contains no commands for generating responses, preparing appeals or updating individual review statuses. Because the underlying CLI implementation is not supplied, actual billing and the precise contents of watch data cannot be verified.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The description covers review-response assistance and case-status tracking, but does not disclose configuring recurring collection or associated charges. These are material operational capabilities rather than incidental implementation details. The snippet does not include the underlying CLI implementation, so it establishes the exposed scheduling operations and stated billing implications, not whether collection or charging actually succeeds.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

The command explicitly selects 'operations quote --workflow audit --focus full', which is not a declared review-response or review-status capability. Its ASIN and Amazon-site targeting is consistent with the general domain, but does not establish a connection to negative-review handling. The implementation of ari.py is not supplied, so the assessment is limited to the operation visibly invoked and does not assume downstream behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
83% confidence
Finding

The visible command selects a full audit operation rather than a review-listing, response-generation, or review-status operation. That is a materially different workflow from the declared review-handling purpose. The implementation of scripts/ari.py is not supplied, so the audit's precise scope and side effects cannot be established from this chunk alone.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
83% confidence
Finding

The supplied command selects a benchmark operation rather than a review-response or review-status workflow. This indicates an undeclared capability. However, the implementation of scripts/ari.py is not supplied, so the benchmark's exact behavior, resource access and side effects cannot be verified.

Content

No source excerpt is available for this finding.

Paid analysis and collection can execute without the explicitly promised --confirm flag.

High
Category
Excessive Agency
Confidence
99% confidence
Finding

run_analysis changes confirm from false to true based on the server's autoConfirm field, allowing chargeable analysis without the explicitly promised --confirm flag. cmd_voc similarly permits collection plus analysis without confirmation, and deepdive can invoke this analysis path despite describing an execution as quote-only. A server policy setting or malformed truthy value can therefore turn an expected preview into spending account credits.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

This entry adopts a server-provided autoConfirm flag as sufficient authority to bypass confirmation for credit-consuming operations. The surrounding release notes describe this as a default policy for new users, rather than necessarily a user-authorized spending preference; in a skill advertised as offering free review assistance, that creates a risk of unexpected credit consumption. This is a documented consent-boundary weakness, although the implementation is not available for verification.

Content

Scanner excerpt · CHANGELOG.md (reported line 23)May include surrounding context.

md
- 重新发布:各市场首批上架的 1.5.0 包早于免确认修复,新注册的免费版用户仍会被要求先确认报价。
  1.5.1 与当前官网下发的修复版一致,市场侧以新版本号覆盖旧包。
- 免确认只认服务端报价返回的 `autoConfirm`;采集报价扣除首次采集免费页;
  非美国站首次采集可用赠送积点时不再提示「赠送积点不可用」(行为与修复后的 1.5.0 相同)。
- 命令、字段与计费规则不变,不提高最低支持版本。

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
90% confidence
Finding

The documented workflow automatically collects data, generates a report, and deducts credits without presenting the price for confirmation; the initial server policy explicitly has no amount ceiling. Requesting a report does not necessarily authorize unspecified charges, and showing charges afterward does not establish prior consent. User thresholds and insufficient-balance checks reduce exposure but do not establish authorization for users who have configured neither.

Content

Scanner excerpt · CHANGELOG.md (reported line 32)May include surrounding context.

md
- 行为变更:新用户(注册并验证邮箱后)第一次要 VOC,只给 ASIN 即可(站点默认美国站),
  `voc` 直接执行——自动补采集(默认 3 页)、生成报告、按服务端定价扣费并归档,
  不再停在报价等确认。费用在报告返回的 `charges` 字段透明展示(采集/分析/合计/余额前后)。
- 免确认与否**只认服务端报价返回的 `autoConfirm` 布尔**:服务端策略前 N 次付费生成不看金额上限
  (新用户赠送积点按设计覆盖「3 页采集 + 一份 VOC」);用户自设阈值优先、显式要求「每次先问」
  时仍先报价;余额不足不自动。客户端不再从 `autoConfirmNote` 文案或 `autoConfirmRemaining`
  自行推断——文案匹配会把 Free 小额提示里的「先确认」误判成用户要求每次询问,恰好挡住新用户。

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

In context, this match belongs to the same automatic-spending policy as the preceding finding, not a separate exploit. Using a structured Boolean instead of interpreting descriptive text is reasonable, but the Boolean still cannot substitute for user authorization when the service defaults to permitting paid execution without an amount ceiling.

Content

Scanner excerpt · CHANGELOG.md (reported line 34)May include surrounding context.

md
不再停在报价等确认。费用在报告返回的 `charges` 字段透明展示(采集/分析/合计/余额前后)。
- 免确认与否**只认服务端报价返回的 `autoConfirm` 布尔**:服务端策略前 N 次付费生成不看金额上限
  (新用户赠送积点按设计覆盖「3 页采集 + 一份 VOC」);用户自设阈值优先、显式要求「每次先问」
  时仍先报价;余额不足不自动。客户端不再从 `autoConfirmNote` 文案或 `autoConfirmRemaining`
  自行推断——文案匹配会把 Free 小额提示里的「先确认」误判成用户要求每次询问,恰好挡住新用户。
- 采集报价同口径扣除服务端 `trialFreePages`(首次采集试用免费页),避免新用户被误报「积点不足」。
- 非美国站:服务端 `credits.gift` 策略下用户首次采集不限站点,`credits/balance` 返回 `giftAllSites`,

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

This is another match within the same consent-boundary issue, rather than an additional independent vulnerability. Avoiding inference from explanatory text is not itself dangerous; the risk is allowing the server's default auto-confirm policy to authorize spending that the user has not explicitly approved.

Content

Scanner excerpt · CHANGELOG.md (reported line 34)May include surrounding context.

md
不再停在报价等确认。费用在报告返回的 `charges` 字段透明展示(采集/分析/合计/余额前后)。
- 免确认与否**只认服务端报价返回的 `autoConfirm` 布尔**:服务端策略前 N 次付费生成不看金额上限
  (新用户赠送积点按设计覆盖「3 页采集 + 一份 VOC」);用户自设阈值优先、显式要求「每次先问」
  时仍先报价;余额不足不自动。客户端不再从 `autoConfirmNote` 文案或 `autoConfirmRemaining`
  自行推断——文案匹配会把 Free 小额提示里的「先确认」误判成用户要求每次询问,恰好挡住新用户。
- 采集报价同口径扣除服务端 `trialFreePages`(首次采集试用免费页),避免新用户被误报「积点不足」。
- 非美国站:服务端 `credits.gift` 策略下用户首次采集不限站点,`credits/balance` 返回 `giftAllSites`,

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
86% confidence
Finding

This entry extends the same auto-confirm behavior to multiple analysis types, allowing credit-consuming generation based on a server flag and reporting charges afterward. That broadens the documented consent weakness beyond the initial report workflow, although no execution code is supplied to verify whether these commands are reachable in this particular review-reply package.

Content

Scanner excerpt · CHANGELOG.md (reported line 41)May include surrounding context.

md
为 true 时赠送积点计入 `nonUsCollectCredits`、`siteNote` 为空;UK/DE/JP 卖家的第一份 VOC 同样一步直出。
- 余额不足仍在执行前拦截(402)并引导充值;定价以服务端配置为准,代码常量仅为兜底。
- 一致性:`analyze` 各类型(insight / keywords / trend / variant / compare)走同一口径,
  `autoConfirm=true` 即直接生成并返回 `charges`。
- 文档:移除所有写死的单价与合计示例。采集/分析单价与页数由后台 `pricing` 配置决定,
  一律以本次报价返回的 `credits` / `totalCredits` 为准,不得凭文档或记忆报数。

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · CHANGELOG.md (reported line 77)May include surrounding context.

md
- 能力层收窄:44 个专属包不再只是「声明窄」,包体 `scripts/ari.py` 同时按各自契约裁剪。
  构建期用 AST 删除文档未承诺的命令、它们的解析器注册块,以及只被它们引用的辅助函数与
  常量;专属包因此不再包含 `export`(任意路径写文件)、`autoconfirm`(撤销逐次确认)、
  `workbench`(改写差评处理状态)、`alerts`(标记预警已读)、`competitors`、`schedule`、
  `voc` / `analyze` / `charts` / `deepdive` 等母版命令。
- 新增运行期兜底闸:专属包在包内写入 `allowedCommands` 白名单,`ari.py`

Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were detected: env, file_write, network, shell.

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
97% confidence
Finding

The agent is instructed to treat a server auto-confirmation flag as sufficient authority for credit deductions, including first-use rules with no amount limit. A user-configured budget could authorize automation, but a service-selected first-run policy does not establish equivalent consent.

Content

Scanner excerpt · SKILL.md (reported line 64)May include surrounding context.

md
`voc <ASIN>`(没说站点就用默认的美国站,不要为此追问)。
  命中服务端免确认规则(新用户首次体验不看金额 / 账户剩余免确认次数 / 用户自设阈值)且余额充足时,
  **直接完成采集 + 生成 + 扣点并归档**,不再停在报价环节。绝不能描述成“先帮你问个价 / 只报价不扣点”。
  免确认与否以返回里的 `autoConfirm` 为准,不要自己从提示文案里猜。
- 直接生成成功后,返回结果带 `charges`(采集扣点、分析扣点、合计、扣前/扣后余额)与 `autoConfirmNote`。
  **先讲报告,再用一句话转述实际扣点**,不要在拿到结果后再补问「要不要生成」,也不要回头补一次报价。
- 只有在返回 `confirmationRequired: true` 时(余额不足、或用户自行设置了“每次先问”)

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
97% confidence
Finding

The instruction to present the report before mentioning deductions makes charge disclosure retrospective. This reinforces the adjacent consent flaw when auto-confirmation comes from service defaults rather than a user-approved spending policy.

Content

Scanner excerpt · SKILL.md (reported line 65)May include surrounding context.

md
命中服务端免确认规则(新用户首次体验不看金额 / 账户剩余免确认次数 / 用户自设阈值)且余额充足时,
  **直接完成采集 + 生成 + 扣点并归档**,不再停在报价环节。绝不能描述成“先帮你问个价 / 只报价不扣点”。
  免确认与否以返回里的 `autoConfirm` 为准,不要自己从提示文案里猜。
- 直接生成成功后,返回结果带 `charges`(采集扣点、分析扣点、合计、扣前/扣后余额)与 `autoConfirmNote`。
  **先讲报告,再用一句话转述实际扣点**,不要在拿到结果后再补问「要不要生成」,也不要回头补一次报价。
- 只有在返回 `confirmationRequired: true` 时(余额不足、或用户自行设置了“每次先问”)
  才报出 `totalCredits` 与余额并等待同意,同意后追加 `--confirm`。

The default workflow expands a negative-review reply assistant into a paid, general-purpose review-analysis service.

Medium
Category
Excessive Agency
Confidence
96% confidence
Finding

The workflow directs the agent to execute a potentially paid VOC request before quoting, including first-run execution without a user-defined spending cap. Asking for an analysis does not necessarily authorize undisclosed charges, and reporting deductions afterward does not remedy missing prior consent.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
97% confidence
Finding

The default workflow skips quotation and acknowledges that the report may already be charged when its response arrives. This can turn an ordinary analysis request into an undisclosed credit-consuming action without an established spending limit.

Content

Scanner excerpt · SKILL.md (reported line 120)May include surrounding context.

md
1. 运行 `check`,确认账户、邮箱验证状态和可用积点。
2. 用户要 VOC / 评论分析报告时,默认运行 `voc <ASIN> --site <站点>`,**不要再先跑一次报价**。
   **返回里有 `autoConfirmed: true`(或直接带 `reportId` / 正文)就说明报告已经生成并扣点了**
   (1.5.0:新用户首次体验直接出结果,用户先拿到报告再谈钱)。
   此时把报告讲给用户,并转述 `charges` — 本次采集扣了多少、分析扣了多少、合计多少、扣后还剩多少。
   **不要在拿到结果后再补问「要不要生成」,也不要再回头补一次报价。**

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
98% confidence
Finding

The instructions explicitly allow initial paid generations without an amount ceiling after email verification and receipt of an ASIN. Email verification and a product identifier establish neither price awareness nor authorization to consume an unrestricted amount of credits.

Content

Scanner excerpt · SKILL.md (reported line 182)May include surrounding context.

md
- **价格一律以服务端本次报价为准**(`analysis/quote` 与 `collect` 报价返回的 `credits` /
  `totalCredits`)。文档与示例里出现的任何单价、页数、合计都只是演示,后台可调,
  **不要凭记忆或旧文档报数,也不要把示例价当成承诺价。**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。
  生成后一句话交代本次实际扣了多少、扣后余额(读 `charges` 字段)。
  1.5.0 起服务端对新用户前几次付费生成不看金额上限:新用户验证邮箱后只给一个 ASIN,就一次性出报告。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;