CVE-2017-1000188: Cross-site Scripting Vulnerability in ejs

ejs Updated 02 Oct 2025

Summary

30/11/2017
Yes i
Moderate
6.1

CVE-2017-1000188: mde ejs vulnerable to XSS. Affects ejs versions < 2.5.5. Fixed in 2.5.5. How to fix ↓

Also tracked for

The same CVE-2017-1000188 is tracked separately for each ecosystem and vendor. Its fix information is the same; the package and affected versions differ.

Free scan

Check if this vulnerability affects your application

Upload a manifest or SBOM and we'll show whether you're affected, plus every other risky package in the same scan.

Check my app free

No signup required · Results in about 60 seconds

Sponsored Devnack Your last release was probably never penetration tested Manual testing by engineers who build software, not an auditor's checklist. Trusted by teams at Swift and Google Talk to Devnack

Background

ejs is an npm package used for server-side rendering of JavaScript templates. It allows developers to embed JavaScript code within HTML templates to generate dynamic content. However, versions older than 2.5.5 of ejs are vulnerable to a Cross-site Scripting (XSS) attack when using the ejs.renderFile() function. This vulnerability can lead to code injection and potential security breaches.

Vulnerability Detail

The vulnerability arises due to insufficient input sanitization in the ejs.renderFile() function. Attackers can exploit this by injecting malicious code into the template, which will be executed when the template is rendered on the server. This can result in various consequences, such as unauthorized access, data leakage, or the execution of arbitrary code.

How To Fix

Minimum fixed version

2.5.5

This is the first release that contains the fix.

npm install ejs@2.5.5

Tip — Not sure which version your app runs? Vulert can match this fix to it. Scan free →

Workaround

If updating to the latest version is not feasible, a possible workaround is to manually sanitize user input before passing it to the ejs.renderFile() function. This can be done using libraries like DOMPurify or by implementing custom input validation and sanitization routines. Here's an example of using DOMPurify:

const DOMPurify = require('dompurify');
const template = '<h1><%= DOMPurify.sanitize(userInput) %></h1>';

Note that this workaround may not provide complete protection and it is still recommended to update to the latest version of ejs.

Conclusion

In conclusion, the ejs package versions older than 2.5.5 are vulnerable to a Cross-site Scripting (XSS) attack. It is crucial to update to the latest version or apply appropriate input sanitization to mitigate the risk. For further assistance and support in vulnerability remediation, please contact DevNack.com.

See every vulnerability recorded for ejs →

Share this vulnerability

FAQ

ejs is an npm package that enables server-side rendering of JavaScript templates. It allows developers to generate dynamic HTML content by embedding JavaScript code within templates.

Cross-site Scripting (XSS) is a type of security vulnerability that allows attackers to inject malicious scripts into web pages viewed by other users. This can lead to unauthorized access, data theft, or the execution of arbitrary code.

If your application uses an older version of ejs (before 2.5.5) and utilizes the ejs.renderFile() function, it is susceptible to Cross-site Scripting (XSS) attacks. This can potentially lead to code injection and compromise the security of your application.

To fix the vulnerability, update the ejs package to version 2.5.5 or later. This can be done by running 'npm install ejs@2.5.5' in your project directory. Alternatively, you can manually sanitize user input before passing it to the ejs.renderFile() function.

If updating to the latest version is not possible, you can manually sanitize user input using libraries like DOMPurify or by implementing custom input validation and sanitization routines. However, this workaround may not provide complete protection, and it is still recommended to update to the latest version of ejs.

Related vulnerabilities

Recent vulnerabilities recorded for ejs.

How To Fix

Minimum fixed version

2.5.5

This is the first release that contains the fix.

npm install ejs@2.5.5

Tip — Not sure which version your app runs? Vulert can match this fix to it. Scan free →

Subscribe to Vulert on Telegram
Daily digest of new CVEs, critical and high severity, affected packages and fixes — plus a weekly roundup.
Join the channel →
Help improve this record
Report an issue or send feedback