AST10 — Cross-Platform Reuse
Severity: Medium
Platforms Affected: All
Description
Skills are increasingly ported across platforms (OpenClaw → Claude Code → Cursor → VS Code) without translating the security properties of the source format. A skill with a permission manifest on one platform is stripped of that manifest on another. Security controls that exist in one ecosystem’s metadata format simply do not exist in another’s — creating exploitable gaps when skills cross platform boundaries.
Why It’s Unique to Skills
MCP standardizes the protocol. AST10 addresses the content security within skills — the fact that there is no universal skill format and no normalization of security metadata when skills are ported. This is not a protocol problem; it is a behavioral abstraction problem.
Real-World Evidence
- Snyk ToxicSkills confirmed malicious skills published simultaneously on ClawHub and
skills.shby the same threat actors (zaycv, moonshine-100rze), exploiting the fact that neither platform shared scanning intelligence. - Snyk’s
toxicskills-goofproof-of-concept demonstrates a fake Vercel skill that works across Gemini CLI and OpenClaw — the same maliciousSKILL.mdis effective on multiple runtimes. - The absence of a universal format means organizations managing a multi-platform agent stack cannot apply a single governance policy — each platform requires separate tooling, separate scanning, and separate approval workflows.
Attack Scenarios
Security Property Loss in Translation
A skill with risk_tier: L3 (destructive) is ported to a platform that doesn’t support risk_tier; the warning is silently dropped.
Cross-Registry Arbitrage
Attacker publishes a skill on a lightly-scanned registry (skills.sh) and promotes it to a more-trusted registry, leveraging the install count as a false trust signal.
Multi-Platform Campaign
Same malicious payload deployed across four platforms simultaneously; security teams on each platform are unaware of the others’ incidents.
Preventive Mitigations
- Adopt the Universal Skill Format (see below) for all new skill development.
- When porting skills across platforms, require a full security metadata re-validation — never assume equivalence.
- Establish cross-registry threat intelligence sharing between major skill registries.
- Build platform-agnostic skill scanners that evaluate the content layer independently of the runtime.
- Normalize
risk_tier,permissions, andsignaturefields across all platform-specific formats.
Universal Skill Format Proposal
The following YAML format is proposed as a cross-platform standard that mitigates AST10 and provides the metadata foundation required to address AST01 through AST09. It is designed to be a superset of all current platform-specific formats.
---
# Universal Agentic Skill Format v1.0
# Compatible with: OpenClaw, Claude Code, Cursor/Codex, VS Code
name: example-skill
version: 1.0.0
platforms: [openclaw, claude, cursor, vscode]
description: "Safe example skill — concise, honest statement of function"
author:
name: "Author Name"
identity: "did:web:example.com" # Decentralized identity anchor
signing_key: "ed25519:pubkey_hex_here"
permissions:
files:
read:
- ~/.config/app.json # Explicit paths only; no wildcards
write:
- ~/.config/app.json
deny_write:
- SOUL.md
- MEMORY.md
- AGENTS.md # Identity files require explicit grant
network:
allow:
- api.example.com # Domain allowlist, not binary on/off
deny: "*" # Default deny all other egress
shell: false # Explicit shell access declaration
tools:
- web_fetch
- read_file
requires:
binaries: [jq, curl]
min_runtime_version: "2026.1.0"
risk_tier: L1 # L0=safe, L1=low, L2=elevated, L3=destructive
scan_status:
scanner: "[email protected]"
last_scanned: "2026-02-15"
result: "pass"
signature: "ed25519:ABCDEF1234567890..." # Signs the canonical hash of this manifest
content_hash: "sha256:abcdef1234..." # Hash of the complete skill package
changelog:
- version: "1.0.0"
date: "2026-02-01"
notes: "Initial release"
---
Format design rationale:
permissions.deny_writeprotects identity files (SOUL.md,MEMORY.md) by default — must be explicitly overridden.network.allowis a domain allowlist, not a boolean — closing the “network: true” over-permission gap (AST03).signatureandcontent_hashtogether enable Merkle-root registry verification (AST01/AST02).scan_statuscreates a machine-readable provenance trail (AST08/AST09).risk_tierenables automated governance policies without per-skill review (AST09/AST10).
OWASP Mapping
- LLM03 (Supply Chain)
- CWE-1357 (Reliance on Insufficiently Trustworthy Component)
MAESTRO Framework Mapping
| MAESTRO Layer | Layer Name | AST10 Mapping |
|---|---|---|
| Layer 7 | Agent Ecosystem | cross-platform marketplace/registry intelligence |
| Layer 3 | Agent Frameworks | translation and normalization controls across platforms |
| Layer 6 | Security & Compliance | uniform policy enforcement and compliance across ecosystems |
MAESTRO Layer Details
- Layer 7: Agent Ecosystem - cross-registry incident sharing, false trust signals.
- Layer 3: Agent Frameworks - framework-level normalization of security metadata.
- Layer 6: Security & Compliance - cross-platform governance for skill attributes.
Cross-References
- AST01 (Malicious Skills): Cross-platform reuse allows malicious skills to spread across ecosystems.
- AST02 (Supply Chain Compromise): Compromised skills can be reused across platforms.
- AST04 (Insecure Metadata): Inconsistent metadata formats create confusion and exploitation.
- AST08 (Poor Scanning): Skills may pass scanning on one platform but be vulnerable on another.
- AST09 (No Governance): Lack of cross-platform governance enables skill proliferation.
References
Last updated: March 2026
Example
Put whatever you like here: news, screenshots, features, supporters, or remove this file and don’t use tabs at all.