Executive brief
Apollo Server is a tool used to build GraphQL application interfaces. A security flaw in its default landing page could allow an attacker to execute malicious scripts in the web browsers of users visiting the server, specifically those using older browsers like Internet Explorer 11. This could lead to unauthorized actions being performed in the user's session or the theft of sensitive information if a user is tricked into clicking a malicious link.
Technical details
A reflected Cross-Site Scripting (XSS) vulnerability exists in apollo-server-core versions 3.0.0 through 3.10.0. The vulnerability is located in the default landing page, which interpolates the server's URL from 'window.location.href' into a sample curl command. In older browsers such as Internet Explorer 11, this value is not automatically URI-encoded, allowing an attacker to craft a URL containing malicious JavaScript. If a user using an affected browser visits the malicious link and the landing page bundle fails to load from the CDN, the script will execute in the context of the user's session. The issue is fixed in version 3.10.1 by removing the sample curl command from the landing page.
Affected products
- Apollo GraphQL apollo-server-core >= 3.0.0, < 3.10.1
Timeline
- 2022-08-10: advisory: Original GitHub security advisory published
- 2022-08-18: disclosed: Public disclosure via OSV/GHSA database