Multiple Vulnerabilities in Mozilla Products Could Allow for Arbitrary Code Execution

Multiple Vulnerabilities in Mozilla Products Could Allow for Arbitrary Code Execution

MS-ISAC ADVISORY NUMBER:

2018-054

DATE(S) ISSUED:

05/09/2018

OVERVIEW:

Multiple vulnerabilities have been discovered in Mozilla Firefox and Firefox Extended Support Release (ESR), the most severe of which could allow for arbitrary code execution. Mozilla Firefox is a web browser used to access the Internet. Mozilla Firefox ESR is a version of the web browser intended to be deployed in large organizations. Successful exploitation of the most severe of these vulnerabilities could allow for arbitrary code execution. Depending on the privileges associated with the user, an attacker could then install programs; view, change, or delete data; or create new accounts with full user rights. Users whose accounts are configured to have fewer user rights on the system could be less impacted than those who operate with administrative user rights.

THREAT INTELLIGENCE:

There are currently no reports of these vulnerabilities being exploited in the wild.

SYSTEMS AFFECTED:

  • Mozilla Firefox prior to 60
  • Mozilla Firefox prior to ESR 52.8

RISK:

Government:

  • Large and medium government entities: HIGH
  • Small government entities: MEDIUM

Businesses:

  • Large and medium business entities: HIGH
  • Small business entities: MEDIUM

Home Users:

LOW

TECHNICAL SUMMARY:

