Back to skill

Security audit

Social Media Automation Skills Registry

Security checks for vulnerabilities and agentic risk

Overview

This registry is mostly transparent, but it recommends installing mutable remote skill content and can route users toward high-impact Bolta automation, so it should be reviewed before use.

Install only from a pinned, reviewed release or commit and verify checksums where possible. Use a least-privilege Bolta key, start in a test workspace, and separately review any downloaded skills before enabling admin, cron, autopilot, key-rotation, workspace-configuration, or agent-memory workflows.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:525
Finding
Mutable and Unverified Remote Skill-Pack Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 525-532 **Vulnerability Type**: Supply-chain risk from an unpinned remote dependency **Risk Level**: Medium ### Vulnerable Code ```bash # Clone the complete Bolta skills repository git clone https://github.com/boltaai/bolta-skills.git # Or download the latest release curl -L https://github.com/boltaai/bolta-skills/archive/refs/heads/main.zip -o bolta-skills.zip unzip bolta-skills.zip ``` ### Technical Analysis Both installation methods retrieve content from the mutable default branch of an external repository. Neither method pins the downloaded content to an immutable commit or release, and no checksum or cryptographic signature is verified before extraction. Although the ZIP archive is not directly executed by these commands, it contains instruction-bearing skills intended to be loaded by an AI agent. Consequently, changes made to the remote branch after this audit can alter the effective behavior of the installed skill pack without changing the audited `SKILL.md`. Recommending installation of the complete repository also expands the trust boundary from this documentation-only registry to more than 36 externally maintained skills. This exceeds the minimum dependency footprint needed merely to provide registry and recommendation functionality. ### Attack Path 1. An attacker compromises the upstream repository, a maintainer account, or the branch publication process. 2. The attacker adds malicious or unsafe instructions to one or more skills on the `main` branch. 3. A user follows the documented `git clone` or `curl` installation command. 4. The mutable, attacker-controlled content is downloaded without integrity verification. 5. The user or agent loads one of the downloaded skills. 6. The malicious instructions may then attempt to use whatever tools, credentials, network access, or workspace permissions are available to that agent. ### Impact Ass ...[truncated 929 chars]
Remediation
## Remediation Suggestions 1. Replace references to `main` with an immutable, reviewed commit hash or a specific release tag. 2. Publish a SHA-256 digest for every supported archive and verify it before extraction: ```bash curl -L https://github.com/boltaai/bolta-skills/archive/<immutable-commit>.zip -o bolta-skills.zip echo "<expected-sha256> bolta-skills.zip" | sha256sum --check - unzip bolta-skills.zip ``` 3. Prefer signed release artifacts and verify the maintainer's cryptographic signature before installation. 4. Recommend downloading only the individual skills required for the selected workflow rather than installing the full repository. 5. Require local review or automated security scanning of every downloaded `SKILL.md` and associated script before making it available to an agent. 6. Load newly installed skills in a sandbox with no secrets and minimal tool permissions until their behavior has been verified. 7. Document the exact reviewed version in both the registry metadata and installation instructions, and fail closed if that version cannot be retrieved or verified.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (42)

Self-Modification

High
Category
Rogue Agent
Content
RECOMMEND: bolta.quota.status to view usage

IF daily_posts_used >= daily_post_limit:
  BLOCK: All posts:write skills
  RECOMMEND: Increase quota via bolta.workspace.config
```
Confidence
85% confidence
Finding
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The frontmatter states "This is a registry index, not a callable skill," but later sections instruct users to "Run: `bolta.skills.index`" and describe it as returning personalized recommendations. In a markdown skill file, contradictory activation/invocation guidance makes it unclear when this skill should activate versus when it is documentation only, which can lead to unintended or confused use.

External Transmission

Medium
Category
Data Exfiltration
Content
See the full [API documentation](https://bolta.ai/docs/api) for all available endpoints.

```bash
curl https://platty.boltathread.com/v1/posts \
  -H "Authorization: Bearer ${BOLTA_API_KEY}" \
  -H "X-Workspace-ID: ${BOLTA_WORKSPACE_ID}" \
  -H "Content-Type: application/json" \
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
"excluded_skills": [
    {
      "skill": "bolta.cron.generate_and_schedule",
      "reason": "Requires autonomy_mode=autopilot AND safe_mode=OFF"
    }
  ],
  "warnings": [],
Confidence
80% confidence
Finding
Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Vague Triggers

Low
Confidence
84% confidence
Finding
The "When to Use" section lists broad natural-language situations such as "What can Bolta do?" and "Which skills do I need?" without defining explicit trigger phrases, boundaries, or exclusion cases. For markdown guidance, this can create an overly broad activation scope because the registry could appear applicable to many common requests without clear constraints.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Excessive Permissions

Low
Category
Privilege Escalation
Content
**Purpose:** Interactive voice profile creation wizard
**Inputs:** Brand name, industry, target audience, sample content
**Outputs:** Complete VoiceProfile (tone, dos, don'ts, constraints)
**Permissions:** `voice:write`
**Safe Mode:** Compatible
**Roles:** Viewer, Creator, Editor, Admin
**Typical Duration:** 5-10 minutes (interactive)
Confidence
80% confidence
Finding
Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:385