Codex P1 on the previous commit: granting both ``allow-popups`` and ``allow-popups-to-escape-sandbox`` while forcing every link through ``<base target="_blank">`` lets a malicious assistant-emitted link open a regular browser tab that retains ``window.opener``. The destination page can then call ``window.opener.top.location.href = '...'`` and tabnab the original Studio tab. Drop ``allow-popups-to-escape-sandbox``. ``allow-popups`` stays so the click still produces a tab instead of being silently dropped, but the popup now INHERITS the iframe sandbox (no allow-same-origin, no allow-top-navigation), so it cannot reach back into the host. Trade-off: the opened tab loads with an opaque origin and some real sites render degraded inside the popup. This is the deliberate exchange for tabnabbing safety; the chat-message preview iframe is the primary surface, the popup is a follow-up link click. Existing rendering-iframe sandbox test now asserts allow-popups-to-escape-sandbox is NOT present. |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .gitignore | ||
| .gitkeep | ||
| .install-script-allowlist | ||
| .npmrc | ||
| biome.json | ||
| components.json | ||
| data-designer.openapi (1).yaml | ||
| eslint.config.js | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||