vs.xplorer interactive view →

Svelte for VS Code

svelte.svelte-vscode · published by svelte verified
CRITICAL
9 findings detected for svelte.svelte-vscode — 2 critical, 2 high, 5 medium.
vsxplorer verdict badge
2 CRITICAL2 HIGH5 MEDIUM
40
versions scanned
2
sources tracked
2.6M
installs
110.0.0
latest version
2026-05-26 18:55 UTC
last scanned

Source coverage

Findings

CRITICAL windows-script-host Windows Script Host invocation
node_modules/svelte/compiler.cjs :40490

`{file_path}` references cscript / wscript or the `//e:jscript` switch. WSH runs scripts outside the V8 sandbox with full Win32 and WMI access.

  	'Uint8ClampedArray',
  	'VBArray',
  	'VTTCue',
  	'VTTRegion',
  	'ValidityState',
  	'VarDate',
  	'VideoColorSpace',
  	'VideoPlaybackQuality',
  	'VisualViewport',
  	'WSH',
▶ 	'WScript',
  	'WaveShaperNode',
  	'WeakMap',
  	'WeakRef',
  	'WeakSet',
  	'WebAssembly',
  	'WebGL2RenderingContext',
  	'WebGLActiveInfo',
  	'WebGLBuffer',
  	'WebGLContextEvent',
  	'WebGLFramebuffer',
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0
CRITICAL windows-script-host Windows Script Host invocation
node_modules/svelte/src/compiler/utils/globals.js :579

`{file_path}` references cscript / wscript or the `//e:jscript` switch. WSH runs scripts outside the V8 sandbox with full Win32 and WMI access.

  	'Uint8ClampedArray',
  	'VBArray',
  	'VTTCue',
  	'VTTRegion',
  	'ValidityState',
  	'VarDate',
  	'VideoColorSpace',
  	'VideoPlaybackQuality',
  	'VisualViewport',
  	'WSH',
▶ 	'WScript',
  	'WaveShaperNode',
  	'WeakMap',
  	'WeakRef',
  	'WeakSet',
  	'WebAssembly',
  	'WebGL2RenderingContext',
  	'WebGLActiveInfo',
  	'WebGLBuffer',
  	'WebGLContextEvent',
  	'WebGLFramebuffer',
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0
HIGH env-mass-collection Bulk read of process.env
node_modules/vscode-languageclient/lib/node/main.js :194

