Specifically, the changes include removal of ‘potentially dangerous artifacts’ such as ‘inline scripts’ and ‘eval()-like functions’. By doing so, they strive to ‘reduce the attack surface’ and harden the code.
As stated in the blog post,
To better protect our users and to add an additional layer of security to Firefox, we rewrote all inline event handlers and moved all inline JavaScript code to packaged files for all 45 about: pages. This allowed us to apply a strong Content Security Policy (CSP) such as ‘default-src chrome:’ which ensures that injected JavaScript code does not execute. Instead JavaScript code only executes when loaded from a packaged resource using the internal chrome: protocol.
According to the blog,
To further minimize the attack surface in Firefox and discourage the use of eval() we rewrote all use of ‘eval()’-like functions from system privileged contexts and from the parent process in the Firefox codebase. Additionally we added assertions, disallowing the use of ‘eval()’ and its relatives in system-privileged script contexts.Besides, during their assessment, they noticed some uses of eval to customize Firefox start up via unintended tricks. So, for such cases, they assure allowing usage of eval().
Let us know your thoughts in the comments.