vestaboard

SAFE max severity MEDIUMSkillSpector Do not install 53 registry clawhub.ai last scanned 1 scan

Verdict safe, but 7 findings (2 medium, 5 low), mainly data exfiltration, unauthorized tool use, policy violation. Most recent scan 2026-02-07.

The Vestaboard skill presents MEDIUM security risk primarily due to external API communication with user-provided credentials and missing implementation verification. The skill's stated purpose (controlling a Vestaboard display via cloud API) is legitimate, but several security concerns exist: (1) API tokens are required via environment variables without validation guidance, (2) network communication to third-party API cannot be verified as properly restricted, (3) missing input validation and rate limiting could enable abuse, (4) file path handling lacks documented validation, and (5) critical implementation files are missing, preventing code-level security verification. The skill would benefit from: explicit input validation, rate limiting, endpoint restriction verification, path traversal protection, and inclusion of all referenced implementation files. The missing metadata fields (license, compatibility, allowed-tools) reduce transparency but are lower severity. No evidence of prompt injection, command injection, or deliberate data exfiltration was found in the provided documentation.

Scanner's overall assessment (LLM analyzer)

Second scanner: NVIDIA SkillSpector

The two scanners disagree: Cisco found nothing and SkillSpector says do not install. One of them has a blind spot here; read the skill before trusting either. How the two scanners compare across the whole corpus: Two scanners, one corpus.

What this skill does

Read and write messages on a Vestaboard using the Vestaboard Cloud API (cloud.vestaboard.com) and optional legacy RW endpoint. Use when asked to display text on a Vestaboard, update a sign/board, show a short status message, render simple pixel-art using color/filled character codes, or retrieve the current board message.

Package
19 files, 15 KB
SKILL.md
124 words, 10 sections
Code
JavaScript (1)

SKILL.md covers: Vestaboard · Security · Constraints · Quick usage (local CLI) · from repo root · Preview formatting only · Read current message (JSON) · Write text · Write a numeric layout (6x22 array of character codes) · Sample content

Findings

MEDIUM Hardcoded API Token Environment Variable Names Data Exfiltrationllm

The skill requires API tokens via environment variables (VESTABOARD_TOKEN or VESTABOARD_RW_KEY) but provides no validation, sanitization, or secure handling guidance. While using environment variables is better than hardcoding secrets, the skill does not verify token format, implement rate limiting, or provide guidance on token rotation. The legacy fallback (VESTABOARD_RW_KEY) suggests potential use of deprecated authentication methods that may have weaker security properties.

SKILL.md

- Preferred: `VESTABOARD_TOKEN`
- Optional legacy fallback: `VESTABOARD_RW_KEY`
Remediation: 1. Document token format requirements and validation steps 2. Implement token validation before API calls 3. Add guidance on secure token storage and rotation 4. Deprecate legacy RW_KEY with migration timeline 5. Consider implementing token expiration checks
MEDIUM External Network Communication to Third-Party API Data Exfiltrationllm

The skill makes network calls to cloud.vestaboard.com API using user-provided credentials. While this is the stated purpose, there is no implementation code provided to verify that data transmission is limited to the Vestaboard API endpoint only. The skill could potentially be modified to exfiltrate data to other endpoints, and without seeing the actual implementation (scripts/vb.js), we cannot verify proper certificate validation, request sanitization, or endpoint restriction.

SKILL.md:1

Read and write messages on a Vestaboard using the Vestaboard Cloud API (cloud.vestaboard.com)
Remediation: 1. Implement strict endpoint validation (whitelist cloud.vestaboard.com only) 2. Use certificate pinning for API connections 3. Validate all API responses before processing 4. Implement request/response logging for audit trails 5. Add network error handling and timeout limits
LOW Skill does not specify a license Policy Violationstatic

Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.

SKILL.md

Remediation: Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)
LOW Missing Input Validation and Resource Limits Resource Abusellm

The skill accepts arbitrary text input for display on the Vestaboard without documented input validation, sanitization, or rate limiting. While the 6x22 character constraint provides some natural limitation, there is no mention of: (1) maximum input length before truncation, (2) rate limiting to prevent API abuse, (3) validation of character codes in numeric layouts, or (4) handling of malformed JSON layout files. This could lead to excessive API calls or processing of malicious layout files.

