Back to skill

Security audit

Quack Workflow Engine

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed workflow runner, but one included template can publish LLM-generated web-search content to Twitter without a human approval step.

Review before installing. Use this skill only if you are comfortable sending workflow files to Orchestrate and ensure any workflow that can post publicly is changed to draft or require explicit human approval before publication. Avoid broad automatic invocation and verify social-media permissions are scoped and revocable.

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
templates/research-and-post.yaml:5
Finding

Untrusted Web Content Can Be Automatically Published Without Human Approval

Content
View full analysis

Vulnerability Details

File Location: templates/research-and-post.yaml:5-23
Vulnerability Type: Indirect prompt injection leading to unauthorized or manipulated social-media publication
Risk Level: Medium

Vulnerable Code

yaml
steps:
  - id: research
    action: web_search
    params:
      query: "latest AI agent news"
      count: 5

  - id: summarize
    action: llm
    params:
      model: claude
      prompt: "Summarize these search results into a concise social media post: {{research.output}}"
    depends_on: [research]

  - id: post
    action: social_post
    params:
      text: "{{summarize.output}}"
      platform: twitter
    depends_on: [summarize]

Technical Analysis

The workflow treats web-search results as trusted prompt content. The research.output value is interpolated directly into the LLM prompt without source restrictions, instruction isolation, sanitization, or validation. Because web-search results may contain attacker-controlled text, a malicious indexed page could include instructions designed to influence the model rather than provide factual source material.

The resulting LLM output is then passed directly to the social_post action. There is no human approval stage, output policy check, allowlist, or confirmation immediately before publication. This creates an indirect prompt-injection path from untrusted web content to an externally visible side effect.

Attack Path

  1. An attacker publishes a web page that is likely to appear for the configured query, such as content concerning recent AI-agent news.
  2. The page includes adversarial text instructing an LLM to disregard the summarization task and emit attacker-selected content, misleading claims, links, or promotional material.
  3. The web_search action returns that page or its attacker-controlled excerpt in research.output.
  4. The workflow inserts the untrusted output directly i ...[truncated 989 chars]
Remediation
View remediation

Remediation Suggestions

  1. Insert a mandatory human-review and explicit approval step between content generation and social_post.
  2. Treat all search results as untrusted data. Clearly delimit quoted source material and instruct the model not to follow instructions found inside it.
  3. Restrict searches to an allowlist of trusted domains where the use case permits it.
  4. Validate generated posts before publication, including checks for unexpected URLs, mentions, sensitive information, prohibited claims, and instruction-like artifacts.
  5. Require a second, independent policy-enforcement step to assess factual support, safety, and compliance rather than relying solely on the generating model.
  6. Configure the social-media integration with the minimum required privileges and provide an emergency revocation mechanism.
  7. Record source URLs, generated content, validation outcomes, approval identity, and publication results in an audit log.
  8. Prefer saving generated text as a draft rather than automatically publishing it.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This workflow performs an outbound social media post directly from LLM-generated content without a user confirmation or approval gate. That creates a high risk of unauthorized, inaccurate, or harmful public communication, especially since the content is derived from web search results and model summarization that may be wrong, manipulated, or incomplete.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes an external platform and explicitly directs users to register for API access, but it does not declare any explicit tool scope such as network permissions or allowed tools. This creates a mismatch between documented capability and declared constraints, increasing the chance of unintended or over-broad network use and making review and enforcement harder.

Content

No source excerpt is available for this finding.

Shadow Command Trigger

Medium
Category
Trigger Abuse
Confidence
79% confidence
Finding

The trigger phrase 'run workflow' overlaps with common built-in command semantics around 'run', creating a shadowing risk where this skill may intercept requests intended for a native execution command. In a skill that can launch multi-step automated workflows, mistaken activation could lead to unintended task execution or external API use.

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 broad and generic, including terms like 'orchestrate', 'multi-step', and 'parallel tasks', which may match routine user requests not intended for this skill. Unintended activation can cause the agent to route tasks into a workflow-execution path that may perform external actions or networked automation unexpectedly.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The workflow description and trigger context are broad enough that an agent may invoke this skill in situations beyond the user's clear intent, including contexts that culminate in external publication. Because the workflow chains web search, LLM summarization, and social posting, ambiguous invocation criteria increase the chance of unintended autonomous actions with reputational or operational consequences.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.