Back to skill

Security audit

Academic Deep Research

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent deep-research workflow, but it tells the agent to search and retrieve persistent memory without a separate, scoped user approval step.

Install only if you are comfortable with the agent reusing prior persistent memory during research. Prefer running it in an environment where memory tools are disabled or scoped to the current user/project, or require the agent to ask before searching or retrieving memory records.

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

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:457
Finding
Unscoped Cross-Session Memory Access Without Explicit User Consent## Vulnerability Details **File Location**: `SKILL.md`, lines 457-470 **Vulnerability Type**: Cross-session memory access exceeding least privilege **Risk Level**: Medium **Classification**: T05: Unauthorized Access and Privilege Escalation ### Vulnerable Code Snippet ```markdown ### Memory Search Integration Before starting research, check for relevant prior knowledge: \`\`\` → memory_search(query="previous research on [topic]") → memory_get(path="memory/YYYY-MM-DD.md") [if relevant date found] \`\`\` Use prior findings to: - Avoid duplicate research - Build on previous conclusions - Identify how understanding has evolved - Note persistent gaps from prior research ``` The memory tools are also declared in `SKILL.md`, line 30: ```markdown | `memory_search` / `memory_get` | Cross-reference prior knowledge | Check MEMORY.md for related context | ``` ### Technical Analysis The Skill instructs the agent to search persistent memory and retrieve matching historical memory files before beginning research. This behavior is not limited to records created for the current task, conversation, or user, and the Skill does not require separate user approval before accessing those records. Persistent agent memory may contain confidential topics, personal information, organizational context, or conclusions from unrelated sessions. A broad query such as `previous research on [topic]` can locate records that happen to share keywords with the current request. The subsequent `memory_get` call reads the matching file in full or in part, allowing unrelated historical context to affect the current report. This exceeds the minimum privileges necessary for the declared web-research functionality. Web search and source retrieval can operate without reading cross-session memory. The existing planning checkpoint does not adequately mitigate the issue because the Skill does not require the proposed plan to disclose the exact memory query, matching paths, intended fields, or pri ...[truncated 1773 chars]
Remediation
## Remediation Suggestions 1. Remove mandatory memory access from the default research workflow. The Skill should remain functional using only the current conversation, `web_search`, and `web_fetch`. 2. Make persistent-memory access explicitly opt-in. Before calling either memory tool, explain why access is useful, what query will be executed, and what categories of historical data may be returned. 3. Require a dedicated approval checkpoint for memory retrieval rather than treating general approval of the research plan as consent. 4. Restrict searches to a task-scoped or user-scoped namespace enforced by the host platform. Do not rely only on topic keywords as an access-control mechanism. 5. Display matching memory paths and minimal metadata first. Require confirmation before calling `memory_get` on any record. 6. Retrieve only the minimum necessary excerpt rather than an entire dated memory file. 7. Add an explicit prohibition against placing memory-derived confidential information, identifiers, proprietary text, or personal data into `web_search` or `web_fetch` requests without separate approval. 8. Label memory-derived claims in the report and allow the user to exclude them. 9. If reliable user or task isolation cannot be guaranteed, disable `memory_search` and `memory_get` for this Skill. A safer replacement would be: ```markdown Persistent-memory access is disabled by default. If prior research may be helpful, ask the user for explicit permission and disclose the exact scoped query. Search only memory belonging to the current user and project. Show matching record metadata before retrieval, retrieve only approved excerpts, and never include memory-derived sensitive data in network requests without separate consent. ```
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Vague Triggers

Medium
Confidence
96% confidence
Finding
The README advertises broad trigger phrases such as asking for "deep research on..." or "exhaustive analysis of...", which can cause the skill to be invoked unintentionally from ordinary user language rather than an explicit command. In an agent ecosystem, this increases the chance of accidental tool activation, unnecessary web access, and execution of a long multi-step workflow without the user clearly intending to call this specific skill.

Vague Triggers

Medium
Confidence
96% confidence
Finding
The trigger guidance includes the phrase "Tell me everything about X," which is a broad, everyday expression rather than a distinctive invocation condition. This can cause the skill to activate unintentionally in normal conversation, leading to unexpected web access, parallel session spawning, and extensive research behavior the user did not explicitly request.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
---

## Phase 3: Research Cycles (Auto-Execute)

### Theme 1: Market Landscape — Cycle 1
Confidence
91% confidence
Finding
The workflow explicitly labels Phase 3 as 'Auto-Execute' and shows the agent proceeding through research cycles and tool usage without an intervening user approval gate. In a skill that uses external search/fetch tools, this creates autonomous action risk: the agent may perform network activity, gather or amplify untrusted content, and continue analysis beyond the user's intended scope without confirmation at each stage.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The invocation guidance is overly broad because it triggers on generic conversational phrases like "deep research" or "exhaustive analysis," which can appear in normal user requests without deliberate intent to invoke this skill. That increases the chance of accidental activation, causing the agent to enter this skill’s rigid workflow and potentially perform extensive automated web activity or change response behavior unexpectedly.

Static analysis

No suspicious patterns detected.