For instances where TRAQ_STORAGE_TYPE is set to local, the file retrieval API /files/{fileId} could serve user-uploaded SVG or HTML files in a way that allowed them to be rendered directly in the browser.
As a result, an attacker who can upload files to traQ could upload a crafted SVG or HTML file and trick a victim into opening the file URL, allowing the attacker to execute arbitrary JavaScript in the victim's browser.
This issue has been fixed in v3.28.3.
After this fix, the file retrieval API always adds the Content-Disposition header to its responses regardless of the value of the dl query parameter. This prevents user-uploaded files from being displayed directly in the browser.
To mitigate the impact of this issue, apply either of the following workarounds:
TRAQ_STORAGE_TYPE to a storage backend other than local./files/{fileId} include dl=1.Users of this application can reduce the risk of exploitation by avoiding suspicious file URLs.
{
"cwe_ids": [
"CWE-79"
],
"github_reviewed": true,
"github_reviewed_at": "2026-11-09T20:52:49Z",
"nvd_published_at": "2026-11-03T19:18:08Z",
"severity": "HIGH"
}