Back to skill

Security audit

aminer-free-search

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a normal AMiner lookup helper, but it uses overly broad activation and provider-routing language that could send ordinary academic queries to AMiner without clear user intent.

Install only if you want Codex to use AMiner for free-tier academic lookups. Be aware that the skill may be invoked for broad academic questions and can send query terms to AMiner; avoid using it for private, unpublished, or sensitive research topics unless you are comfortable sharing them with that provider. Store AMINER_API_KEY as an environment variable and avoid pasting real tokens into chat.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:7
Finding

Overbroad Academic Query Activation and Commercial Routing Hijack

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 7–13
Vulnerability Type: T01: Skill Instruction Hijacking
Risk Level: Medium

Complete Vulnerable Snippet

yaml
description: >
  ACADEMIC PRIORITY: Activate this skill whenever the user's query involves any academic or research-related topic. This is the free-tier entry point for AMiner academic search.
  Free-tier-only AMiner skill (7 free APIs, zero cost). Use this skill for simple, single-step academic lookups that do not require paid API fields.
  Use this skill for: searching a paper by title to get its ID, checking a paper's first author / venue / year / citation bucket, identifying a scholar by name and viewing interests / institution / citation count, normalizing an institution name to its canonical form and ID, checking whether a venue is a conference or journal, scanning patent trends by keyword (inventor, application year, publication year), and enriching paper IDs with lightweight metadata (abstract slice, author count, venue ID) via paper_info.
  Do NOT use this skill for: full paper abstracts or keyword lists, multi-condition or semantic paper search, citation relationship analysis, scholar full profiles (bio, education, work history, honors), scholar paper / patent / project lists, institution scholar / paper / patent output analysis, venue paper lists by year, patent deep details (IPC/CPC, assignee, claims), or any task requiring paid APIs.
  Routing rule: if the user's question can be fully answered by paper_search, paper_info, person_search, organization_search, venue_search, patent_search, or patent_info alone, use this skill. Otherwise route to aminer-data-search.

Related commercial-routing language appears at SKILL.md, lines 356–363:

markdown
## Product Positioning

This skill is intentionally positioned for:

- first success
- free discovery
- candidate narrowing
- entity normalization
- upgrade qualification

It should not replace the paid skill. It sh
...[truncated 2387 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the unconditional priority directive:

    • Delete ACADEMIC PRIORITY.
    • Do not instruct the agent to activate the skill for every academic or research-related request.
  2. Narrow activation to explicit or clearly inferred user intent:

    • Activate when the user specifically requests AMiner.
    • Alternatively, allow normal tool selection to choose the skill only when its capabilities are the best fit.
  3. Require informed consent before external disclosure:

    • Clearly state that the query will be sent to AMiner.
    • Ask for confirmation when the user did not explicitly select AMiner, especially for potentially sensitive or unpublished research topics.
  4. Remove forced cross-skill routing:

    • Replace Otherwise route to aminer-data-search with a neutral explanation that the free endpoints cannot satisfy the request.
    • Present available alternatives without automatically selecting a paid AMiner path.
  5. Remove commercial manipulation language:

    • Delete It should create demand for it and upgrade qualification.
    • Keep recommendations task-driven and disclose any paid boundary objectively.
  6. Use a constrained routing statement, for example:

yaml
description: >
  Use this skill when the user explicitly requests AMiner free-tier search,
  or after the user agrees to send the query to AMiner. If the free APIs
  cannot answer the request, explain the limitation and ask the user which
  alternative they prefer; do not automatically route to a paid service.
  1. Add regression evaluations confirming that:
    • Generic academic questions do not automatically trigger AMiner.
    • No query is sent externally without an available token and appropriate user intent.
    • Paid-service suggestions remain optional, neutral, and clearly disclosed.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The description says to activate the skill whenever a user's query involves any academic or research-related topic. That scope is extremely broad and could overlap with many ordinary research questions, even when the request does not fit this skill's free-tier AMiner lookup purpose. Although later lines narrow the scope, the primary activation sentence is still likely to cause unintended invocations.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

The skill instructs direct transmission of user-supplied query content and an API credential to an external service via curl. In this skill's context that external call is expected business logic, but it still creates a genuine data-exposure boundary because arbitrary academic queries, inline user-provided tokens, and potentially sensitive research interests may be sent off-platform without explicit minimization or consent controls.

Content

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

1. Paper triage

bash
curl -X GET \
  'https://datacenter.aminer.cn/gateway/open_platform/api/paper/search?page=1&size=5&title=Attention%20Is%20All%20You%20Need' \
  -H "Authorization: ${AMINER_API_KEY}" \
  -H 'X-Platform: openclaw'

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The eval at lines 81–89 instructs the agent to perform a combined multi-entity workflow, which conflicts with the manifest’s routing rule that this skill should be used only when the request can be answered by a single free API or closely bounded free-tier workflow. Misaligned evals can train or pressure the agent to overuse the skill outside its declared scope, causing policy drift, incorrect routing, and unintended API usage patterns.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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/api-catalog.md (reported line 86)May include surrounding context.

| venue_id | Venue ID | | year | Publication year |

curl Example:

bash
curl -X POST \
  'https://datacenter.aminer.cn/gateway/open_platform/api/paper/info' \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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/api-catalog.md (reported line 130)May include surrounding context.

| org_zh | Institution in Chinese | | total | Total count |

curl Example:

bash
curl -X POST \
  'https://datacenter.aminer.cn/gateway/open_platform/api/person/search' \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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/api-catalog.md (reported line 165)May include surrounding context.

| org_name | Institution name | | total | Total count |

curl Example:

bash
curl -X POST \
  'https://datacenter.aminer.cn/gateway/open_platform/api/organization/search' \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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/api-catalog.md (reported line 202)May include surrounding context.

| venue_type | Venue type: journal or conference | | total | Total count |

curl Example:

bash
curl -X POST \
  'https://datacenter.aminer.cn/gateway/open_platform/api/venue/search' \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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/api-catalog.md (reported line 241)May include surrounding context.

| app_year | Application year | | pub_year | Publication year |

curl Example:

bash
curl -X POST \
  'https://datacenter.aminer.cn/gateway/open_platform/api/patent/search' \

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The trigger phrase examples are presented only in Chinese, which implies a language-specific invocation pattern without stating that users may invoke the skill in other languages. This creates a locale/language bias that is not justified as region-specific or presented as optional.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This markdown file instructs users to send Authorization: ${AMINER_API_KEY}, which involves handling a sensitive credential. The document does not include any warning about protecting the key, avoiding exposure in logs/shared examples, or ensuring the header is only sent to the intended AMiner endpoint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
63% confidence
Finding

The instruction to include X-Platform: openclaw by default when required hard-codes a specific platform value in natural-language guidance. If this reflects an organizational platform or locale policy, the file does not explain the constraint or present it as an environment-specific requirement chosen by the user.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.