The skill allows arbitrary code execution, state modification, and
Claims to do
@json-render/core: Core package for schema definition, catalog creation, and spec streaming.
Actually does
This skill provides functions to define JSON schemas and catalogs, generate AI prompts based on these definitions, process JSONL spec streams, resolve dynamic expressions against a state model, build user prompts for AI, validate and auto-fix JSON specs, and create an in-memory state store. It uses `zod` for schema validation and handles various JSON data structures.
The skill allows dynamic execution of functions via `$computed` expressions and actions via `watch` fields. If the function/action names or their arguments can be controlled by an attacker, this could lead to arbitrary code execution or invocation of sensitive internal functions, as no explicit whitelisting or sandboxing is detailed.
{"$computed": "fnName", "args": { ... }}; "watch": { "/path": { "action": "loadCities", "params": { ... } } }The skill provides mechanisms for two-way binding (`$bindState`, `$bindItem`) and a built-in `setState` action, allowing modification of the application's state model. An attacker able to control input to components or trigger actions could write arbitrary data to any path in the state, potentially leading to data corruption, unauthorized state changes, or exfiltration of sensitive information.
{ "$bindState": "/path" }; { name: "setState", description: "Update a value in the state model" }; store.set(path, value)The skill processes JSONL streams containing RFC 6902 JSON Patch operations to progressively build or modify specifications. If an attacker can inject malicious patches into this stream, they could alter the structure or content of the generated UI/video specification, leading to unauthorized changes in the application's behavior or appearance.
createSpecStreamCompiler; applySpecStreamPatch; EditMode: "patch" | "merge" | "diff"
The `buildUserPrompt` and `catalog.prompt` functions construct prompts for AI models, incorporating user input, current specifications, and state. If an attacker can inject malicious instructions into the `prompt` argument, `currentSpec`, or `state` data, they could manipulate the AI's behavior, leading to unintended actions or outputs.
buildUserPrompt({ prompt: "...", currentSpec: spec, state: { ... } }); catalog.prompt({ customRules: [...] })The `$template` expression allows string interpolation using values from the state model. If an attacker can control the values within the state model that are referenced by a template, they could inject arbitrary text or markup into the generated output, potentially leading to UI defacement or further injection attacks if the output is rendered unsafely.
{ "$template": "Hello, ${/user/name}!" }[](https://mondoo.com/ai-agent-security/skills/github/vercel-labs/json-render/core)<a href="https://mondoo.com/ai-agent-security/skills/github/vercel-labs/json-render/core"><img src="https://mondoo.com/ai-agent-security/api/badge/github/vercel-labs/json-render/core.svg" alt="Mondoo Skill Check" /></a>https://mondoo.com/ai-agent-security/api/badge/github/vercel-labs/json-render/core.svgSkills can read files, run commands, and access credentials. Mondoo helps organizations manage the security risks of AI agent skills across their entire fleet.