Multiple vulnerabilities have been discovered in Mozilla Firefox and Firefox Extended Support Release (ESR), the most severe of which could allow for arbitrary code execution. Details of the vulnerabilities are as follows:

  • A buffer overflow was found during UTF8 to Unicode string conversion within JavaScript with extremely large amounts of data. This vulnerability requires the use of a malicious or vulnerable legacy extension in order to occur. (CVE-2018-5178)
  • A mechanism to bypass Content Security Policy (CSP) protections on sites that have a script-src policy of ‘strict-dynamic’. If a target website contains an HTML injection flaw an attacker could inject a reference to a copy of the require.js library that is part of Firefox’s Developer Tools, and then use a known technique using that library to bypass the CSP restrictions on executing injected scripts. (CVE-2018-5175)
  • An integer overflow can occur in the Skia library due to 32-bit integer use in an array without integer overflow checks, resulting in possible out-of-bounds writes. This could lead to a potentially exploitable crash triggerable by web content. (CVE-2018-5159)
  • A use-after-free vulnerability can occur during WebGL operations. While this results in a potentially exploitable crash, the vulnerability is limited because the memory is freed and reused in a brief window of time during the freeing of the same callstack. (CVE-2018-5180)
  • A use-after-free vulnerability can occur while adjusting layout during SVG animations with text paths. This results in a potentially exploitable crash. (CVE-2018-5155)
  • A use-after-free vulnerability can occur while enumerating attributes during SVG animations with clip paths. This results in a potentially exploitable crash. (CVE-2018-5154)
  • A vulnerability exists in XSLT during number formatting where a negative buffer size may be allocated in some instances, leading to a buffer overflow and crash if it occurs. (CVE-2018-5177)
  • Content Security Policy (CSP) is not applied correctly to all parts of multipart content sent with the multipart/x-mixed-replace MIME type. This could allow for script to run where CSP should block it, allowing for cross-site scripting (XSS) and other attacks. (CVE-2018-5164)
  • Backported select changes in the Skia library to the ESR52 branch of Firefox. These changes correct memory corruption issues including invalid buffer reads and writes during graphic operations. (CVE-2018-5183)
  • If a malicious attacker has used another vulnerability to gain full control over a content process, they may be able to replace the alternate data resources stored in the JavaScript Start-up Bytecode Cache (JSBC) for other JavaScript code. If the parent process then runs this replaced code, the executed script would be run with the parent process’ privileges, escaping the sandbox on content processes. (CVE-2018-5163)
  • If a text string that happens to be a filename in the operating system’s native format is dragged and dropped onto the addressbar the specified local file will be opened. This is contrary to policy and is what would happen if the string were the equivalent file: URL. (CVE-2018-5182)
  • If a URL using the file: protocol is dragged and dropped onto an open tab that is running in a different child process the tab will open a local file corresponding to the dropped URL, contrary to policy. One way to make the target tab open more reliably in a separate process is to open it with the noopener keyword. (CVE-2018-5181)
  • If manipulated hyperlinked text with chrome: URL contained in it is dragged and dropped on the "home" icon, the home page can be reset to include a normally-unlinkable chrome page as one of the home page tabs. (CVE-2018-5169)
  • If websocket data is sent with mixed text and binary in a single message, the binary data can be corrupted. This can result in an out-of-bounds read with the read memory sent to the originating server in response. (CVE-2018-5153)
  • In 32-bit versions of Firefox, the Adobe Flash plugin setting for "Enable Adobe Flash protected mode" is unchecked by default even though the Adobe Flash sandbox is actually enabled. The displayed state is the reverse of the true setting, resulting in user confusion. This could cause users to select this setting intending to activate it and inadvertently turn protections off. (CVE-2018-5165)
  • In the Windows 10 April 2018 Update, Windows Defender SmartScreen honors the SEE_MASK_FLAG_NO_UI flag associated with downloaded files and will not show any UI. Files that are unknown and potentially dangerous will be allowed to run because SmartScreen will not prompt the user for a decision, and if the user is offline all files will be allowed to be opened because Windows won’t prompt the user to ask what to do. Firefox incorrectly sets this flag when downloading files, leading to less secure behavior from SmartScreen. Note: this issue only affects Windows 10 users running the April 2018 update or later. It does not affect other Windows users or other operating systems. (CVE-2018-5174)
  • Memory safety bugs present in Firefox 59. Some of these bugs showed evidence of memory corruption and we presume that with enough effort that some of these could be exploited to run arbitrary code. (CVE-2018-5151)
  • Memory safety bugs present in Firefox 59 and Firefox ESR 52.7. Some of these bugs showed evidence of memory corruption and we presume that with enough effort that some of these could be exploited to run arbitrary code. (CVE-2018-5150)
  • Same-origin protections for the PDF viewer can be bypassed, allowing a malicious site to intercept messages meant for the viewer. This could allow the site to retrieve PDF files restricted to viewing by an authenticated user on a third-party website. (CVE-2018-5157)
  • Sites can bypass security checks on permissions to install lightweight themes by manipulating the baseURI property of the theme element. This could allow a malicious site to install a theme without user interaction which could contain offensive or embarrassing images. (CVE-2018-5168)
  • The filename appearing in the Downloads panel improperly renders some Unicode characters, allowing for the file name to be spoofed. This can be used to obscure the file extension of potentially executable files from user view in the panel. Note: the dialog to open the file will show the full, correct filename and whether it is executable or not. (CVE-2018-5173)
  • The JSON Viewer displays clickable hyperlinks for strings that are parseable as URLs, including javascript: links. If a JSON file contains malicious JavaScript script embedded as javascript: links, users may be tricked into clicking and running this code in the context of the JSON Viewer. This can allow for the theft of cookies and authorization tokens which are accessible to that context. (CVE-2018-5176)
  • The Live Bookmarks page and the PDF viewer can run injected script content if a user pastes script from the clipboard into them while viewing RSS feeds or PDF files. This could allow a malicious site to socially engineer a user to copy and paste malicious script content that could then run with the context of either page but does not allow for privilege escalation. (CVE-2018-5172)
  • The PDF viewer does not sufficiently sanitize PostScript calculator functions, allowing malicious JavaScript to be injected through a crafted PDF file. This JavaScript can then be run with the permissions of the PDF viewer by its worker. (CVE-2018-5158)
  • The web console and JavaScript debugger do not sanitize all output that can be hyperlinked. Both will display chrome: links as active, clickable hyperlinks in their output. Web sites should not be able to directly link to internal chrome pages. Additionally, the JavaScript debugger will display javascript: links, which users could be tricked into clicking by malicious sites. (CVE-2018-5167)
  • WebExtensions can use request redirection and a filterReponseData filter to bypass host permission settings to redirect network traffic and access content from a host for which they do not have explicit user permission. (CVE-2018-5166)
  • WebExtensions with the appropriate permissions can attach content scripts to Mozilla sites such as accounts.firefox.com and listen to network traffic to the site through the webRequest API. For example, this allows for the interception of username and an encrypted password during login to Firefox Accounts. This issue does not expose synchronization traffic directly and is limited to the process of user login to the website and the data displayed to the user once logged in. (CVE-2018-5152)
  • WebRTC can use a WrappedI420Buffer pixel buffer but the owning image object can be freed while it is still in use. This can result in the WebRTC encoder using uninitialized memory, leading to a potentially exploitable crash. (CVE-2018-5160)

Successful exploitation of the most severe of these vulnerabilities could allow for arbitrary code execution. Depending on the privileges associated with the user, an attacker could then install programs; view, change, or delete data; or create new accounts with full user rights. Users whose accounts are configured to have fewer user rights on the system could be less impacted than those who operate with administrative user rights.

RECOMENDATIONS:

We recommend the following actions be taken:

  • Apply appropriate updates provided by Mozilla to vulnerable systems, immediately after appropriate testing.
  • Run all software as a non-privileged user (one without administrative privileges) to diminish the effects of a successful attack.
  • Remind users not to visit un-trusted websites or follow links provided by unknown or un-trusted sources.
  • Inform and educate users regarding the threats posed by hypertext links contained in emails or attachments especially from un-trusted sources.
  • Apply the Principle of Least Privilege to all systems and services.

REFERENCES:

CVE:

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5150
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5151
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5152
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5153
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5154
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5155
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5157
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5158
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5159
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5160
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5163
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5164
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5165
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5166
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5167
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5168
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5169
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5172
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5173
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5174
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5175
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5176
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5177
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5178
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5180
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5181
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5182
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5183