Skip to content

statics-server Cross-site Scripting vulnerability

Moderate severity GitHub Reviewed Published May 13, 2022 to the GitHub Advisory Database • Updated May 2, 2024

Package

npm statics-server (npm)

Affected versions

<= 0.0.9

Patched versions

None

Description

An XSS in statics-server <= 0.0.9 can be used via injected iframe in the filename when statics-server displays directory index in the browser. Statics-server does not implement any HTML escaping when displays directory index in the browser. Variable v is used in <a href> element without escaping, which allows to embed HTML <iframe> tag with src attribute points to another HTML file in the directory. This file can contain malicious JavaScript code, which will be executed:

// ./node_modules/statics-server/index.js, line 18:

    if(fs.lstatSync(staticPath).isDirectory()){
        var files=fs.readdirSync(staticPath);
        var lis='';
        files.forEach((v,i)=>{
            if(fs.lstatSync(path.resolve(staticPath,v)).isDirectory()){
                lis+=`<li><a href="${req.url}${v}/">${v}/</a></li>`;
            }else {
                lis+=`<li><a href="${req.url}${v}">${v}</a></li>`
            }
        });

        (...)

References

Published by the National Vulnerability Database Jul 20, 2018
Published to the GitHub Advisory Database May 13, 2022
Reviewed Apr 22, 2024
Last updated May 2, 2024

Severity

Moderate
6.1
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None
CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

Weaknesses

CVE ID

CVE-2018-3771

GHSA ID

GHSA-393x-fr59-r8fg

Source code

No known source code
Checking history
See something to contribute? Suggest improvements for this vulnerability.