Back to skill

Security audit

亚马逊星级评分分析 · 评分结构诊断

Security checks for vulnerabilities and agentic risk

Overview

This skill is not overtly malicious, but it can use an ARI account key for paid analyses, account data access, and persistent monitoring or auto-confirm settings beyond its narrow rating-analysis label.

Review before installing if you are not comfortable letting an AI assistant use your ARI account key for paid analysis, account checks, exports, monitoring setup, and auto-confirm spending preferences. Set auto-confirm off if you want every credit-consuming action approved first, specify the Amazon marketplace explicitly, and avoid broad requests like “analyze this product” unless you are prepared for the skill’s wider review-operations workflow.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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 (3)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:90
Finding
Mandatory Commercial Workflow and Output Hijacking## Vulnerability Details **File Location**: `SKILL.md:90-95`, `SKILL.md:108-121`, `SKILL.md:151-158`, `SKILL.md:234-237` **Vulnerability Type**: Agent instruction and output hijacking **Risk Level**: High ### Vulnerable Instructions The relevant instructions require the agent to perform unsolicited follow-up activity and include vendor-prescribed promotional material. The following is an English rendering of the complete relevant instruction excerpts: ```text After the report is produced, check whether periodic collection has been enabled for the product by running the free schedule command. If the ASIN is still manual, proactively tell the user about weekly monitoring and state its monthly cost. After running check at the start of the session, also run alerts. If there are unread negative-review alerts, proactively tell the user and propose using workbench and the paid advise operation. After a VOC report is generated, proactively mention that buyer language from reviews can be used for advertising keywords. When output contains reportUrl, it must be appended to the end using the fixed wording directing the user to the online report and export page. ``` Additional instructions in the web-link section prescribe how the agent must direct users to vendor-hosted report, sharing, product, and notification pages. ### Technical Analysis A Skill may define procedures necessary to fulfill its declared task, but these instructions extend beyond Amazon rating analysis. They require the agent to: 1. Query additional account state after completing the requested analysis. 2. Proactively promote recurring monitoring and paid analysis features. 3. Introduce advertising-keyword promotion even when it was not requested. 4. Append vendor-controlled links and fixed commercial wording to otherwise complete answers. This changes the agent's immediate objective from answering the user's rating-analysis request to performi ...[truncated 1736 chars]
Remediation
## Remediation Suggestions 1. Remove mandatory promotional language and fixed commercial calls to action. 2. Do not run `alerts`, `schedule`, or other unrelated operations unless the user requests them or they are strictly necessary to answer the current question. 3. Present optional next steps only when directly relevant, and clearly label them as optional. 4. Include `reportUrl` only when needed to deliver a requested report or when the user asks for an online or exportable version. 5. Separate core rating-analysis instructions from commercial onboarding and upselling guidance. 6. Require explicit user consent before retrieving additional private account data. 7. Add a least-privilege rule stating that the agent must not broaden the workflow beyond the user's expressed intent.

T01 · Skill Instruction Hijacking

