Skip to content

Commit 1ab0fee

Browse files
authored
Merge pull request #220 from NewtonDer/fix-vscode-remote-resource-1.6
Add patch to validate referer for vscode-remote-resource API
2 parents b3a715c + 0f4ef35 commit 1ab0fee

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

patched-vscode/src/vs/server/node/remoteExtensionHostAgentServer.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,13 @@ class RemoteExtensionHostAgentServer extends Disposable implements IServerAPI {
139139
if (pathname === '/vscode-remote-resource') {
140140
// Handle HTTP requests for resources rendered in the rich client (images, fonts, etc.)
141141
// These resources could be files shipped with extensions or even workspace files.
142+
if (req.headers.referer && req.headers.host) {
143+
const parsedRefererUrl = url.parse(req.headers.referer, true);
144+
if (parsedRefererUrl.host !== req.headers.host) {
145+
return serveError(req, res, 403, `Forbidden.`);
146+
}
147+
}
148+
142149
const desiredPath = parsedUrl.query['path'];
143150
if (typeof desiredPath !== 'string') {
144151
return serveError(req, res, 400, `Bad request.`);

patches/series

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ post-startup-notifications.patch
1919
sagemaker-extensions-sync.patch
2020
display-language.patch
2121
custom-extensions-marketplace.diff
22+
validate-http-request-referer.patch
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Index: sagemaker-code-editor/vscode/src/vs/server/node/remoteExtensionHostAgentServer.ts
2+
===================================================================
3+
--- sagemaker-code-editor.orig/vscode/src/vs/server/node/remoteExtensionHostAgentServer.ts
4+
+++ sagemaker-code-editor/vscode/src/vs/server/node/remoteExtensionHostAgentServer.ts
5+
@@ -139,6 +139,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)