HexBrain

Node.js third-party modules · Report #319951

`superstatic` is vulnerable to path traversal on Windows

Validstatus
highseverity
5upvotes
29 Apr 2018disclosed

How it was found

I would like to report path traversal vulnerability in superstatic It allows to read arbitrary out-of-dir files when running on the Windows platform

Module

module name: superstatic version: 5.0.1 npm page: https://www.npmjs.com/package/superstatic

Module Description

Superstatic is an enhanced static web server that was built to power. It has fantastic support for HTML5 pushState applications, clean URLs, caching, and many other goodies.

Module Stats

2 196 downloads in the last day 33 588 downloads in the last week 139 118 downloads in the last month

~1 669 416 estimated downloads per year

Vulnerability

Vulnerability Description

superstatic verifies that current dir is not evaded by checking the presense of ../ in the decoded path, but on Windows, ..\ works. Code: https://github.com/firebase/superstatic/blob/v5.0.1/lib/providers/fs.js#L71

Steps To Reproduce:

Install and run superstatic (npx superstatic in any dir). It could be also used as a Node.js lib.

Go to http://localhost:3474/..%5c..%5c..%5c/Windows/notepad.exe (adjust the path accordingly, that's for C:\Users\User\tmp).

Note: don't use Edge for that, it decodes the path itself. Use e.g. Chromium.

Supporting Material/References:

  • OS: Windows 10
  • Node.js v8.9.4
  • npm v5.6.0
  • Chromium

Wrap up

  • I contacted the maintainer to let him know: N
  • I opened an issue in the related repository: N

Impact

Read any accessible files outside of the restricted directory.

This report was disclosed publicly on HackerOne and belongs to its author and the program. See the original