Back to skill

Security audit

PaperCash — 论文全流程辅助 Skill

Security checks for vulnerabilities and agentic risk

Overview

PaperCash is a real academic writing helper, but it needs review because it sends research-derived data to outside services, stores optional cookies/API keys weakly, and includes AI-detection evasion features.

Review before installing. Avoid using confidential, unpublished, or institution-restricted manuscripts unless you are comfortable with derived search terms being sent to academic services. Store any CNKI/Wanfang cookies or API keys with restrictive file permissions, and do not use the humanize feature to hide AI authorship or violate school policies.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (4)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/lib/sources/arxiv.py:13
Finding

Academic search queries are transmitted over plaintext HTTP

Content
View full analysis
list[Paper]: """搜索 arXiv""" params = { "search_query": f"all:{query}", "start": 0, "max_results": min(limit, 100), "sortBy": "relevance", "sortOrder": "descending", } xml_text = get_text(BASE_URL, params=params, timeout=20) if not xml_text: return [] return _parse_response(xml_text) ``` ### Technical Analysis The arXiv adapter sends the user-provided research query to an `http://` endpoint. Because HTTP does not provide transport encryption, server authentication, or response integrity, anyone able to observe or modify the network connection can inspect the research topic or alter the returned XML. The returned response is parsed into trusted-looking paper records and displayed to the user. A man-in-the-middle attacker could therefore inject fabricated titles, authors, abstracts, links, or identifiers into search and review results. The `http://` namespace strings used for XML parsing are namespace identifiers and are not themselves network requests. The vulnerability is specifically the plaintext `BASE_URL`. ### Attack Path 1. A user invokes `search`, `review`, or another operation that queries arXiv. 2. The user-controlled query is placed in the `search_query` URL parameter. 3. PaperCash transmits the request to `http://export.arxiv.org/api/query`. 4. An attacker controlling or monitoring the local network, proxy, gateway, or DNS path intercepts the plaintext request. 5. The attacker reads the research query or modifies the XML response. 6. PaperCash parses ...[truncated 503 chars]
Remediation
View remediation

other

Warning
Location
scripts/lib/features/plagiarism.py:81
Finding

Plagiarism checks disclose document-derived terms to a third-party service without explicit consent

Content
View full analysis
list[Paper]: """搜索 Semantic Scholar""" api_key = env_get("SEMANTIC_SCHOLAR_API_KEY") headers = {} if api_key: headers["x-api-key"] = api_key params = { "query": query, "limit": min(limit, 100), "fields": FIELDS, } data = get_json(f"{BASE_URL}/paper/search", params=params, headers=headers) ``` ### Technical Analysis The plagiarism checker accepts pasted text or an arbitrary user-selected text file, splits the content into sentences, extracts up to five keywords from each eligible sentence, and sends those terms to the Semantic Scholar API. Remote searching is related to the declared plagiarism-checking functionality, and the complete document is not transmitted verbatim. Nevertheless, extracted keywords can preserve names, confidential terminology, unpublished discoveries, project identifiers, or other sensitive phrases. The reviewed command flow does not provide an explicit third-party disclosure warning, consent prompt, redaction step, or offline mode before transmission. When an API key is configured, requests can also be associated with the user's Semantic Scholar account or subscription. ### Attack Path 1. A user passes an unpublished ...[truncated 1170 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/lib/setup_wizard.py:30
Finding

Credential configuration files are created without explicitly restrictive permissions

Content
View full analysis
F12 -> Network -> 复制 Cookie # CNKI_COOKIE= # 万方 Cookie(可选) # WANFANG_COOKIE= """ env_file.write_text(template, encoding="utf-8") ``` The manual setup documentation similarly creates the file without setting its mode: ```bash touch ~/.config/papercash/.env ``` The file is intended to contain values such as: ```text CNKI_COOKIE=your_cookie_here WANFANG_COOKIE=your_cookie_here SEMANTIC_SCHOLAR_API_KEY=your_key_here ``` ### Technical Analysis The configuration directory and `.env` file are created using default process and filesystem permissions. Their effective permissions therefore depend on the user's `umask`, existing parent-directory permissions, platform defaults, and any pre-existing file mode. The code neither creates the directory with mode `0700` nor enforces mode `0600` on the secret-bearing file. It also does not verify or repair permissions on an existing configuration file. Although many systems use a sufficiently restrictive default umask, this is not guaranteed. The static pre-scan finding in `README.md` is necessary for documented configuration, but the current procedure does not apply least-privil ...[truncated 1217 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
requirements.txt:1
Finding

Dependencies are not pinned to reviewed versions or verified with hashes

