Back to skill

Security audit

Genviral Skill

Security checks for vulnerabilities and agentic risk

Overview

The Genviral posting skill is mostly coherent, but it includes an updater and recommended daily cron job that can replace the skill's own instructions and scripts from a mutable GitHub branch without integrity verification.

Install only if you are comfortable granting this skill access to a Genviral API key and connected social accounts. Avoid enabling the daily self-update cron; prefer manual reviewed updates from pinned releases, and review posts, target accounts, and delete operations before running automation.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/update-skill.sh:72
Finding

Unauthenticated Remote Replacement of Executable Skill Code

Content
View full analysis
/dev/null || echo "")}" REMOTE_SHA=$(curl -sf \ -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: Bearer $GH_TOKEN" \ "https://api.github.com/repos/fdarkaou/genviral-skill/commits/$REMOTE_BRANCH" \ | jq -r '.sha' 2>/dev/null || echo "") ``` ```bash for FILE in "${SKILL_OWNED_FILES[@]}"; do RAW_URL="https://raw.githubusercontent.com/fdarkaou/genviral-skill/$REMOTE_SHA/$FILE" TARGET="$SKILL_DIR/$FILE" if [[ "$DRY_RUN" == "true" ]]; then echo "[DRY RUN] Would update: $FILE" continue fi # Fetch and write atomically TMPFILE=$(mktemp) if curl -sf "$RAW_URL" -o "$TMPFILE"; then mkdir -p "$(dirname "$TARGET")" mv "$TMPFILE" "$TARGET" # Make scripts executable [[ "$FILE" == scripts/* ]] && chmod +x "$TARGET" ``` ### Technical Analysis The updater obtains the latest commit identifier from the upstream repository's mutable `main` branch and then downloads files from that commit. It overwrites local executable scripts, documentation, and `SKILL.md`, and explicitly marks downloaded scripts as executable. Using the remotely returned commit SHA ensures that all downloaded files come from one commit, but it does not establish that the commit is an authorized, reviewed release. There is no locally pinned expected commit, signed-release verification, trusted-key validation, or hash manifest independent of the same upstream repository. The files subject to replacement include `scripts/genviral.sh`, `scripts/update-skill.sh`, and `SKILL.md`. Consequently, the remotely supplied payload can alter both locally executed shell code and the instructions subsequently loaded by the AI a ...[truncated 1372 chars]
Remediation
View remediation

T06 · System Persistence

Error
Location
docs/setup.md:195
Finding

Daily Scheduled Task Creates Persistent Remote Update Channel

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/genviral.sh:190
Finding

Global Environment File Is Executed as Arbitrary Shell Code

Content
View full analysis
/dev/null || true API_KEY="${GENVIRAL_API_KEY:-}" BASE_URL="$(config_get base_url "https://www.genviral.io/api/partner/v1")" ``` ### Technical Analysis The script uses Bash `source` to load a file described as an environment file. `source` does not parse the file as passive key-value data. It executes all content in the current shell context, including command substitutions, functions, redirections, subprocess launches, and arbitrary shell commands. The file is global rather than Skill-specific, which expands the trust boundary. Any other process or tool capable of modifying that file can turn the next Genviral invocation into a code-execution opportunity. Execution occurs before the script reads `GENVIRAL_API_KEY`, so malicious commands in the file run in the same process environment and can inspect exported credentials or alter variables used by later API requests. ### Attack Path 1. An attacker or compromised local tool gains write access to `~/.config/env/global.env`. 2. The attacker inserts a shell command, command substitution, or malicious function into the file. 3. The user or an automated job invokes any command through `scripts/genviral.sh`. 4. `load_defaults` sources the file. 5. Bash executes the injected commands with the privileges of the invoking account. 6. The payload may inspect environment variables, alter configuration, or launch additional processes before normal API handling begins. ### Impact Assessment Exploitation provides arbitrary command execution with the permissions of the user or agent invoking the Skill. The payload can access exported environment variables, including `GENVIRAL_API ...[truncated 346 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/genviral.sh:194
Finding

Configurable API Base URL Can Redirect the Bearer Credential

