Back to skill

Security audit

专利版本对比

Security checks for vulnerabilities and agentic risk

Overview

The main comparison works offline, but the optional online client needs review for unsafe spreadsheet exports and weaknesses in trial-key storage.

Keep confidential drafts on the offline comparison path. Before enabling retrieval, approve the shared search terms and budget. Until corrected, import optional candidate CSV columns as text and ensure the credential cache is private, especially on shared computers or Windows.

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/patentmax_client.py
Finding

External patent metadata is exported as active spreadsheet formulas

Content
View full analysis

Impact

A formula-bearing field is evaluated rather than displayed literally. For example, an injected HYPERLINK formula can substitute an attacker-selected destination and deceptive display text for patent metadata. Arbitrary OS command execution or automatic secret exfiltration is not established by this audit.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (52)

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
100% confidence
Finding

The shell command exposes a prefix of an environment-stored API key rather than comparing patent text or generating change reports. Credential access and partial disclosure are undeclared behaviors, not necessary supporting implementation details for the stated purpose. No network transmission is shown.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
100% confidence
Finding

The supplied code has a materially different primary purpose: it is a remote patent research and analytics client, not a comparator of two supplied text versions. Its CLI accepts search queries, publication numbers, and company names rather than old and new documents. It sends authenticated network requests, may incur charges, and persists credentials and research state. These capabilities are not supporting implementation details of the declared comparison workflow, and the promised comparison and HTML-report functionality is absent from this chunk.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied commands implement patent discovery and similarity retrieval, not textual version comparison. They search for other patents and expand from a selected result, introducing a materially different capability and external resource use. The chunk contains no version-diff processing, source-linked change table generation, or offline HTML export.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied commands support patent candidate screening and management, not comparison of old and new text versions. They operate on patent identifiers and candidate-selection state, with no shown text-diff, source-linking, or offline HTML functionality. These are materially different capabilities rather than supporting implementation details of the declared comparison workflow.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared workflow concerns textual comparison of two supplied versions. The provided commands instead support patent discovery and retrieval, including related-patent and citation exploration, with no visible version comparison, source-linked change table, or offline HTML generation. These are substantive undeclared capabilities rather than implementation details needed to compare supplied text. The client implementation is not included, so the precise backend and execution effects cannot be verified, but the command interfaces and examples clearly indicate a materially different purpose.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The command runs the client's search operation; it does not accept two document versions, identify textual edits, or generate the declared comparison outputs. Topic-based patent retrieval is not described in the declared purpose, and the supplied chunk shows no connection that would make this search a supporting step for source-linked version comparison.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied command performs patent retrieval, not version comparison. It contains no processing of old and new drafts, textual change detection, source linking, or offline HTML generation. External patent searching is not a necessary supporting detail for the stated task of comparing user-supplied texts, so this represents an undeclared capability. The snippet does not establish malicious intent or unauthorized credential theft.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied command searches an external patent database using a fixed technical query; it does not compare old and new text, trace edits to supplied sources, or generate the declared outputs. Patent discovery and credentialed access to this external search service are not described as part of the skill's purpose and are not evident supporting steps for comparing two supplied versions.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied chunk performs an authenticated remote patent lookup. It does not compare versions or generate change-table or HTML outputs. External retrieval of a hard-coded patent is not an evident supporting implementation detail for comparing two user-supplied texts, so the demonstrated behavior falls outside the declared purpose.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The commands implement a patent-information and similarity-search workflow, not the declared document-version comparison workflow. In particular, the similar-patent search is a distinct capability rather than a necessary implementation detail of locating textual edits. The supplied chunk contains no version comparison, source-linked change table generation, or offline HTML export. The patent client's implementation is not shown, so its precise data source and network behavior cannot be established from this chunk.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The supplied command runs scripts/patentmax_client.py in search mode using a hard-coded applicant query. It does not take old and new text versions, identify edits, or export comparison artifacts. Patent searching is an undeclared capability and is not shown to be a supporting implementation detail of the stated comparison task. The client's internals are not supplied, so the specific data source and network behavior cannot be determined.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The command performs a patent-search operation, which is outside the declared version-comparison workflow. It supplies neither an old nor a new document and does not invoke comparison or HTML-report generation. The client implementation is not provided, so network access cannot be confirmed from this chunk alone; the explicit search operation nevertheless establishes the capability mismatch.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The command performs a patent-similarity lookup, which is materially different from identifying textual changes between supplied drafts. It uses a hardcoded patent identifier and does not provide two text versions or request change-table or HTML output. The client implementation is not shown, so network access and other side effects cannot be confirmed.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The supplied command performs an external patent lookup, not textual version comparison or change-report generation. The description limits the workflow to two supplied versions and does not disclose remote patent retrieval. No connection is shown that would make this fixed-patent lookup a supporting implementation detail of that workflow. The credential is used for authentication; the snippet alone does not establish malicious credential exfiltration.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The command targets a specific patent through a brief operation, which is materially different from the declared version-comparison workflow. No connection to comparing user-provided drafts is shown. The client implementation is not supplied, so network access and the exact briefing behavior cannot be confirmed.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The supplied chunk performs external patent-data retrieval, not version comparison or change-report generation. Source linking could be a supporting implementation detail, but this request fetches claims for a hard-coded publication without any shown relationship to the supplied versions. That is an undeclared resource access rather than a demonstrated implementation of the stated comparison workflow.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