SKILL.md

Text input is formatted to 6x22 by default (uppercase + word wrap; truncates overflow)
Remediation: 1. Implement maximum input length validation (e.g., 1000 chars before processing) 2. Add rate limiting (e.g., max 10 API calls per minute) 3. Validate JSON layout files against schema before processing 4. Sanitize character codes to valid Vestaboard range 5. Implement exponential backoff for API retries
LOW Missing File Path Validation for Layout Files Unauthorized Tool Usellm

The skill references layout files in content/layouts/*.json and preview files in content/previews/*.md without documented path validation or sanitization. An attacker could potentially use path traversal (e.g., ../../etc/passwd) to read arbitrary files if the implementation does not properly validate file paths. The referenced file 'Quarterbridge.py' is not found, suggesting potential broken references or missing validation.

SKILL.md

- Numeric layouts live in `content/layouts/*.json`
- Human review previews live in `content/previews/*.md`
Remediation: 1. Implement strict path validation (whitelist content/ directory only) 2. Reject paths containing '..' or absolute paths 3. Verify all referenced files exist before processing 4. Use safe file reading APIs that prevent traversal 5. Document expected file structure and validation rules
LOW Missing Metadata Fields in Manifest Social Engineeringllm

The YAML manifest is missing several important metadata fields: license, compatibility, and allowed-tools. While allowed-tools is optional, its absence means there are no declared restrictions on which agent tools can be used. The missing license field creates legal ambiguity, and missing compatibility information prevents users from understanding platform requirements. This is informational but reduces transparency about the skill's capabilities and constraints.

SKILL.md

- license: Not specified
- compatibility: Not specified
- allowed-tools: Not specified
Remediation: 1. Add explicit license field (e.g., MIT, Apache-2.0) 2. Document compatibility (e.g., 'Requires Node.js 18+, network access') 3. Add allowed-tools field declaring required tools (e.g., [Bash] for CLI execution) 4. Document any platform-specific requirements 5. Add version field for skill versioning
LOW Missing Implementation Files Unauthorized Tool Usellm

The skill references a Node.js script (scripts/vb.js) and a Python file (Quarterbridge.py) that are not included in the analyzed package. Without the actual implementation code, it is impossible to verify: (1) proper API authentication handling, (2) input sanitization, (3) network request validation, (4) error handling, or (5) absence of malicious code. The missing files create a trust gap where the actual behavior cannot be verified against the documented behavior.

SKILL.md

node scripts/vb.js preview
Files referenced in instructions: Quarterbridge.py (not found)
Remediation: 1. Include all referenced script files in the skill package 2. Provide source code for scripts/vb.js 3. Clarify purpose of Quarterbridge.py or remove reference 4. Document all dependencies and installation requirements 5. Add integrity checks (checksums) for script files

What is in the package

FileKindSize
ENV.mddoc395 B
SKILL.mddoc1.2 KB
package-lock.jsonconfig639 B
package.jsonconfig259 B
references/character-codes.mddoc2.0 KB
references/formatting.mddoc323 B
scripts/vb.jsscript4.1 KB
content/layouts/chicken-silhouette.jsonconfig429 B
content/layouts/egg-nest.jsonconfig429 B
content/layouts/forest-depth.jsonconfig429 B
content/layouts/maple-fall.jsonconfig429 B
content/layouts/pine-night.jsonconfig429 B
content/layouts/sunrise-ridge.jsonconfig429 B
content/previews/chicken-silhouette.mddoc636 B
content/previews/egg-nest.mddoc585 B
content/previews/forest-depth.mddoc653 B
content/previews/maple-fall.mddoc616 B
content/previews/pine-night.mddoc616 B
content/previews/sunrise-ridge.mddoc592 B

External hosts referenced

cloud.vestaboard.com docs.vestaboard.com registry.npmjs.org

Hostnames that appear in the skill's files. Referencing a host is not a finding; compare against the findings above and the skill's stated purpose.

Environment variables referenced

VESTABOARD_RW_KEY VESTABOARD_TOKEN VESTABOARD_API_BASE

Package contents recorded 2026-10-22. The scan above ran against the version current at scan time; the two can differ if the skill has since been updated.

What we checked

What we did not check

Sources