Back to skill

Security audit

Durable Workflow

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent and not malicious, but its bundled workflow scripts include real file-locking and temporary-file weaknesses that users should review before adopting.

Review the bundled scripts before using them for business-critical or non-idempotent workflows. Store state and lock files in a private directory, harden temporary-file and lock creation, and avoid sending raw exception messages to Telegram or any external alert channel.

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 (3)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/lock.js:33
Finding

Non-atomic process lock permits concurrent workflow execution

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/workflow-template.js:42
Finding

Predictable temporary paths allow symlink-based file overwrite

Content
View full analysis
.tmp`. 3. The attacker creates that path as a symbolic link to a file writable by the workflow account. 4. The workflow calls `saveState()`. 5. `fs.writeFileSync()` follows the symbolic link, truncating and writing workflow JSON into the target file. 6. The later rename may replace the sy ...[truncated 736 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
SKILL.md:190
Finding

Unredacted exception messages may disclose sensitive data to Telegram

Content
View full analysis
{ const req = https.request( { hostname: 'api.telegram.org', path: `/bot${token}/sendMessage`, method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(body) }, }, res => { res.resume(); res.on('end', resolve); } ); req.on('error', () => resolve()); // don't let alert failure crash the workflow req.setTimeout(5000, () => { req.destroy(); resolve(); }); req.write(body); req.end(); }); } // Usage — in your main() catch block: main().catch(async e => { console.error('Fatal:', e.message); await sendTelegramAlert(`❌ *Workflow failed*\n\`${e.message}\``); process.exit(1); }); ``` ### Technical Analysis The optional alerting example forwards `e.message` directly to Telegram without redaction, field allowlisting, or sensitivity classification. Exception messages commonly include request URLs, resource identifiers, filenames, database details, user-supplied values, or fragments of API responses. Applications sometimes also include credentials or tokens in error strings. Telegram transmission is explicit, optional, and configured through user-provided environment variables. It is therefore not covert exfiltration. Nevertheless, forwarding arbitrary exception text exceeds the minimum information required to report that a workflow failed and can expose data ...[truncated 1285 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (2)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill references environment variables (ALERT_TELEGRAM_TOKEN, ALERT_CHAT_ID, WORKFLOW_STATE_PATH) and includes executable code patterns, but it does not declare any explicit tool scope or permissions boundary. In an agent ecosystem, this can cause the skill to be invoked with broader runtime capabilities than intended, increasing the chance of unauthorized access to secrets or environment-dependent behavior without clear operator awareness.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are very broad (automate, workflow, multi-step, retry, error handling, resilient) and could cause this skill to activate for many generic user requests outside its narrow intended scope. Over-broad matching can steer an agent into applying file, state, locking, and alerting patterns in contexts where they are unnecessary or risky, increasing the attack surface and the chance of unintended tool use.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.