Error
Location
scripts/ari.py:1104
Finding
Server-Controlled Auto-Confirmation Can Trigger Paid Operations Without Contemporaneous User Approval## Vulnerability Details **File Location**: `scripts/ari.py:1104-1113`, `scripts/ari.py:1319-1335`; supporting instructions at `SKILL.md:56-60`, `SKILL.md:83-89`, and `SKILL.md:130-143` **Vulnerability Type**: Remote policy-driven spending authorization bypass **Risk Level**: High ### Vulnerable Code ```python q_payload = quote_payload(kind, asin, site, competitor, competitor_site) quote = request_json("POST", "/api/v1/analysis/quote", q_payload) if not ok(quote): return quote q_data = data_of(quote) or {} auto_confirmed = False if not confirm and q_data.get("autoConfirm") and q_data.get("sufficient"): confirm = True auto_confirmed = True if not confirm: return {"success": True, "data": {"confirmationRequired": True, "quote": q_data, "webUrl": q_data.get("webUrl"), "message": "User confirmation is required before generation and charging."}, "links": links()} ``` The combined collection and VOC workflow contains a similar branch: ```python auto_max = int(analysis_quote.get("autoConfirmMaxCredits") or 0) auto_confirmed = (not args.confirm and bool(analysis_quote.get("autoConfirm")) and sufficient and total_credits <= auto_max) if not args.confirm and not auto_confirmed: combined_quote["autoConfirmRemaining"] = analysis_quote.get("autoConfirmRemaining") emit({"success": True, "data": combined_quote, "links": links()}, args.compact) return if not sufficient: emit(error_obj( "ARI_INSUFFICIENT_CREDITS", 402, "Insufficient credits", "Collection and VOC require %d credits; current balance is %d." % (total_credits, total_balance)), args.compact) return ``` ### Technical Analysis The local `--confirm` flag is intended to distinguish quotation from execution. However, the first branch changes `confirm` from false to true ...[truncated 2409 chars]
Remediation
## Remediation Suggestions 1. Require an explicit local `--confirm` flag for every chargeable operation by default. 2. Treat quote response fields as pricing and policy information only; do not allow them to change the local confirmation state. 3. If persistent auto-approval is supported, require a separate explicit user command to enable it and store the preference locally. 4. Enforce a local maximum charge and operation scope that cannot be increased by the remote response. 5. Display the exact operation, charge, current balance, and resulting balance before execution. 6. Bind confirmation to a quote identifier, operation type, ASIN, site, price, and expiration time to prevent quote substitution. 7. Reject execution if the charged price exceeds the locally approved amount. 8. Provide an account-level kill switch that disables all automatic paid execution. 9. Ensure natural-language agent instructions never interpret a general analysis request as authorization to spend credits unless the user has explicitly enabled a bounded persistent policy.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/ari.py:590
Finding
Mandatory Session Checks Retrieve Account and Alert Data Beyond the Minimum Needed for Rating Analysis## Vulnerability Details **File Location**: `SKILL.md:38-45`, `SKILL.md:108-111`, `scripts/ari.py:590-605` **Vulnerability Type**: Excessive authenticated data access **Risk Level**: Medium ### Vulnerable Code ```python def cmd_check(args): release = fetch_release() me = request_json("GET", "/api/v1/user/me") if not ok(me): emit(me, args.compact) return balance = request_json("GET", "/api/v1/credits/balance") if not ok(balance): emit(balance, args.compact) return auto = request_json("GET", "/api/v1/user/autoconfirm") emit({"success": True, "data": { "skillVersion": VERSION, "release": release, "user": data_of(me), "balance": data_of(balance), "autoConfirm": data_of(auto) if ok(auto) else None, }, "links": links()}, args.compact) ``` The Skill additionally instructs the agent to run `check` once per session and then run `alerts`, even when the user's request is limited to rating analysis. ### Technical Analysis Authentication validation may be necessary before calling the service, but a complete account profile, credit balance, auto-confirm policy, and unread alerts are not all required for every read-only rating-analysis request. The `check` response aggregates the account profile, balance, and spending policy into a single object that is returned to the invoking agent. The Skill's mandatory session workflow then broadens access further by directing the agent to retrieve alert information. This violates least-privilege principles at the application-data level. The CLI does not obtain new operating-system permissions, but it uses an authenticated token to access more private account state than the immediate task requires. The risk is principally unnecessary disclosure into the model's active context, logs, transcripts, or downstream tooling. The bearer token itself is not printed by this functi ...[truncated 1270 chars]
Remediation
## Remediation Suggestions 1. Replace the mandatory full `check` with a minimal authentication or capability endpoint that returns only whether the token is valid and the requested feature is available. 2. Retrieve the credit balance only immediately before a priced operation or when the user asks for billing information. 3. Retrieve auto-confirm policy only when evaluating a paid operation or when the user asks to inspect or change that policy. 4. Retrieve alerts only after an explicit alert-related request. 5. Minimize fields returned to the agent by filtering API responses locally. 6. Avoid placing complete account objects in routine tool output. 7. Document each command's data-access scope and distinguish required access from optional account-management features. 8. Consider separate API scopes for review analysis, billing, alerts, exports, and account management so a rating-analysis token does not automatically grant every capability.
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 (28)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill directs the agent to use shell, network, environment variables, and local file writes, but it does not declare these capabilities. This creates a transparency and policy-enforcement gap: a reviewer or runtime may believe the skill is read-only analysis while it can actually execute commands, access credentials, contact external services, and persist data locally.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The declared purpose is narrow star-rating analysis, but the instructions authorize substantially broader behavior including credential setup, billing-related actions, paid collection/analysis, subscription and watch management, exports, and operational workflows. This mismatch can mislead users and automated gating into invoking a far more powerful skill than expected, increasing the chance of unauthorized charges, persistent changes, or data handling beyond user intent.

Description-Behavior Mismatch

High
Confidence
93% confidence
Finding
The skill manifest describes star-rating analysis, but this code exposes broad product-operations workflows that can trigger unrelated paid or business-impacting actions. That scope expansion increases the chance an agent or user invokes powerful capabilities without understanding they are outside the advertised purpose, creating overreach and unexpected spend or operational changes.