Content
View full analysis
&1)" || { die "Request failed: curl error for $method $endpoint" } ``` ### Technical Analysis The API base URL is loaded from configurable YAML, but the value is not restricted to the official Genviral HTTPS origin. Every request constructed by `api_call` attaches the `GENVIRAL_API_KEY` as an `Authorization: Bearer` header. As a result, anyone capable of changing the configuration selected by `GENVIRAL_CONFIG`, or its `base_url` value, can choose the destination that receives the bearer credential. The code does not enforce HTTPS, validate the hostname, reject URL user information, or require explicit confirmation for a nonstandard endpoint. The network transmission itself is necessary for the declared API functionality, but allowing the credential destination to be changed without validation exceeds the minimum privilege required. ### Attack Path 1. An attacker modifies the active YAML configuration or causes `GENVIRAL_CONFIG` to select an attacker-controlled configuration. 2. The configuration sets `base_url` to an attacker-operat ...[truncated 1025 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (48)

Self-Modification

High
Category
Rogue Agent
Confidence
97% confidence
Finding

A documented self-updater is a direct self-modification capability: it can change executable scripts and agent instruction files after installation. In a skill environment, this creates a strong supply-chain and persistence risk because future behavior can diverge from the reviewed version without fresh security review.

Content

Scanner excerpt · README.md (reported line 120)May include surrounding context.

md
scripts/
    genviral.sh             # 42+ commands wrapping every Partner API endpoint
    update-skill.sh         # Self-updater (keeps skill files current, never touches workspace/)

  prompts/
    slideshow.md            # Prompt templates for slideshow generation

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared purpose focuses on Genviral API automation, but the skill also includes remote self-update behavior that reaches out to GitHub, overwrites local skill files, and performs version/lock coordination. This hidden expansion of behavior is dangerous because users and orchestrators may approve the skill for social posting tasks without realizing it can modify its own code and fetch unreviewed remote content.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
98% confidence
Finding

The skill explicitly includes a self-updater script, which is a self-modification mechanism. In agent environments, self-modifying code is dangerous because it can replace trusted local behavior with newly fetched remote content, bypass prior review, and expand capabilities over time.

Content

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

scripts/ genviral.sh # Main API wrapper (all commands) update-skill.sh # Self-updater

text

## Command Routing

Self-Modification

High
Category
Rogue Agent
Confidence
99% confidence
Finding

The auto-update section operationalizes self-modification by instructing direct execution of a script that checks for and applies remote updates, including forced re-application. This creates a clear path for remote content ingestion and local overwrite, which is especially risky when the skill also has shell and network capabilities.

Content

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

Auto-Updates

This skill includes a self-updater that keeps skill-owned files in sync with the latest version from fdarkaou/genviral-skill.

bash
bash scripts/update-skill.sh           # check + apply if updates available

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
**What gets updated (skill-owned):** `SKILL.md`, `scripts/`, `docs/` (all subdirs)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · docs/api/pipeline.md (reported line 31)May include surrounding context.

Assign best-matching image to each slide. Build a pinned_images map.

5. Prompt Assembly

Use the selected hook and visual direction to build a slideshow prompt. Reference workspace/content/scratchpad.md and docs/prompts/slideshow.md.

6. Generate WITH Pinned Images

bash

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · docs/prompts/slideshow.md (reported line 1)May include surrounding context.

md
# Slideshow Prompt Templates

Use these templates when generating slideshows via the genviral API. Before using any template:

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The cron setup tells the agent to run a self-updater that pulls and applies changes from an upstream repo to SKILL.md, scripts/, and docs/ automatically. This creates a supply-chain and prompt-injection risk: future unreviewed upstream changes could alter agent behavior or introduce malicious commands without explicit user review.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
99% confidence
Finding

The explicit self-update instruction is a self-modification mechanism that allows the skill's instructions and scripts to change over time outside the original reviewed artifact. In an agent setting, this is dangerous because compromised upstream content or malicious updates can silently expand capabilities, bypass safeguards, or execute harmful actions on subsequent runs.

Content

Scanner excerpt · docs/setup.md (reported line 204)May include surrounding context.

--cron "0 6 * * *"
--tz "YOUR_TIMEZONE"
--session isolated
--message "Run the genviral skill self-updater: bash scripts/update-skill.sh. It will check for updates to SKILL.md, scripts/, and docs/ from the upstream repo and apply them. Never touches workspace/. Report what was updated or confirm already up to date."
--announce

