From dc0423f25b33fb3400f105823afc07fcf604c30b Mon Sep 17 00:00:00 2001 From: sachinh-amazon <188173965+sachinh-amazon@users.noreply.github.com> Date: Tue, 30 Dec 2025 14:21:55 +0000 Subject: [PATCH 1/3] Add patch to validate referer for vscode-remote-resource API --- patches/sagemaker.series | 1 + .../validate-http-request-referer.diff | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 patches/sagemaker/validate-http-request-referer.diff diff --git a/patches/sagemaker.series b/patches/sagemaker.series index 6df0f36..2cb88c7 100644 --- a/patches/sagemaker.series +++ b/patches/sagemaker.series @@ -39,3 +39,4 @@ sagemaker/sagemaker-extension-smus-support.diff sagemaker/post-startup-notifications.diff sagemaker/sagemaker-extensions-sync.diff sagemaker/fix-port-forwarding.diff +sagemaker/validate-http-request-referer.diff diff --git a/patches/sagemaker/validate-http-request-referer.diff b/patches/sagemaker/validate-http-request-referer.diff new file mode 100644 index 0000000..001b6af --- /dev/null +++ b/patches/sagemaker/validate-http-request-referer.diff @@ -0,0 +1,20 @@ +Index: code-editor-src/src/vs/server/node/remoteExtensionHostAgentServer.ts +=================================================================== +--- code-editor-src.orig/src/vs/server/node/remoteExtensionHostAgentServer.ts ++++ code-editor-src/src/vs/server/node/remoteExtensionHostAgentServer.ts +@@ -172,6 +172,21 @@ class RemoteExtensionHostAgentServer ext + if (pathname === '/vscode-remote-resource') { + // Handle HTTP requests for resources rendered in the rich client (images, fonts, etc.) + // These resources could be files shipped with extensions or even workspace files. ++ ++ if (req.headers.referer && req.headers.host) { ++ this._logService.info('Inside if check'); ++ const parsedRefererUrl = url.parse(req.headers.referer, true); ++ if (parsedRefererUrl.host !== req.headers.host) { ++ return serveError(req, res, 403, `Forbidden.`); ++ } ++ } ++ + const desiredPath = parsedUrl.query['path']; + if (typeof desiredPath !== 'string') { + return serveError(req, res, 400, `Bad request.`); From 211cdac8986f98264df3dac7935f89a0db68ab6c Mon Sep 17 00:00:00 2001 From: sachinh-amazon <188173965+sachinh-amazon@users.noreply.github.com> Date: Tue, 30 Dec 2025 14:26:29 +0000 Subject: [PATCH 2/3] Remove log --- patches/sagemaker/validate-http-request-referer.diff | 1 - 1 file changed, 1 deletion(-) diff --git a/patches/sagemaker/validate-http-request-referer.diff b/patches/sagemaker/validate-http-request-referer.diff index 001b6af..02f2eb1 100644 --- a/patches/sagemaker/validate-http-request-referer.diff +++ b/patches/sagemaker/validate-http-request-referer.diff @@ -8,7 +8,6 @@ Index: code-editor-src/src/vs/server/node/remoteExtensionHostAgentServer.ts // These resources could be files shipped with extensions or even workspace files. + + if (req.headers.referer && req.headers.host) { -+ this._logService.info('Inside if check'); + const parsedRefererUrl = url.parse(req.headers.referer, true); + if (parsedRefererUrl.host !== req.headers.host) { + return serveError(req, res, 403, `Forbidden.`); From 3f90d258a0ffbfa54f59d6706756f2e22d3d92e1 Mon Sep 17 00:00:00 2001 From: sachinh-amazon <188173965+sachinh-amazon@users.noreply.github.com> Date: Wed, 31 Dec 2025 08:44:37 +0000 Subject: [PATCH 3/3] Fix patch --- patches/sagemaker/validate-http-request-referer.diff | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/patches/sagemaker/validate-http-request-referer.diff b/patches/sagemaker/validate-http-request-referer.diff index 02f2eb1..72d3e56 100644 --- a/patches/sagemaker/validate-http-request-referer.diff +++ b/patches/sagemaker/validate-http-request-referer.diff @@ -2,18 +2,17 @@ Index: code-editor-src/src/vs/server/node/remoteExtensionHostAgentServer.ts =================================================================== --- code-editor-src.orig/src/vs/server/node/remoteExtensionHostAgentServer.ts +++ code-editor-src/src/vs/server/node/remoteExtensionHostAgentServer.ts -@@ -172,6 +172,21 @@ class RemoteExtensionHostAgentServer ext +@@ -172,6 +172,13 @@ class RemoteExtensionHostAgentServer ext if (pathname === '/vscode-remote-resource') { // Handle HTTP requests for resources rendered in the rich client (images, fonts, etc.) // These resources could be files shipped with extensions or even workspace files. -+ + if (req.headers.referer && req.headers.host) { + const parsedRefererUrl = url.parse(req.headers.referer, true); + if (parsedRefererUrl.host !== req.headers.host) { + return serveError(req, res, 403, `Forbidden.`); + } + } -+ ++ const desiredPath = parsedUrl.query['path']; if (typeof desiredPath !== 'string') { return serveError(req, res, 400, `Bad request.`);