Back to skill

Security audit

Inr Sender

Security checks for vulnerabilities and agentic risk

Overview

This skill is narrowly aimed at sending one person's INR result by email, but it hardcodes medical identity details and sends sensitive health information without a confirmation or validation step.

Install only if this is specifically for the named patient and intended recipients. Before operational use, remove hardcoded personal details from the published package, configure recipients privately, validate the INR value, and require a clear confirmation showing the destination and message summary before sending.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/send_inr.sh:6
Finding

Hardcoded Personal and Medical Data in Email Transmission Workflow

Content
View full analysis

Vulnerability Details

File Location: scripts/send_inr.sh:6-23
Vulnerability Type: Hardcoded sensitive data and fixed transmission endpoints
Risk Level: Medium

The script hardcodes the patient's full name, date of birth, sender account, and recipient email addresses. It combines this information with an INR measurement and transmits the resulting medical record through a locally configured Gmail client.

bash
RECIPIENT="creatif.lrb@aphp.fr"
if [ "$IS_TEST" == "--test" ]; then
    RECIPIENT="harpoutian@gmail.com"
fi

CURRENT_DATE=$(LC_TIME=fr_FR.UTF-8 date +"%A %d %B" | sed -e 's/lundi/Lundi/' -e 's/mardi/Mardi/' -e 's/mercredi/Mercredi/' -e 's/jeudi/Jeudi/' -e 's/vendredi/Vendredi/' -e 's/samedi/Samedi/' -e 's/dimanche/Dimanche/')
MESSAGE="Bonjour,

Aujourd'hui ${CURRENT_DATE} mon INR est de ${INR_VALUE} (automesure).

Merci et bonne journée,

Gilles Harpoutian né le 16/07/1974"
SUBJECT="INR de Gilles Harpoutian - ${CURRENT_DATE}"

# Utilisation de l'outil gog pour envoyer l'e-mail
# gog gmail send --to <recipient> --subject <subject> --body <message> --account <account_email>
/root/go/bin/gog gmail send --to "${RECIPIENT}" --subject "${SUBJECT}" --body "${MESSAGE}" --account harpoutian@gmail.com

Technical Analysis

The source code contains directly identifying information and fixed email-routing configuration. An INR value is health information; combining it with a full name and date of birth produces an identity-linked medical record. Storing those identifiers in a distributable skill exposes them to anyone who can read the project, its archives, or its version history.

Every invocation transmits the supplied measurement under the hardcoded patient's identity. The script does not require recipient confirmation, obtain patient identity from a secure configuration source, or verify that the active gog account and intended recipient are appropriate for the current ...[truncated 1740 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove the patient's full name, date of birth, sender account, and recipient addresses from source-controlled files.
  2. Load account and recipient configuration from a protected configuration or secret-management mechanism with restrictive file permissions.
  3. Accept patient details only when necessary and minimize identifying content in the email body.
  4. Display the destination and redacted message summary and require explicit confirmation before transmission.
  5. Validate the INR value against an expected numeric format and medically reasonable application-defined bounds before sending.
  6. Require an explicit recipient selection rather than silently defaulting to a production medical address.
  7. Verify that the authenticated gog account matches the configured sender before transmission and handle send failures safely.
  8. Remove sensitive data from repository history and previously distributed archives where feasible, and assess whether exposure requires privacy-incident handling.
  9. Document consent, retention, transport-security, and access-control requirements for processing identity-linked medical information.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill handles and transmits highly sensitive medical data together with directly identifying personal information, including a full name, date of birth, and INR result, but provides no privacy notice, consent language, minimization guidance, or safeguards in the documented flow. This creates a meaningful risk of privacy breach, misdelivery, and non-compliant handling of health data, especially because the addresses are hardcoded and the test mode still sends real personal/medical content to a personal email account.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script transmits sensitive medical information by email immediately, with no confirmation, preview, or validation step before sending. In a healthcare context, a mistaken INR value, wrong recipient selection, or accidental invocation could disclose private health data or lead to inappropriate clinical follow-up based on incorrect information.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script explicitly sets a French locale for date formatting and constructs the email body entirely in French. This imposes a specific language/locale without any visible opt-in or documented reason in the file, which matches the language/locale policy violation category.

Content

No source excerpt is available for this finding.