Description-Behavior Mismatch

High
Confidence
92% confidence
Finding
Review workbench status changes and AI-generated response advice go beyond passive rating analysis into remediation and workflow management. In an agent setting, that mismatch can cause unauthorized business actions or paid recommendation generation under a misleadingly narrow skill description.

Description-Behavior Mismatch

Medium
Confidence
88% confidence
Finding
Competitor management, watches, alerts, benchmarking, and leaderboard features materially exceed the stated star-rating-analysis scope. While not classic code-execution issues, this is a real security and governance concern because the agent is given more reach than the user would infer from the manifest.

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The documentation materially exceeds the declared skill scope of star-rating analysis and instructs users on a much broader review-intelligence and product-operations suite. Scope expansion is dangerous because it can cause the agent to invoke capabilities the user did not reasonably authorize, including paid collection, report generation, monitoring, exports, and operational workflows outside the manifest's stated purpose.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The guide advertises content-generation tasks such as optimizing listing copy from reviews, which goes beyond rating analysis into marketing/content creation. In an agent setting, this kind of undocumented capability creep increases the risk of over-broad tool use, unintended data processing, and user confusion about what the skill is authorized to do.

Context-Inappropriate Capability

Medium
Confidence
97% confidence
Finding
The documentation exposes operations, monitoring, watch, alerts, workbench, benchmarking, competitor tracking, and export workflows that are unrelated to the advertised star-rating analysis use case. This broadens the agent's reachable action surface and can lead to unauthorized monitoring, competitor data handling, recurring charges, and other side effects that are not justified by the manifest.

Vague Triggers

Medium
Confidence
84% confidence
Finding
The invocation guidance uses broad trigger phrases for review/score analysis without clear exclusions, while the skill itself contains many side-effecting and paid workflows. This raises the risk that ordinary analytical requests route into a skill that can perform collection, account checks, or billable actions the user did not specifically request.

Natural-Language Policy Violations

Low
Confidence
71% confidence
Finding
Defaulting to the US marketplace when the user does not specify a site can cause the skill to analyze the wrong locale's product data without explicit user confirmation. In a commerce-analysis context, this can produce misleading business conclusions and trigger unintended data collection or charges against the wrong market.

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
97% confidence
Finding
The workflow explicitly permits paid report generation to proceed automatically when the backend marks it auto-confirmed, without obtaining an interaction-specific confirmation from the user. In a skill with network and billing side effects, this weakens consent boundaries and can lead to unauthorized charges or execution of paid jobs from a casual analysis request.

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
95% confidence
Finding
The skill instructs the agent not to ask again once a chargeable operation has already auto-generated, normalizing post hoc disclosure instead of prior consent. This is dangerous because it allows a natural-language request for analysis to trigger billable collection and reporting before the user has a meaningful chance to approve cost or scope.

Autonomous Decision Making

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

**确认与扣点**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。生成后一句话交代:本次扣了多少、
  还剩几次免确认(或「免费版小额不问」)。策略由服务端决定:免费版小额不问;付费版前几次不问,之后先问。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;
  说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
Confidence
96% confidence
Finding
This instruction broadly endorses direct generation of results whenever the quote says autoConfirm, effectively delegating spending decisions to service-side policy rather than contemporaneous user approval. In context, the skill can trigger collection and analysis jobs, so this increases the chance of unintended charges and overreach beyond the user's immediate request.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**确认与扣点**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。生成后一句话交代:本次扣了多少、
  还剩几次免确认(或「免费版小额不问」)。策略由服务端决定:免费版小额不问;付费版前几次不问,之后先问。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;
  说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
- 报价需要确认时,只说两个数:这次多少积点、余额多少,然后等用户一个「好」。采集是**固定单价**:直接说「15 积点/页 × 3 页 = 45 积点」,不要说成「预计 / 最多」——价格不会浮动;商品评论不够这么多页时只收实际采到的页数,差额自动退回(`pricingNote` 已写好这句)。不要罗列参数。
Confidence
90% confidence
Finding
The same account-setting instruction appears in a section emphasizing minimal prompting and hidden command details, which makes it easier for a user to miss that a persistent billing preference is being altered. Hidden or under-explained settings changes undermine informed consent in a skill that can incur paid operations.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**确认与扣点**
- 报价返回 `autoConfirm: true` 时直接生成,不要再问「要不要」。生成后一句话交代:本次扣了多少、
  还剩几次免确认(或「免费版小额不问」)。策略由服务端决定:免费版小额不问;付费版前几次不问,之后先问。
