Skip to content

Security: Unsafe HTML string construction in getDashboardHtml without CSP nonce on style-src#153

Open
tomaioo wants to merge 1 commit into
microsoft:mainfrom
tomaioo:fix/security/unsafe-html-string-construction-in-getda
Open

Security: Unsafe HTML string construction in getDashboardHtml without CSP nonce on style-src#153
tomaioo wants to merge 1 commit into
microsoft:mainfrom
tomaioo:fix/security/unsafe-html-string-construction-in-getda

Conversation

@tomaioo

@tomaioo tomaioo commented Jun 20, 2026

Copy link
Copy Markdown

Summary

Security: Unsafe HTML string construction in getDashboardHtml without CSP nonce on style-src

Problem

Severity: Medium | File: src/webview/panel-html.ts:L10

The getDashboardHtml function in panel-html.ts constructs HTML by string concatenation including external style and script URIs. While a nonce is used for script-src, the style-src directive allows 'unsafe-inline' which bypasses CSP protection for styles. Additionally, the function uses String(styleUri) and String(scriptUri) which could potentially be exploited if the webview.asWebviewUri returns unexpected values. The 'unsafe-inline' in style-src allows attackers to inject styles if they can control any part of the HTML generation.

Solution

Remove 'unsafe-inline' from style-src and style-src-attr directives. Use nonces or hashes for all style sources. Validate that webview.asWebviewUri returns expected URI formats before string interpolation.

Changes

  • src/webview/panel-html.ts (modified)

The getDashboardHtml function in panel-html.ts constructs HTML by string concatenation including external style and script URIs. While a nonce is used for script-src, the style-src directive allows 'unsafe-inline' which bypasses CSP protection for styles. Additionally, the function uses String(styleUri) and String(scriptUri) which could potentially be exploited if the webview.asWebviewUri returns unexpected values. The 'unsafe-inline' in style-src allows attackers to inject styles if they can control any part of the HTML generation.

Signed-off-by: tomaioo <203048277+tomaioo@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant