Read the docs
TI-2026-32451 Aliases CVE-2026-44522GHSA-g49p-4qxj-88v3

Note Mark: Arbitrary File Write via Path Traversal in Asset Names Leading to Remote Code Execution

Priority HIGH 72CWE-20Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
Passive
Attack complexity
Low
Attack requirements
None
Impact type
—
Confidentiality · integrity · availability
High · High · High
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub.

Summary

Note Mark is an open-source note-taking application. From 0.13.0 to before 0.19.4, the Note Mark application allows authenticated users to upload assets to notes via POST /api/notes/{noteID}/assets, where the asset filename is provided through the X-Name HTTP request header. This value is stored directly in the database without any sanitization or validation - no path separator filtering, no directory traversal sequence rejection, and no use of filepath.Base() to strip directory components. The unsanitized name is persisted as-is in the note_assets table (Name column, varchar(80)). When an administrator subsequently runs the data export CLI commands (note-mark migrate export-v1 or note-mark migrate export), the stored asset name is passed directly into filepath.Join() and path.Join() calls as part of the output file path argument to os.Create(). Since Go's filepath.Join() resolves ../ sequences during path normalization, an attacker-controlled asset name containing directory traversal sequences causes the export process to write files to arbitrary locations on the filesystem, completely outside the intended export directory. This vulnerability is fixed in 0.19.4.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00565 47th percentileScored 2026-11-07
Fix Fixed note-mark (enchant97): 0.19.4github.com/enchant97/note-mark/backend (Go): 0.0.0-20260501152243-db3f72bff780

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
enchant97note-mark0.13.0 to before 0.19.40.19.4Patch availableCNA
—github.com/enchant97/note-mark/backend (Go)before 0.0.0-20260501152243-db3f72bff7800.0.0-20260501152243-db3f72bff780Patch availableGHSA-g49p-4qxj-88v3
  • note-mark Vendorenchant97 Affected 0.13.0 to before 0.19.4 Fixed in 0.19.4 Patch available CNA
  • github.com/enchant97/note-mark/backend (Go) Vendor— Affected before 0.0.0-20260501152243-db3f72bff780 Fixed in 0.0.0-20260501152243-db3f72bff780 Patch available GHSA-g49p-4qxj-88v3

Remediation

  • Fix · CNA note-mark (enchant97) Fixed in 0.19.4
  • Fix · GHSA-g49p-4qxj-88v3 github.com/enchant97/note-mark/backend (Go) Fixed in 0.0.0-20260501152243-db3f72bff780 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-44522
  2. 2026-10-03 Alias added: GHSA-g49p-4qxj-88v3
  3. 2026-10-25 EPSS moved to the below the 50th percentile

References

  • TI-2026-32452 Note Mark: JWT Secret Weakness allows Full Account Takeover via token forgery CVSS 3.1CRITICAL 10.0
  • TI-2026-30126 Note Mark: OIDC-registered users authenticated by submitting password "null" CVSS 3.1CRITICAL 9.4
  • TI-2026-29056 Note Mark has Stored XSS via Unrestricted Asset Upload CVSS 3.1HIGH 8.7
  • TI-2026-37275 Note Mark: Path traversal via unsanitized book/note slug in migrate export (sibling of GHSA-g49p) CVSS 4.0HIGH 8.6
  • TI-2026-37276 Note Mark: Unauthenticated disclosure of soft-deleted note metadata via deleted=true on public books in note-mark CVSS 3.1MEDIUM 5.3
  • TI-2026-30127 Note Mark: Unauthenticated read of notes and assets in soft-deleted public books CVSS 3.1MEDIUM 5.3
See all 8 →

Sources