Skip to content

Commit 6b49c19

Browse files
authored
Merge pull request #1223 from ember-learn/security-release-blog-post
Blog Post: Security Releases: Ember 4.8.1, 4.4.4, 3.28.10, 3.24.7
2 parents 3e80dec + ee947c8 commit 6b49c19

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

content/ember-4-8-1-released.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
title: 'Security Releases: Ember 4.8.1, 4.4.4, 3.28.10, 3.24.7'
3+
authors:
4+
- edward-faulkner
5+
date: 2022-11-02T00:00:00.000Z
6+
tags:
7+
- '2022'
8+
- releases
9+
- security
10+
11+
---
12+
13+
14+
Today we are releasing Ember.js 3.24.7, 3.28.10, 4.4.4, 4.8.1, and 4.9.0-beta.3 to patch a security vulnerability. *A CVE number is pending and this post will be updated to include it once it's been issued.*
15+
16+
Apps that pass untrusted input as paths to `EmberObject.setProperties` or `EmberObject.set`, or the corresponding standalone functions `setProperties` or `set`, may get surprising results that, in combination with other application bugs, could lead to cross-site scripting vulnerabilities.
17+
18+
```js
19+
import EmberObject from '@ember/object';
20+
21+
let o = new EmberObject();
22+
23+
// This can lead to prototype pollution in unpatched Ember versions
24+
o.set(untrustedPath, untrustedValue);
25+
26+
// This can lead to prototype pollution in unpatched Ember versions
27+
o.setProperties({ [untrustedPath]: untrustedValue });
28+
```
29+
30+
These methods were vulnerable to [Prototype Pollution](https://learn.snyk.io/lessons/prototype-pollution/javascript/), meaning an attacker can set paths like `__proto__.__proto__.isAdmin` to mutate unexpected objects, including Javascript intrinsics like the global `Object`. Depending on the specifics of your application, this can be leveraged as part of an attack to steal user credentials.
31+
32+
While deep property chaining is an intended feature of these APIs, and passing untrusted input to them is ill-advised, we agree that that this behavior is surprising enough to constitute an increased security risk. So this release forbids chaining any `set` or `setProperties` through `__proto__` or `constructor`.
33+
34+
Apps on unsupported releases that cannot immediately upgrade should audit their usage of `setProperties` and `set` to ensure they are not allowing users to control the paths.
35+
36+
Thanks to [Masato Kinugawa](https://twitter.com/kinugawamasato) for finding and reporting this issue.

0 commit comments

Comments
 (0)