Back to skill

Security audit

ofw

Security checks for vulnerabilities and agentic risk

Overview

Review is needed because general co-parenting questions can trigger sensitive OFW access, including reads that permanently reveal when a message was viewed.

Require explicit OFW selection for ambiguous requests and approval before fetching unread messages. Use allowMarkRead:false when preserving unread status. Protect stored credentials and cached family records, and review the external server version before installing.

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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • 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
Findings (4)

MCP Config Access

High
Category
Agent Snooping
Confidence
95% confidence
Finding

Skill accesses MCP server configuration files (mcp.json). MCP configs contain server URLs, authentication tokens, and tool definitions — reading them allows the skill to discover and potentially abuse other tool integrations.

Content

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

Option A — Claude Code (direct MCP, no mcporter)

Add to .mcp.json in your project or ~/.claude/mcp.json:

json
{

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

2. Configure credentials

bash
cp .env.example .env
# Edit .env: set OFW_USERNAME and OFW_PASSWORD

The activation description extends beyond OFW-specific requests to general co-parenting topics.

Medium
Category
Trigger Abuse
Confidence
98% confidence
Finding

The description explicitly activates this OFW integration for any request involving co-parenting messages, calendars, expenses, or journals, even when the user has not identified OFW as the intended source. This scope expansion could route general advice or unrelated records into a sensitive account integration; unintended reads are particularly consequential because some OFW calls update last-seen status or create an irreversible, co-parent-visible viewing timestamp. The skill's confirmation and read-status warnings reduce this risk but do not correct the overly broad activation boundary.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
`ofw_list_messages`, `ofw_get_message` and `ofw_list_drafts` take
`view: "compact" | "full"`, and **`compact` is the default** — you get the slim
shape without asking. It measured 135.1 KB → 41.1 KB on a real 50-message page.

What compact drops is `listData`, OFW's echo of the list payload. That blob was
58% of the response and 78% of it duplicated fields the same object already

Static analysis

No suspicious patterns detected.