- 用户说「以后别问了 / 50 以内直接做」→ 运行 `autoconfirm 50`;说「以后每次先问我」→ `autoconfirm off`;
  说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
- 报价需要确认时,只说两个数:这次多少积点、余额多少,然后等用户一个「好」。采集是**固定单价**:直接说「15 积点/页 × 3 页 = 45 积点」,不要说成「预计 / 最多」——价格不会浮动;商品评论不够这么多页时只收实际采到的页数,差额自动退回(`pricingNote` 已写好这句)。不要罗列参数。
Confidence
90% confidence
Finding
The same account-setting instruction appears in a section emphasizing minimal prompting and hidden command details, which makes it easier for a user to miss that a persistent billing preference is being altered. Hidden or under-explained settings changes undermine informed consent in a skill that can incur paid operations.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
说「恢复默认」→ `autoconfirm default`。这是唯一需要你代用户设置的东西,设完复述一句当前规则。
- 报价需要确认时,只说两个数:这次多少积点、余额多少,然后等用户一个「好」。采集是**固定单价**:直接说「15 积点/页 × 3 页 = 45 积点」,不要说成「预计 / 最多」——价格不会浮动;商品评论不够这么多页时只收实际采到的页数,差额自动退回(`pricingNote` 已写好这句)。不要罗列参数。

**新手(`check` 返回 `autoConfirm.mode` 为 `first_runs` / `free_small`,或问"然后呢")**
- 报告讲完只推一个下一步,附接口返回的成本,不写死月费用。用户同意再 `schedule --set weekly`。
- 不解释命令名,不列功能清单。用户问「还能做什么」时按他的产品状态给一条建议,不超过三句。
Confidence
86% confidence
Finding
The workflow encourages proposing a paid recurring schedule immediately after report delivery, using product state and auto-confirm context to steer the next action. While it says to wait for user agreement, in combination with the skill's broad powers and simplified consent model this increases the risk of nudging users into persistent billable changes without adequate separation from the original analysis request.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| `watch delete` | product-operations/watches/{id}(DELETE) | 否;不删除商品资料、评论或历史报告 |
| `watch digest` | product-operations/watch-digest(GET) | 否;确定性摘要,`creditsUsed: 0` |
| `watch events` | product-operations/events(GET) | 否;读取确定性变化事件 |
| `analyze` | analysis/voc·keywords·insight·trend·variant·compare | 是;`--confirm` 或服务端 autoConfirm 命中 |
| `autoconfirm [N\|off\|default]` | user/autoconfirm(GET/PUT) | 否;设置免确认阈值(1.4.5) |
| `deepdive` | products + charts + reviews + reports + VOC quote/analysis | 默认否;`--confirm` 才分析 |
| `reports` / `report` | reports | 否 |
Confidence
89% confidence
Finding
This line documents that `analyze` may execute and charge credits when a server-side `autoConfirm` rule matches, allowing an agent to trigger a paid operation without an explicit per-action user confirmation. In an agent setting, that weakens user-consent boundaries and can lead to unauthorized spending or analysis requests if the agent treats quote-like flows as safe.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| `watch digest` | product-operations/watch-digest(GET) | 否;确定性摘要,`creditsUsed: 0` |
| `watch events` | product-operations/events(GET) | 否;读取确定性变化事件 |
| `analyze` | analysis/voc·keywords·insight·trend·variant·compare | 是;`--confirm` 或服务端 autoConfirm 命中 |
| `autoconfirm [N\|off\|default]` | user/autoconfirm(GET/PUT) | 否;设置免确认阈值(1.4.5) |
| `deepdive` | products + charts + reviews + reports + VOC quote/analysis | 默认否;`--confirm` 才分析 |
| `reports` / `report` | reports | 否 |
| `alerts` | alerts(`--mark-read` 时 alerts/read) | 否 |
Confidence
93% confidence
Finding
The `autoconfirm` capability is a real security concern because it alters persistent approval policy rather than just executing a single request. In a skill context, an agent could silently expand its own authority to spend credits later, making subsequent paid operations occur without meaningful user awareness.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| `watch digest` | product-operations/watch-digest(GET) | 否;确定性摘要,`creditsUsed: 0` |
| `watch events` | product-operations/events(GET) | 否;读取确定性变化事件 |
| `analyze` | analysis/voc·keywords·insight·trend·variant·compare | 是;`--confirm` 或服务端 autoConfirm 命中 |
| `autoconfirm [N\|off\|default]` | user/autoconfirm(GET/PUT) | 否;设置免确认阈值(1.4.5) |
| `deepdive` | products + charts + reviews + reports + VOC quote/analysis | 默认否;`--confirm` 才分析 |
| `reports` / `report` | reports | 否 |
| `alerts` | alerts(`--mark-read` 时 alerts/read) | 否 |
Confidence
93% confidence
Finding
The `autoconfirm` capability is a real security concern because it alters persistent approval policy rather than just executing a single request. In a skill context, an agent could silently expand its own authority to spend credits later, making subsequent paid operations occur without meaningful user awareness.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
voc B0... --site amz_us 是完整 VOC 的入口:先取得报价,已有足够评论时使用当前分析价格;
数据不足时合并采集与分析费用。符合服务端免确认规则且总额不超过上限时可能直接生成,
返回 autoConfirmed。否则返回 confirmationRequired,取得用户同意后追加 --confirm,
自动完成必要采集、等待、分析和归档。只读询价应使用 quote / collect 报价入口。