`{file_path}` enumerates the entire process.env object rather than reading a specific variable. Common precursor to exfiltrating GITHUB_TOKEN, AWS_*, and similar credentials.

          if (params.processId === null) {
              params.processId = process.pid;
          }
      }
      createMessageTransports(encoding) {
          function getEnvironment(env, fork) {
              if (!env && !fork) {
                  return undefined;
              }
              const result = Object.create(null);
▶             Object.keys(process.env).forEach(key => result[key] = process.env[key]);
              if (fork) {
                  result['ELECTRON_RUN_AS_NODE'] = '1';
                  result['ELECTRON_NO_ASAR'] = '1';
              }
              if (env) {
                  Object.keys(env).forEach(key => result[key] = env[key]);
              }
              return result;
          }
          const debugStartWith = ['--debug=', '--debug-brk=', '--inspect=', '--inspect-brk='];
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0
HIGH env-mass-collection Bulk read of process.env
node_modules/vscode-languageserver/lib/node/files.js :121

`{file_path}` enumerates the entire process.env object rather than reading a specific variable. Common precursor to exfiltrating GITHUB_TOKEN, AWS_*, and similar credentials.

  exports.resolve = resolve;
  /**
   * Resolve the global npm package path.
   * @deprecated Since this depends on the used package manager and their version the best is that servers
   * implement this themselves since they know best what kind of package managers to support.
   * @param tracer the tracer to use
   */
  function resolveGlobalNodePath(tracer) {
      let npmCommand = 'npm';
      const env = Object.create(null);
▶     Object.keys(process.env).forEach(key => env[key] = process.env[key]);
      env['NO_UPDATE_NOTIFIER'] = 'true';
      const options = {
          encoding: 'utf8',
          env
      };
      if (isWindows()) {
          npmCommand = 'npm.cmd';
          options.shell = true;
      }
      let handler = () => { };
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0
MEDIUM child-process-exec Extension spawns subprocesses via child_process
node_modules/vscode-languageclient/lib/node/main.js :299

`{file_path}` imports child_process and calls exec / spawn / execFile / fork. Subprocess execution lets the extension pivot from the VSCode host into the user's shell.

                      }
                      else if (transport === TransportKind.pipe) {
                          pipeName = (0, node_1.generateRandomPipeName)();
                          args.push(`--pipe=${pipeName}`);
                      }
                      else if (Transport.isSocket(transport)) {
                          args.push(`--socket=${transport.port}`);
                      }
                      args.push(`--clientProcessId=${process.pid.toString()}`);
                      if (transport === TransportKind.ipc || transport === TransportKind.stdio) {
▶                         const serverProcess = cp.spawn(runtime, args, execOptions);
                          if (!serverProcess || !serverProcess.pid) {
                              return handleChildProcessStartError(serverProcess, `Launching server using runtime ${runtime} failed.`);
                          }
                          this._serverProcess = serverProcess;
                          serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));
                          if (transport === TransportKind.ipc) {
                              serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));
                              return Promise.resolve({ reader: new node_1.IPCMessageReader(serverProcess), writer: new node_1.IPCMessageWriter(serverProcess) });
                          }
                          else {
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0
MEDIUM obfuscated-code Long run of \x hex-escape sequences
node_modules/prettier/plugins/flow.js :14
▶ line 14: \v\f\r\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x1B\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07 \x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07…
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0
MEDIUM obfuscated-code Long run of \x hex-escape sequences
node_modules/prettier/plugins/flow.mjs :14
▶ line 14: \v\f\r\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x1B\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07 \x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07…
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0
MEDIUM child-process-exec Extension spawns subprocesses via child_process
test/grammar/test.js :22

`{file_path}` imports child_process and calls exec / spawn / execFile / fork. Subprocess execution lets the extension pivot from the VSCode host into the user's shell.

      .map((file) => join(grammarDir, file));
  
  const allGrammars = [...grammars, ...dummyGrammars];
  
  /**
   *
   * @param  {Parameters<typeof spawn>} arg
   * @returns
   */
  function promisifySpawn(...arg) {
▶     const childProcess = spawn(...arg);
      return new Promise((resolve) => {
          childProcess.on('exit', (code) => {
              resolve(code);
          });
  
          childProcess.on('error', (err) => {
              console.error(err);
              resolve(1);
          });
      });
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0
MEDIUM child-process-exec Extension spawns subprocesses via child_process
node_modules/vscode-languageclient/lib/node/processes.js :25

`{file_path}` imports child_process and calls exec / spawn / execFile / fork. Subprocess execution lets the extension pivot from the VSCode host into the user's shell.

          try {
              // This we run in Atom execFileSync is available.
              // Ignore stderr since this is otherwise piped to parent.stderr
              // which might be already closed.
              let options = {
                  stdio: ['pipe', 'pipe', 'ignore']
              };
              if (cwd) {
                  options.cwd = cwd;
              }
▶             cp.execFileSync('taskkill', ['/T', '/F', '/PID', process.pid.toString()], options);
              return true;
          }
          catch (err) {
              return false;
          }
      }
      else if (isLinux || isMacintosh) {
          try {
              var cmd = (0, path_1.join)(__dirname, 'terminateProcess.sh');
              var result = cp.spawnSync(cmd, [process.pid.toString()]);
Affected versions
marketplace 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.4, 109.6.0, 109.9.0, 110.0.0
open-vsx 109.10.0, 109.10.1, 109.11.0, 109.11.1, 109.11.2, 109.12.0, 109.12.1, 109.13.0, 109.14.0, 109.14.1, 109.14.2, 109.15.0, 109.15.1, 109.5.2, 109.7.0, 110.0.0

Embed this verdict

vsxplorer badge

[![vsxplorer](https://vsxplorer.veryserious.systems/badge/svelte.svelte-vscode.svg)](https://vsxplorer.veryserious.systems/report/svelte.svelte-vscode)