Back to skill

Security audit

remind-mcp

Security checks for vulnerabilities and agentic risk

Overview

This skill can read Remind data, send messages to entire classes, and change notifications, but its shell workflow lacks a clear approval requirement for writes.

Treat this as a write-capable integration. Require explicit approval of recipients and message text before sending, and approval before changing notification delivery. For reading alone, use a workflow that rejects mutations. Protect the saved session like a password and delete it when no longer needed. The bundled instructions were fully reviewed, but the external CLI, extension, and live service behavior were not audited.

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
  • Rogue AgentSelf-Modification, Session Persistence
  • 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 (7)

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The description declares read access, including reading notification settings. The supplied commands instead invoke updateAccountNotificationsScreen mutations with devicesToDisable and devicesToEnable, changing account notification delivery settings. Re-enabling the device afterward does not make these operations read-only.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared purpose is reading Remind data, but the supplied command performs a message-creation mutation. Sending a message changes application state and is not merely a supporting implementation detail for reading data.

Content

No source excerpt is available for this finding.

The read-oriented skill provides an executable message-sending mutation.

High
Category
Excessive Agency
Confidence
99% confidence
Finding

The manifest describes reading classes, chats, and messages, but L153–L154 provide a putMessage mutation that sends content to a conversation. L157 also documents whole-class recipients, extending the capability to communications with real people rather than data retrieval; the statement that this example was not executed does not remove the provided write capability.

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 · SKILL.md (reported line 54)May include surrounding context.

chmod 600 ~/.remind-fpx-session.json

text

> Use a session file of your own like this one. Do **not** write into `~/.remind-mcp/` — that is
> the MCP server's store, with a different schema; overwriting it corrupts its session.

## The call pattern

The read-focused manifest also exposes authenticated GraphQL mutations, including sending messages.

Medium
Category
Excessive Agency
Confidence
93% confidence
Finding

The manifest at L003 describes reading Remind data, but the rq helper submits arbitrary caller-supplied GraphQL documents with session cookies and a CSRF token, without restricting them to queries. This write capability is explicitly intentional: L089–L091 discuss sending messages, warn that writes reach real people, and direct users to mutation shapes in the references file.

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 · SKILL.md (reported line 64)May include surrounding context.

md
local S=~/.remind-fpx-session.json
  local body; body=$(Q="$1" V="${2:-{\}}" node -e '
    process.stdout.write(JSON.stringify({query:process.env.Q,variables:JSON.parse(process.env.V)}))')
  curl -s -X POST https://www.remind.com/graphql \
    -H 'content-type: application/json' \
    -H "cookie: $(node -e 'console.log(require(process.argv[1]).capturedHeaders.cookie)' "$S")" \
    -H "x-csrf-token: $(node -e 'console.log(require(process.argv[1]).capturedHeaders["x-csrf-token"])' "$S")" \

The read-oriented skill includes executable mutations that change notification delivery settings.

Medium
Category
Excessive Agency
Confidence
99% confidence
Finding

The manifest describes reading Remind data, including notification settings. The commands at L142–L145 instead disable and enable delivery devices, changing account state and potentially interrupting notifications; L138 explicitly states this capability was verified live.

Content

No source excerpt is available for this finding.