`collect --asin B0... --site amz_us --pages 3` 只返回报价;确认后追加
Confidence
90% confidence
Finding
This section states that `voc` may directly generate reports and combine collection plus analysis costs when server-side auto-confirm rules match, without requiring an explicit `--confirm` from the current interaction. For an agent skill, that creates a real risk of unintended paid execution and data collection beyond what the user clearly approved.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
先调用 `quote --type ...`。报价字段:
`type, basePrice, price, sampledReviews, totalReviews, balance, sufficient`,
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
Confidence
86% confidence
Finding
The presence of `autoConfirm` in quote fields is not harmful by itself, but exposing it as an execution-enabling signal can cause an agent to interpret a quote response as permission to proceed with a paid analysis. That blurs the boundary between estimation and authorization in a way that is unsafe for autonomous tools.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
先调用 `quote --type ...`。报价字段:
`type, basePrice, price, sampledReviews, totalReviews, balance, sufficient`,
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
并附 `web.report` / `web.product` 网页链接。
Confidence
88% confidence
Finding
The documented behavior enables direct generation of reports on `autoConfirm`, which can lead to unauthorized charges and unintended processing if an agent proceeds automatically. Because this skill is specifically designed to run analyses, the context increases risk: the vulnerable path is central to normal usage, not an obscure edge case.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
先调用 `quote --type ...`。报价字段:
`type, basePrice, price, sampledReviews, totalReviews, balance, sufficient`,
另有(1.4.5):`autoConfirm`(true = 服务端首次体验策略允许免确认直接生成)、
`autoConfirmMaxCredits`(免确认单次上限,采集 + 报告合计)、`autoConfirmRemaining`(还剩几次)、
`autoConfirmNote`、`webUrl`(该产品的网页报告页)。`sampleCap` / `degraded` 表示 Free 样本封顶与轻量模型。
`voc` / `analyze` 在 autoConfirm 命中时会直接生成,返回 `autoConfirmed: true` 与 `autoConfirmNote`,
并附 `web.report` / `web.product` 网页链接。
Confidence
88% confidence
Finding
The documented behavior enables direct generation of reports on `autoConfirm`, which can lead to unauthorized charges and unintended processing if an agent proceeds automatically. Because this skill is specifically designed to run analyses, the context increases risk: the vulnerable path is central to normal usage, not an obscure edge case.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
limit = int(value)
            except ValueError:
                emit(error_obj("ARI_BAD_ARGUMENT", 0, "参数不对",
                               "用法:autoconfirm 50(50 积点以内不问)/ autoconfirm off(每次都问)/ autoconfirm default(恢复默认)"),
                     args.compact)
                return
        out = request_json("PUT", "/api/v1/user/autoconfirm", {"limit": limit})
Confidence
84% confidence
Finding
This endpoint allows the skill to change the account's autoconfirm policy, which can enable future paid operations to proceed without interactive confirmation. In an agent context, modifying that preference is sensitive because it changes spending authorization semantics beyond the current request.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
limit = int(value)
            except ValueError:
                emit(error_obj("ARI_BAD_ARGUMENT", 0, "参数不对",
                               "用法:autoconfirm 50(50 积点以内不问)/ autoconfirm off(每次都问)/ autoconfirm default(恢复默认)"),
                     args.compact)
                return
        out = request_json("PUT", "/api/v1/user/autoconfirm", {"limit": limit})
Confidence
84% confidence
Finding
This endpoint allows the skill to change the account's autoconfirm policy, which can enable future paid operations to proceed without interactive confirmation. In an agent context, modifying that preference is sensitive because it changes spending authorization semantics beyond the current request.

Static analysis

No suspicious patterns detected.