The supplied chunk performs only an external service health check; it does not process patent text, compare versions, or generate change reports. Although health checks can be supporting implementation details, no connection between this external service and the declared comparison workflow is established here. The request does not visibly transmit patent content.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

Budget and search-quota management is not an evident supporting requirement for comparing two user-supplied documents and exporting offline results. The snippet therefore exposes an undeclared operational capability. However, it does not itself demonstrate that searches occur, money is spent, or external services are contacted; those details depend on the unseen client implementation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
86% confidence
Finding

The demonstrated workflow centers on inspecting patent search results and patent records, rather than comparing two supplied text versions. Reading claims or searching description text could support the declared comparison workflow, but general search-result browsing and patent-record lookup are additional capabilities not described by that purpose. The chunk shows no version pairing, change-table generation, or HTML export. These commands alone do not establish network access or external data transmission.

Content

No source excerpt is available for this finding.

Code capability 'network' detected in scripts/patentmax_client.py but not covered by declared permissions.

High
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The script implements actual outbound requests that transmit search expressions, company names, patent identifiers, and authentication credentials to a third-party service. These capabilities are unnecessary for the declared supplied-version comparison workflow and could expose confidential research queries or consume account funds if invoked without informed authorization. The supplied material does not independently establish a sandbox permission bypass.

Content

No source excerpt is available for this finding.

Code capability 'env' detected in scripts/patentmax_client.py but not covered by declared permissions.

High
Category
MCP Least Privilege
Confidence
75% confidence
Finding

The skill uses 'env' capability that is not covered by the declared 'allowed-tools' preapproval. Review the host runtime's actual enforcement policy; runtime permissions are unknown unless separately verified, and this declaration alone does not establish a permission ceiling.

Content

No source excerpt is available for this finding.

The file exposes remote patent research and analytics instead of the manifest's supplied-version text comparison workflow.

High
Category
Excessive Agency
Confidence
99% confidence
Finding

The declared skill compares two supplied patent-text versions, but this file exposes remote patent searches, analytics, downloads, and billed operations instead. That scope mismatch creates an unexpected disclosure and spending capability, particularly if an agent derives search queries from confidential draft content. The file does not demonstrate automatic uploading of the supplied versions, so the risk depends on invoking these unrelated commands.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 68)May include surrounding context.

md
### 来源与后续

交付中如实写明来源:本地处理注明用户材料及文件名;只有实际补取的数据才注明PatentMax与查询日期。可以一次自然提示下一步:需要理解不同专利的技术差别,可使用专利比对。用户想继续取数时可访问 https://api.ip930.com/features/api-platform 创建正式密钥;奖励、费用和额度以当前页面及返回为准。

## 命令速查

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/faq.md (reported line 35)May include surrounding context.

md
- **密钥复制不全。** 前后有没有多余空格、有没有漏掉尾部字符
- **少了 `Bearer ` 前缀。** 用 curl 时 header 必须是 `Authorization: Bearer pm_live_xxx`,只写密钥不行
- **密钥被撤销了。** 到 [控制台](https://api.ip930.com/features/api-platform)看状态

> 还有个容易踩的:如果请求里带了 `Authorization` 头,URL 上的 `?apikey=` 就不会被读取。两种方式选一种,别混用——带了一个格式错误的 header,正确的 URL 参数也会被忽略。

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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/key-setup.md (reported line 4)May include surrounding context.

md
# 正式密钥切换
仅处理已有材料不需要密钥,不触发自动试用或接口调用。

需要补取数据且试用不足时,保留脚本message中的网址,引导用户到https://api.ip930.com/features/api-platform 注册并创建正式密钥。价格、奖励和额度以当前页面与脚本返回为准,不承诺固定赠送金额。

默认仅在当前命令的进程环境使用PATENTMAX_API_KEY;不回显密钥,不写入报告或修改全局配置。先让用户选择临时使用或持久保存。只有明确选择保存时,才遵循脚本ai_hint写当前用户私有目录api_key.txt;POSIX权限0600,Windows仅当前用户可读,不能确认私有权限时不落盘。已有正式密钥优先级和试用结束处理以脚本为准,不删除用户旧配置。