What happened
An attacker embedded shell metacharacters in Figma file layer names or component metadata. When the AI assistant called get_figma_data to fetch design specifications, the unsanitized content was passed to child_process.exec, executing the attacker's shell commands on the developer's machine.
Why it matters
Full RCE on developer workstations running Cursor with the Framelink Figma MCP server. Attacker access to source code, environment variables, SSH keys, and any credentials accessible to the developer process.
Missing authorization check
MCP server tools that pass external data (from third-party services like Figma) to shell execution contexts must sanitize all inputs or use parameterized execution. User-controlled or third-party content must never be interpolated directly into shell commands.
Would PP block it?
A receipt gate forces human authorization before the MCP tool call runs, adding a human review opportunity that could catch suspicious Figma file interactions. The underlying fix requires using child_process.execFile with argument arrays instead of shell interpolation.