Back to skill

Security audit

Academic Citation Manager

Security checks for vulnerabilities and agentic risk

Overview

This citation-management skill is broadly purpose-aligned, but users should know that online lookups send citation queries to external services and references are stored locally.

Before installing, treat this as a citation tool that can read citation/document files you point it at, store references in a local JSON database, and send DOI, ISBN, title, or author queries to Crossref or OpenLibrary. Avoid using it with confidential research topics unless you are comfortable with those external lookups. The publisher should remove the stray completion-summary generator files and fix the syntax error in the main Python file before relying on it operationally.

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
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Findings (16)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The use of exec(compile(code, '', 'exec')) enables dynamic code execution, which is unnecessary for a citation-management skill and defeats normal code review expectations. If the code variable is influenced or replaced, this becomes an arbitrary code execution primitive capable of running any Python with the agent's privileges.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The declared purpose focuses on adding references and standardizing citations, but the documented behavior extends to batch importing files, scanning inputs, persisting data into a local database, and exporting reports. This mismatch matters because it can hide materially broader data-handling behavior from users, leading them to provide documents or directories without realizing the skill may ingest and store more information than expected.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file's title and the generated summary content are written entirely in Chinese and present the project summary in that language by default, without any indication that users can choose another language. The policy requires flagging language or locale constraints when they are imposed without opt-in or clear justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The file writes directly to a fixed path using write mode, which will silently overwrite any existing COMPLETION_SUMMARY.md at that location. In an agent setting, this can destroy prior user content or generated artifacts without confirmation, making it a real integrity risk even if it is not obviously malicious.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file contains executable Python that writes to a fixed absolute path under /home/... despite being presented as a markdown summary. This is unrelated to citation-management behavior and can modify the local filesystem without user consent, which is risky in an agent skill context because documentation files are not expected to perform side effects.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill documentation advertises capabilities that imply file reads, file writes, and outbound network access, but it does not declare any explicit tool scope or permission boundaries. This creates a least-privilege and transparency problem: an agent or user may invoke the skill without understanding that local files and external services can be accessed, increasing the risk of unintended data exposure or overly broad execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill mentions Crossref integration but does not clearly warn users that DOI, title, author, ISBN, or other citation queries may be transmitted to an external API. In research and thesis contexts, bibliographic queries can reveal sensitive project topics, unpublished work, reading lists, or institutional activity, so undisclosed external transmission creates a real privacy and compliance risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The Reference model defaults language to "en", which imposes a specific language/locale assumption in a user-facing academic citation tool. Because the file otherwise presents itself bilingually and does not offer opt-in or explain a regional limitation, this is a natural-language locale policy concern rather than a technical default alone.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

When parsing Crossref responses, the code sets language to "en" unconditionally instead of using returned metadata or leaving the value unspecified. This creates a user-visible language policy issue because records from other languages will be misclassified without consent or documentation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The OpenLibrary parser assigns language as "en" for all imported books, which hard-codes a language choice in a context where source materials may be multilingual. This is a natural-language policy violation because the tool forces a locale assumption rather than preserving or requesting the correct language.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The module docstring is entirely in Chinese and presents the skill purpose in that language only. For a general-purpose batch import tool, this is a natural-language locale constraint with no visible opt-in, alternative language, or explanation that the tool is region-specific.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The script writes a markdown file to disk without nearby disclosure, confirmation, or user-controlled destination. While the immediate action is limited to file creation, silent writes are still problematic in an agent environment because they create side effects users may not expect from opening or processing a documentation file.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

This markdown file describes fetching metadata from Crossref and storing references in a local SQLite database, which affect privacy and user data persistence. While the features are stated, the README does not clearly warn users that DOI/ISBN/title queries may be sent to external services and that imported/generated reference data will be stored locally.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The BibTeX parser uses fields.get('language', 'en'), causing imported entries without a language field to be treated as English by default. This is a locale policy concern because it silently imposes a language classification on potentially non-English references.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The style alias mapping treats broad locale terms such as "chinese" and "uk" as direct selectors for specific citation styles. This can force a language/locale-specific interpretation from generic user input without any explicit opt-in or documented choice, which matches the locale-policy concern for natural-language configuration values.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

This JSON manifest sets "default_language": "zh", which establishes a specific language preference in configuration without indicating user choice or a documented regional constraint. The policy allows language constraints only when users are offered a choice or the restriction is clearly justified, neither of which is evident in this file.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.