Back to skill

Security audit

drin-build-template

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward email-template writing guide; its main risk is that generated email link variables should be validated before use.

Before installing, treat this as a template-authoring helper rather than a security control. Use trusted or server-generated values for ctaUrl and unsubscribeUrl, restrict links to approved https destinations, and keep raw/unescaped template output limited to pre-sanitized content.

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
SKILL.md:73
Finding

Unvalidated Template Variables Used as Email Link Destinations

Content
View full analysis
{{ctaLabel | default:"Open"}}

Sent by {{brandName}}. {{#if unsubscribeUrl}}Unsubscribe.{{/if}} ``` ### Technical Analysis The template places `ctaUrl` and `unsubscribeUrl` directly into HTML `href` attributes. Although the documented template engine HTML-escapes interpolated values, HTML escaping does not validate the URI scheme, hostname, or destination. If an attacker can influence either variable, they can supply an attacker-controlled phishing or tracking URL. Depending on the receiving email client's behavior, an unsafe scheme such as `javascript:` might also be retained or activated. Email-client filtering is inconsistent and should not be treated as the primary security boundary. ### Attack Path 1. An attacker gains control over, or supplies data for, `ctaUrl` or `unsubscribeUrl`. 2. The application passes the value to the email template without URL validation. 3. The template engine escapes HTML metacharacters but preserves the selected URI scheme and destination. 4. The generated email contains a link to the attacker-controlled destination. 5. A recipient activates the link and is redirected to a phishing, tracking, or otherwise malicious resource. 6. Any further compromise depends on recipient interaction and the behavior of the destination or email client. ### Impact Assessment This issue does not directly grant operating-system, application, or Drin account privileges. Its scope is the generated email and its recipients. Succes ...[truncated 389 chars]

Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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)

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

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

md
</style>
  </head>
  <body class="bg" style="margin:0; padding:0; background:#f4f4f5;">
    <!-- preheader: shown in the inbox preview, hidden in the body -->
    <div style="display:none; max-height:0; overflow:hidden; opacity:0;">
      {{preheader | default:"A quick update from {{brandName}}"}}
    </div>

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The sample HTML sets lang="en", which is a natural-language locale choice embedded in the skill guidance. The document does not indicate that English is optional, user-selected, or required for a region-specific purpose, so it can be read as prescribing a fixed locale by default.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.