Back to skill

Security audit

Amazon A+ 内容规划

Security checks for vulnerabilities and agentic risk

Overview

This A+ planning skill needs review because it exposes broader account controls and can spend credits through a documented quote-only workflow.

Prefer a corrected A+-only release that enforces approval before spending and fixes quote-only execution. If using this version, set billing to ask every time, restrict requests to the A+ workflow, and explicitly decline recurring monitoring unless wanted.

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 paid analysis

Content
View full analysis

Impact

Unexpected consumption of the user's analysis credits. For a missing main-product subscription, the CLI can additionally claim the analysis was downgraded and not charged despite reaching the paid execution path.

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

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Creating product and competitor watches introduces persistent, billable state beyond the declared A+ purpose. The document requires explicit recurring-price consent and competitor ownership checks, so the supported concern is scope confusion rather than a demonstrated billing or ownership bypass.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The A+-only description and final fixed-workflow section conflict with extensive instructions for account-wide operations, recurring collection, and automatically charged VOC generation. This creates an instruction-level scope and spending boundary failure, although the supplied material does not independently verify the claimed CLI implementation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Persistent paid watches exceed the declared planning-only boundary and remain available in the instructions despite the final A+-only restriction. Explicit watch pricing and consent requirements reduce the risk of unauthorized charges, but do not resolve the contradictory capability boundary.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The competitor-binding instruction says added competitors enter weekly automatic collection without an adjacent requirement to authorize that recurring side effect. Consent to a comparison report does not necessarily authorize ongoing competitor collection, particularly in a planning-only skill.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

This duplicates the persistent-watch scope issue: the document exposes recurring paid account changes through a skill advertised as content planning only. Required pricing confirmation mitigates financial abuse, but conflicting workflow instructions still undermine isolation of the specialized skill.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill includes recurring collection management and a weekly default for new products, although its stated role is one-off A+ planning. Instructions to use manual scheduling without recurring authorization are protective, but leaving both workflows active creates avoidable risk of persistent billing outside the selected scope.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

The supplied commands concern watch-service inspection and pricing rather than gathering product/review evidence or planning A+ content. Although they use the declared ARI tooling, their capabilities are not described or shown to support the stated purpose. The snippet does not show watch creation, advertising, image generation, or publishing.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

The visible commands concern watch monitoring and historical reporting, a capability not disclosed by the A+ content-planning description. The chunk does not show how these watch outputs provide product-detail or review evidence for A+ planning, so they are not established as supporting implementation details. This assessment is limited to the supplied commands; the underlying ARI implementation is not shown.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

The visible commands concern watch-service configuration and pricing rather than A+ content planning. These capabilities are not declared, and the supplied chunk does not establish that they support the stated planning workflow. Because the underlying ari.py implementation is not shown, this assessment is limited to the command invocations and their accompanying description; it does not infer additional API access or side effects.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

The supplied command requests a category ranking rather than product-specific evidence analysis or A+ content planning. Although review analysis can support the declared purpose, category-wide leaderboard generation is a distinct, undeclared operation. The snippet does not establish the CLI's underlying network access, credential handling, or any publishing behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
84% confidence
Finding

The supplied command targets alerts, rather than an operation visibly connected to product evidence or A+ content planning. Alert functionality is not declared, and the supplied chunk establishes no supporting relationship to the stated purpose. The mismatch assessment is limited to this command; without scripts/ari.py, its precise actions, resource access, and side effects cannot be verified.

Content

No source excerpt is available for this finding.

The documented collection workflow defaults to recurring monitoring rather than collection solely for A+ content planning.

High
Category
Excessive Agency
Confidence
97% confidence
Finding

Collection defaults to weekly monitoring unless manual scheduling is explicitly requested, potentially turning a one-time A+ planning task into recurring paid collection. Quoting monitoring costs does not itself establish consent, and the instruction to preserve existing schedules does not protect newly collected products from this default.

Content

No source excerpt is available for this finding.

Paid analysis and collection can execute without the explicit --confirm flag promised by the module documentation.

High
Category
Excessive Agency
Confidence
99% confidence
Finding

run_analysis promotes an absent --confirm into confirmation based on the server's autoConfirm value, contradicting the explicit-confirmation contract. cmd_voc similarly allows collection and analysis without the flag, and deepdive can consequently charge even when its caller intends quote-only behavior; no independent local spending cap or prior consent verification is shown.

Content

No source excerpt is available for this finding.

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 23)May include surrounding context.

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

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 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

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 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

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 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

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 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 skill treats server-defined first-use allowances and remaining automatic-confirmation counts as permission to spend, including first-use processing without an amount limit. Those service defaults are not equivalent to user-authorized spending, unlike a threshold explicitly configured by the user.

Content

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

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

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
96% confidence
Finding

The autoConfirm response is used as the sole spending gate even though the preceding rules include provider-defined first-run defaults. A server response can indicate that execution is permitted without proving that the user knowingly approved the charge.

Content

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

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

The skill directs account-wide monitoring and recurring paid collection despite declaring an A+-planning-only scope.

Medium
Category
Excessive Agency
Confidence
95% confidence
Finding

This section introduces account-wide monitoring and weekly collection defaults into a narrowly scoped planning skill. Its explicit consent and manual-fallback rules mitigate billing risk, but the conflicting capability scope still permits persistent account operations unrelated to the declared entry point.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
97% confidence
Finding

The workflow explicitly skips quoting and calls a VOC endpoint that may collect data, generate a report, and charge before any price is presented. Post-execution disclosure of charges cannot substitute for payment authorization, and this path conflicts with the final A+-specific quote-first requirement.

Content

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

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

Advertising-keyword workflows extend the skill beyond its declared A+ content-planning purpose.

Medium
Category
Excessive Agency
Confidence
94% confidence
Finding

These instructions direct the agent to run paid keyword analysis for advertising terms, negative keywords, competitor-brand keywords, and backend Search Terms, and to proactively promote advertising use after a VOC report. Although this does not establish actual ad deployment, it does introduce advertising and general Listing optimization deliverables outside the manifest's A+-planning-only scope.

Content

No source excerpt is available for this finding.