text

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/genviral.sh (reported line 612)May include surrounding context.

sh
analytics-target-create         POST /analytics/targets
  analytics-target                GET /analytics/targets/{id}
  analytics-target-update         PATCH /analytics/targets/{id}
  analytics-target-delete         DELETE /analytics/targets/{id}
  analytics-target-refresh        POST /analytics/targets/{id}/refresh
  analytics-refresh | get-analytics-refresh
                                  GET /analytics/refreshes/{id}

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/genviral.sh (reported line 1513)May include surrounding context.

sh
require_arg "id" "$pack_id"
    warn "Deleting pack $pack_id..."

    api_call DELETE "/packs/${pack_id}" >/dev/null

    ok "Pack deleted."
}

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/genviral.sh (reported line 1572)May include surrounding context.

sh
warn "Deleting image $image_id from pack $pack_id..."

    api_call DELETE "/packs/${pack_id}/images/${image_id}" >/dev/null

    ok "Image deleted from pack."
}

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/genviral.sh (reported line 1795)May include surrounding context.

sh
require_arg "id" "$template_id"
    warn "Deleting template $template_id..."

    api_call DELETE "/templates/${template_id}" >/dev/null

    ok "Template deleted."
}

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/genviral.sh (reported line 2244)May include surrounding context.

sh
require_arg "id" "$slideshow_id"
    warn "Deleting slideshow $slideshow_id..."

    api_call DELETE "/slideshows/${slideshow_id}" >/dev/null

    ok "Slideshow deleted."
}

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/genviral.sh (reported line 2862)May include surrounding context.

sh
warn "Deleting analytics target $id..."

    local response
    response="$(api_call DELETE "/analytics/targets/${id}")"

    ok "Analytics target deleted"
    printf '%s' "$response" | jq '.data'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The skill is explicitly designed to post content to connected third-party accounts, but the README does not prominently warn that actions may publish externally, consume account permissions, expose brand content, or create irreversible public posts. In an agent setting, unclear disclosure increases the risk of accidental publication and privacy/brand harm.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README advertises a self-update mechanism that overwrites skill-owned files such as SKILL.md, scripts/, and docs/. In an agent skill context, remote code or instruction updates materially expand the trust boundary and can introduce malicious behavior or altered routing without explicit review, which is not necessary for basic Genviral API automation.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill advertises shell-backed capabilities but does not declare any explicit tool scope or allowed-tools boundary. In a skill that can upload files, create posts, write workspace state, and invoke a self-updater, missing tool restrictions increases the chance of unintended command execution or overly broad agent access beyond what a user expects.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction "Never use em-dashes in any generated content" imposes a blanket language/style constraint regardless of user preference. This is a natural-language policy issue because it forces a specific output convention without offering user choice or documenting a justified requirement.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The configuration hard-codes language: "en", which imposes a specific language choice without indicating user selection, opt-in, or a documented locale-specific justification. This is a natural-language policy concern because it can force output into one language regardless of user preference.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation exposes a destructive analytics-target-delete command with no warning about permanence, scope, or confirmation practices. In an automation-focused skill, users may copy commands directly into scripts or terminals and delete tracked analytics accounts unintentionally, causing operational disruption and loss of configuration/state.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation exposes destructive delete-pack and delete-pack-image operations with no warning about permanence, confirmation requirements, or safeguards against accidental execution. In an automation-focused skill, users or downstream agents may invoke these commands programmatically, increasing the chance of unintended data loss or bulk deletion if IDs are wrong or workflows are misconfigured.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The workflow directs the agent to publish content to social accounts and immediately modify local tracking files, but it does not require any explicit user confirmation, dry-run mode, or warning before taking those side-effecting actions. In an agent skill, that creates a real risk of unintended posting and unauthorized workspace changes if the skill is invoked in the wrong context or with stale credentials.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file documents a bulk deletion command and its usage examples, but it does not include any warning that the operation removes posts or may be irreversible. For markdown files, safety-relevant behaviors affecting user data should be explicitly disclosed so users understand the impact before invoking the command.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The documentation exposes a destructive delete operation with no warning, confirmation guidance, or mention of irreversibility. In an automation-focused skill that manages production content pipelines across social platforms, this increases the likelihood of accidental or scripted deletion of business-critical assets by users or downstream agents.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.