Providing security resources for the Ruby community

CVE-2014-0013 (ember-source): Ember.js Potential XSS Exploit With User-Supplied Data When Binding Primitive Values





  • ~> 1.0.1
  • ~> 1.1.3
  • ~> 1.2.1
  • ~> 1.3.1
  • >= 1.4.0.beta.2


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.