GHSA-J944-W549-3453
Vulnerability from github – Published: 2026-05-07 16:40 – Updated: 2026-06-08 23:47Impact
A remote authenticated attacker who shares a room with a victim and has permissions to create room emotes (for example in a DM) can cause the victim's client to send their Matrix access token to an attacker-controlled server. This occurs when the victim opens the emoji or sticker picker for the room containing a malicious emote pack.
The root causes are:
(1) an incorrect fallback in EmojiBoard that uses untrusted pack.meta.avatar (user-controlled) without converting/validating it as an MXC URL, allowing arbitrary HTTP(S) URLs to be used; and
(2) the service worker attaching the user's Authorization bearer token to all outbound GET requests whose URL contains /_matrix/client/v1/media/download or /_matrix/client/v1/media/thumbnail without verifying the request host matches the configured homeserver origin. An attacker-controlled URL containing those path fragments and permissive CORS will receive the victim's Authorization header (access token).
Impacted users: anybody using affected Cinny web app versions who opens the emoji/sticker picker in a room containing a malicious emote pack and who is logged in (authenticated).
Patches
Version with fixes: https://github.com/cinnyapp/cinny/releases/tag/v4.10.3
{
"affected": [
{
"package": {
"ecosystem": "npm",
"name": "cinny"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "4.10.3"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-42553"
],
"database_specific": {
"cwe_ids": [
"CWE-20"
],
"github_reviewed": true,
"github_reviewed_at": "2026-05-07T16:40:52Z",
"nvd_published_at": "2026-05-27T18:16:22Z",
"severity": "HIGH"
},
"details": "### Impact\nA remote authenticated attacker who shares a room with a victim and has permissions to create room emotes (for example in a DM) can cause the victim\u0027s client to send their Matrix access token to an attacker-controlled server. This occurs when the victim opens the emoji or sticker picker for the room containing a malicious emote pack. \n\nThe root causes are: \n\n(1) an incorrect fallback in EmojiBoard that uses untrusted `pack.meta.avatar` (user-controlled) without converting/validating it as an MXC URL, allowing arbitrary HTTP(S) URLs to be used; and \n\n(2) the service worker attaching the user\u0027s Authorization bearer token to all outbound GET requests whose URL contains `/_matrix/client/v1/media/download` or `/_matrix/client/v1/media/thumbnail` without verifying the request host matches the configured homeserver origin. An attacker-controlled URL containing those path fragments and permissive CORS will receive the victim\u0027s Authorization header (access token). \n\nImpacted users: anybody using affected Cinny web app versions who opens the emoji/sticker picker in a room containing a malicious emote pack and who is logged in (authenticated).\n\n### Patches\nVersion with fixes: https://github.com/cinnyapp/cinny/releases/tag/v4.10.3",
"id": "GHSA-j944-w549-3453",
"modified": "2026-06-08T23:47:42Z",
"published": "2026-05-07T16:40:52Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/cinnyapp/cinny/security/advisories/GHSA-j944-w549-3453"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-42553"
},
{
"type": "PACKAGE",
"url": "https://github.com/cinnyapp/cinny"
},
{
"type": "WEB",
"url": "https://github.com/cinnyapp/cinny/releases/tag/v4.10.3"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Cinny vulnerable to access token disclosure via invalidated emoji pack avatar URL in service worker"
}
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.