diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c0b1b9..0472253 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,25 @@ All notable changes to the VS Code extension are documented here. ## [Unreleased] +### Security +- **Resolved 17 CodeQL alerts in `media/session.js`, `src/ChatStreamConsumer.ts`, `src/extension.ts`, `src/GovernancePanel.ts` and `src/test/session-logic.test.ts`.** Hardened the chat-webview HTML escaping (`esc()` now also escapes `"` and `'`), rewrote the inline `onclick="rptTool(...)"` / `onclick="rptCrash(...)"` / `onclick="viewFull(...)"` buttons to use `data-action` + a delegated click listener (eliminates the brittle `replace(/'/g,"\\'")` JS-string smuggling and the matching `js/identity-replacement` finding), escaped LLM-controlled values flowing into `addImg` `src=` and the VCS additions/deletions span, swapped `Math.random()` session-id generation for `crypto.randomUUID()`, and made the shell-quote helpers in the preflight + agent-task paths escape backslashes before quotes. Also tightened the ``). The + // bundles we emit only ever contain plain ``, but using the more + // robust pattern keeps CodeQL's `js/bad-tag-filter` query happy. + const blocks = extensionJs.match(/]*>[\s\S]*?<\/script\b[\s\S]*?>/gi) || []; for (const block of blocks) { if (block.includes('scanToolsNow')) { // This is the GovernancePanel script @@ -246,7 +250,7 @@ suite('Built Extension Webview Blocks', () => { }); test('SettingsPanel script block has no escaped backticks', () => { - const blocks = extensionJs.match(/