Files
malkuthro-ComfyUI-Koolook/web
malkuthroandClaude Opus 4.8 f7e0666cc0 fix(sidebar): guard name-keyed store mutators against prototype pollution (#203)
CodeQL js/prototype-polluting-assignment (alert #1, medium) flagged
`dir.workflows[wfName].archived = true` in archiveWorkflow: a "__proto__"
name resolves to Object.prototype, passes the truthy existence check, and
the assignment pollutes the prototype process-wide. The same shape exists
across every exported mutator that uses an untrusted directory/workflow
name as an object key.

Add a shared isSafeObjectKey() denylist guard (__proto__, constructor,
prototype) with an early `return false` at all 12 keyed-mutation sinks:
add/rename/delete/move Directory, save/archive/unarchive/rename/delete/move
Workflow, and add/removeTag. Read-only accessors and clearArchive (which
derives names from own entries) are left untouched — reads don't pollute.

Supersedes the Copilot autofix draft #167 (extends it from a partial set
to every sink). Validated with `node --check`; repo has no JS test runner.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 21:33:27 +02:00
..
2026-05-23 10:23:04 +02:00