Ember.js Potential XSS Exploit With User-Supplied Data When Binding Primitive Values
Published: January 14, 2014
SECURITY IDENTIFIERS
- CVE: CVE-2014-0013 (NVD)
- GHSA: GHSA-8xm3-gm7c-5fjx
- Vendor Advisory: https://groups.google.com/forum/#!topic/ember-security/2kpXXCxISS4
GEM
SEVERITY
CVSS v3.x: 5.4 (Medium)
PATCHED VERSIONS
~> 1.0.1
~> 1.1.3
~> 1.2.1
~> 1.3.1
>= 1.4.0.beta.2
DESCRIPTION
In general, Ember.js escapes or strips any user-supplied content before inserting it in strings that will be sent to innerHTML. However, we have identified a vulnerability that could lead to unescaped content being inserted into the innerHTML string without being sanitized.
When a primitive value is used as the Handlebars context, that value is not
properly escaped. An example of this would be using the {{each}} helper to
iterate over an array of user-supplied strings and using {{this}} inside the
block to display each string.
In applications that contain templates whose context is a primitive value and
use the {{this}} keyword to display that value, a specially-crafted payload
could execute arbitrary JavaScript in the context of the current domain
("XSS").
This vulnerability affects applications that contain templates whose context is
set to a user-supplied primitive value (such as a string or number) and also
contain the {{this}} special Handlebars variable to display the value.
