Skip to content

Commit 2e75bcb

Browse files
Add patch to validate referer for vscode-remote-resource API (#109)
1 parent 3708aa8 commit 2e75bcb

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

patches/sagemaker.series

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,4 @@ sagemaker/post-startup-notifications.diff
4040
sagemaker/sagemaker-extensions-sync.diff
4141
sagemaker/fix-port-forwarding.diff
4242
sagemaker/display-both-versions-in-about.diff
43+
sagemaker/validate-http-request-referer.diff
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Index: code-editor-src/src/vs/server/node/remoteExtensionHostAgentServer.ts
2+
===================================================================
3+
--- code-editor-src.orig/src/vs/server/node/remoteExtensionHostAgentServer.ts
4+
+++ code-editor-src/src/vs/server/node/remoteExtensionHostAgentServer.ts
5+
@@ -172,6 +172,13 @@ class RemoteExtensionHostAgentServer ext
6+
if (pathname === '/vscode-remote-resource') {
7+
// Handle HTTP requests for resources rendered in the rich client (images, fonts, etc.)
8+
// These resources could be files shipped with extensions or even workspace files.
9+
+ if (req.headers.referer && req.headers.host) {
10+
+ const parsedRefererUrl = url.parse(req.headers.referer, true);
11+
+ if (parsedRefererUrl.host !== req.headers.host) {
12+
+ return serveError(req, res, 403, `Forbidden.`);
13+
+ }
14+
+ }
15+
+
16+
const desiredPath = parsedUrl.query['path'];
17+
if (typeof desiredPath !== 'string') {
18+
return serveError(req, res, 400, `Bad request.`);

0 commit comments

Comments
 (0)