CVE-2026-40262
Description
Note Mark is an open-source note-taking application. In versions 0.19.1 and prior, the asset delivery handler serves uploaded files inline and relies on magic-byte detection for content type, which does not identify text-based formats such as HTML, SVG, or XHTML. These files are served with an empty Content-Type, no X-Content-Type-Options: nosniff header, and inline disposition, allowing browsers to sniff and render active content. An authenticated user can upload an HTML or SVG file containing JavaScript as a note asset, and when a victim navigates to the asset URL, the script executes under the application's origin with access to the victim's authenticated session and API actions. This issue has been fixed in version 0.19.2.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
github.com/enchant97/note-mark/backendGo | < 0.0.0-20260411145018-6bb62842ccb9 | 0.0.0-20260411145018-6bb62842ccb9 |
Affected products
1Patches
16bb62842ccb9(backend) prevent XSS attack from opening attachment
1 file changed · +12 −4
backend/handlers/assets.go+12 −4 modified@@ -144,13 +144,21 @@ func (h AssetsHandler) GetNoteAssetContentByID( } return &huma.StreamResponse{ Body: func(ctx huma.Context) { - ctx.SetHeader("Content-Type", info.MimeType) + ctx.SetHeader("X-Content-Type-Options", "nosniff") + if info.MimeType == "" || info.MimeType == "text/html" || info.MimeType == "image/svg+xml" { + ctx.SetHeader("Content-Type", "application/octet-stream") + ctx.SetHeader( + "Content-Disposition", + fmt.Sprintf("attachment; filename=\"%s\"", asset.Name)) + } else { + ctx.SetHeader("Content-Type", info.MimeType) + ctx.SetHeader( + "Content-Disposition", + fmt.Sprintf("inline; filename=\"%s\"", asset.Name)) + } ctx.SetHeader( "Last-Modified", core.TimeIntoHTTPFormat(info.LastModified)) - ctx.SetHeader( - "Content-Disposition", - fmt.Sprintf("inline; filename=\"%s\"", asset.Name)) writer := ctx.BodyWriter() io.Copy(writer, stream) stream.Close()
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-9pr4-rf97-79qhghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2026-40262ghsaADVISORY
- github.com/enchant97/note-mark/commit/6bb62842ccb956870b9bf183629eba95e326e5e3nvdWEB
- github.com/enchant97/note-mark/releases/tag/v0.19.2nvdWEB
- github.com/enchant97/note-mark/security/advisories/GHSA-9pr4-rf97-79qhnvdWEB
News mentions
0No linked articles in our index yet.