Back to skill

Security audit

remember-medical-notes

Security checks for vulnerabilities and agentic risk

Overview

This skill is purpose-aligned but asks agents to persist sensitive medical notes to an external Supabase API without enough disclosure or data-handling detail.

Review this carefully before installing. Only use it if you trust BlueColumn and the specific API endpoint with medical information, understand where records are stored, and have clear answers about access controls, retention, deletion, and token permissions.

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
Findings (1)

other

Error
Location
SKILL.md:19
Finding

External Transmission of Sensitive Medical Data to an Unverified Third-Party Endpoint

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 19–42
Vulnerability Type: Sensitive Health Data Disclosure
Risk Level: High

The skill directs the agent to send appointment records, provider instructions, medication information, symptom histories, and an API bearer token to a fixed external Supabase endpoint.

bash
curl -X POST https://xkjkwqbfvkswwdmbtndo.supabase.co/functions/v1/agent-remember \
  -H "Authorization: Bearer $BLUECOLUMN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "APPT: Dr. Osei, Jul 30. Bloodwork normal. Started low-dose magnesium. Instructions: increase water, follow up in 6 weeks if symptoms persist.", "title": "appt - Dr. Osei Jul 30", "tags": ["private", "medical"]}'
bash
curl -X POST https://xkjkwqbfvkswwdmbtndo.supabase.co/functions/v1/agent-recall \
  -H "Authorization: Bearer $BLUECOLUMN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "What was discussed at the last appointment and what follow-ups were scheduled?"}'
bash
curl -X POST https://xkjkwqbfvkswwdmbtndo.supabase.co/functions/v1/agent-note \
  -H "Authorization: Bearer $BLUECOLUMN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Symptom log: headaches 3x this week, mornings mainly, mild. Tension? hydration? Tracking through Aug 14.", "tags": ["private", "symptom-log"]}'

Technical Analysis

The documented workflow transfers highly sensitive health information and a bearer credential to an externally hosted Supabase tenant. Although the skill identifies the service as BlueColumn and links to bluecolumn.ai, the reviewed artifact provides no independently verifiable evidence that the fixed Supabase tenant is controlled by that organization.

The documentation also does not establish:

  • Server-side enforcement of per-user record isolation.
  • Encryption, retention, deletion, and breach-response policies.
  • The permissions o ...[truncated 1885 chars]
Remediation
View remediation

Remediation Suggestions

  1. Require explicit, informed user consent before transmitting any medical information, clearly naming the external processor and the categories of data being sent.
  2. Use a verified first-party API domain rather than an opaque infrastructure hostname, or publish verifiable documentation establishing ownership of the Supabase tenant.
  3. Enforce per-user authorization and tenant isolation on the server; do not rely on the private tag as a security control.
  4. Use narrowly scoped, short-lived, revocable credentials. Ensure tokens cannot access records belonging to other users.
  5. Document encryption in transit and at rest, retention periods, deletion procedures, operator-access controls, audit logging, and incident-response practices.
  6. Minimize transmitted data by excluding names, dates, provider identities, and other identifiers unless they are necessary and specifically authorized.
  7. Provide users with mechanisms to inspect, export, correct, and permanently delete stored records.
  8. Validate endpoint identity before transmission and fail closed if TLS validation, authentication, or authorization checks fail.
  9. Avoid claiming that records are private solely because a metadata tag is present; confidentiality must be enforced through technical access controls.
  10. Add security documentation explaining token scopes, backend authorization guarantees, and the consequences of credential compromise.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (2)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill handles highly sensitive medical information but does not explicitly warn users that appointment notes and symptom data are sent to a remote third-party API endpoint. In a healthcare-context skill, this omission undermines informed consent and can lead to unauthorized disclosure of protected or highly sensitive personal data.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

The example instructs sending detailed health data, including provider names, symptoms, and treatment instructions, to an external endpoint using an API key. External transmission of medical data is inherently sensitive, and the skill context makes this more dangerous because the content may qualify as regulated health information or otherwise highly confidential personal data.

Content

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

After each visit, store the provider, date, key facts, and instructions.

bash
curl -X POST https://xkjkwqbfvkswwdmbtndo.supabase.co/functions/v1/agent-remember \
  -H "Authorization: Bearer $BLUECOLUMN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "APPT: Dr. Osei, Jul 30. Bloodwork normal. Started low-dose magnesium. Instructions: increase water, follow up in 6 weeks if symptoms persist.", "title": "appt - Dr. Osei Jul 30", "tags": ["private", "medical"]}'

Static analysis

No suspicious patterns detected.