Content
View full analysis
=0.42.1 requests>=2.31.0 beautifulsoup4>=4.12.0 python-docx>=1.1.0 ``` The installation instruction resolves these unconstrained future versions: ```bash pip install -r requirements.txt ``` ### Technical Analysis Every dependency uses an unbounded minimum-version constraint. A later installation can therefore resolve to package versions that did not exist and were not reviewed when the Skill was audited. No lock file or package hashes are provided to verify artifact integrity. No evidence was found that the currently named dependencies are typosquatted or malicious. The security issue is the avoidable supply-chain drift: future upstream compromise, malicious release publication, account takeover, or unexpected dependency changes could alter the code installed by the documented command. ### Attack Path 1. A user or agent follows the documented `pip install -r requirements.txt` instruction. 2. The package resolver selects the newest releases satisfying each `>=` constraint. 3. If a future selected release or transitive dependency is compromised, the package is downloaded from the configured Python package index. 4. Package installation or later import executes the compromised dependency code with the privileges of the user running PaperCash. 5. That code could access files, environment variables, network resources, and PaperCash credentials available to that user. This is a prospective supply-chain path; the audit found no embedded malicious dependency payload in the current project. ### Impact Assessment If a selected dependency were compromised, its code would execute with the same user privileges as the installation or PaperCash process. Depending on those privileges, the scope could include: - Reading user-accessible document ...[truncated 340 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (93)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · .gitignore (reported line 9)May include surrounding context.

text
build/
.eggs/
*.egg
.env
*.env
.venv/
venv/

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · .gitignore (reported line 10)May include surrounding context.

text
build/
.eggs/
*.egg
.env
*.env
.venv/
venv/

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · README.md (reported line 153)May include surrounding context.

bash
mkdir -p ~/.config/papercash
touch ~/.config/papercash/.env
env

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The implemented behavior appears materially narrower than the promised end-to-end feature set, making this a genuine trust and safety issue rather than a harmless documentation nit. In a skill that may read manuscripts, call external services, and produce academic outputs, inaccurate claims can directly affect privacy, compliance, and user decision-making.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill invites users to provide file paths or paste manuscript content for checking and rewriting but does not warn that content may be sent to external academic services or otherwise leave the local environment. This creates a significant confidentiality risk because unpublished papers, student work, or institution-restricted materials could be exposed to third parties without informed consent.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/lib/env.py (reported line 35)May include surrounding context.

python
section("配置文件位置")

    cfg = config_dir()
    env_file = cfg / ".env"

    info(f"全局配置: {env_file}")
    info(f"项目配置: .papercash.env (当前目录)\n")

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/lib/setup_wizard.py (reported line 30)May include surrounding context.

python
section("配置文件位置")

    cfg = config_dir()
    env_file = cfg / ".env"

    info(f"全局配置: {env_file}")
    info(f"项目配置: .papercash.env (当前目录)\n")

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The file presents the agent instructions entirely in Chinese and directs the agent behavior in that language context, but does not indicate that language choice is optional or user-selectable. Under the policy rule for natural-language constraints, this can be a locale/language restriction without explicit opt-in or justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly advertises a capability to reduce AI-detection likelihood for academic writing, but does not frame this as a restricted, ethical-editing feature or warn about academic-integrity misuse. In the context of a paper-writing skill aimed at students, this materially increases the chance the tool will be used to evade authorship review or institutional policy controls.

Content

No source excerpt is available for this finding.

Ssd 2

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The README frames rewriting as a way to lower AI-detection likelihood, which is an evasion-oriented use case rather than ordinary proofreading. In an academic-submission workflow, this guidance can help users conceal AI-generated authorship and bypass policy or review mechanisms.

Content

No source excerpt is available for this finding.

Ssd 2

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The listed tactics—changing sentence structure, injecting 'personal perspective,' and replacing common AI phrases—describe concrete semantic evasion methods intended to make generated text appear human-authored. That moves beyond neutral writing help into deliberate concealment behavior.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 152)May include surrounding context.

配置文件

bash
mkdir -p ~/.config/papercash
touch ~/.config/papercash/.env

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 152)May include surrounding context.

配置文件

bash
mkdir -p ~/.config/papercash
touch ~/.config/papercash/.env

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation instructs users to place CNKI/Wanfang cookies and API credentials into a persistent local .env file without any warning about sensitivity, file permissions, rotation, or accidental disclosure. Cookies can grant authenticated session access, so normalizing their storage as plain configuration increases credential theft and misuse risk.

Content

No source excerpt is available for this finding.

Ssd 2

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The English documentation also markets 'AI detection reduction' as a product capability, broadening the audience for misuse and making the intent to support authorship-evasion more explicit. Because this is in public-facing docs, it increases adoption risk for disallowed academic use.

Content

No source excerpt is available for this finding.