Back to skill

Security audit

Whiteboard

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed local Excalidraw whiteboard helper, but installing it runs a pinned community runtime build and it keeps local board servers and saved board data across sessions.

Install only if you are comfortable with a local tool that downloads and builds a pinned community Excalidraw runtime, stores boards under ~/.local/share/codex-whiteboard, and runs unauthenticated loopback-only servers for active boards. Keep it off exposed network interfaces and avoid putting secrets on shared whiteboards unless you accept local persistence.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (8)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Resolve `scripts/session.mjs` relative to this `SKILL.md`. Use its absolute path so commands work from any project. Examples below use `SESSION_CLI` for that pa

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Resolve `scripts/session.mjs` relative to this `SKILL.md`. Use its absolute path so commands work from any project. Examples below use `SESSION_CLI` for that pa

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
y under `~/.local/share/codex-whiteboard/`. If it is missing, run this skill's `scripts/setup.mjs`; it builds the pinned source and requires network access, Git

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes local shell commands, uses environment variables, and explicitly requires network access during setup, but it declares no tool scope or permission boundary. That creates an authorization gap where an agent may perform sensitive actions without an explicit least-privilege contract, increasing the chance of unintended command execution, environment access, or downloads.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

The skill intentionally persists whiteboard state across chats and process restarts and launches loopback servers for ongoing sessions. Persistent local state can expose prior project data to later sessions or other local processes/users, and long-lived local services expand the attack surface if session isolation, file permissions, or browser access are weak.

Content

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

md
metadata:
  author: Jim Jeffers
  version: "0.1.0"
  compatibility: "Requires a local shell, Node.js 20+, npm, Git, and a browser on the same computer. Setup downloads and builds a pinned runtime; sessions write local state and launch loopback servers."
  openclaw:
    homepage: https://github.com/jimjeffers/excalidraw-whiteboard-skill
    requires:

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The added endpoint exposes internal identifiers and the process ID to any caller without authentication or clear necessity. While these values are not secrets by themselves, they provide environment and process metadata that can aid reconnaissance, correlation of sessions, and targeting of the running service, especially if the whiteboard server is reachable beyond a strictly local trust boundary.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The setup script performs a live bootstrap from a remote GitHub repository and then builds and installs that code locally. Even though it pins a revision and verifies the fetched HEAD matches that revision, this still introduces network-sourced code execution during setup (git, npm ci, npm run build), which exceeds the declared local whiteboard functionality and creates a supply-chain and install-time execution risk.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The repository bootstrap and package installation are network-dependent and trigger package-manager lifecycle behavior on downloaded content. For a skill described as editing local Excalidraw whiteboards, this is broader than necessary and increases exposure to dependency confusion, compromised upstream packages, malicious install scripts, or unexpected code execution during environment preparation.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/session.mjs:99

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/setup.mjs:13