Sceawere

Vulnerability Detail

CVE-2026-50554UPDATED Verified Sceawere Triage Sources: NVD / CISA KEV

Note Mark Metadata Disclosure

Vulnerability Metadata

Severity
Medium
Score / CVSS
5.3
Creation Date
3h ago
Vendor
enchant97
Product
note-mark
Attack Type
CWE-200: Exposure of Sensitive Information to an Unauthorized Actor
Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Attack Complexity
LOW

Narrative and Response

Description

Note Mark is an open-source note-taking application. Prior to version 0.19.5, GET /api/books/{bookID}/notes is an unauthenticated endpoint that accepts a "deleted" query parameter. When the request is ?deleted=true, the service runs the query with Unscoped() (bypassing GORM's soft-delete scope) but keeps the read-authorization clause as "owner_id = ? OR is_public = ?". As a result, any unauthenticated caller can enumerate the metadata of soft-deleted ("trashed") notes belonging to any public book — notes the owner explicitly deleted and expected to be removed from public view. This issue has been patched in version 0.19.5.

Executive Summary

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Executive Summary Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Technical Details

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Detailed Technical Analysis Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Mitigations

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Remediation & Mitigations Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

References

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Intelligence References Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Additional Metadata

{
  "score": "5.3",
  "pubDate": "2026-09-03T16:17:25.020Z",
  "pubdate": "2026-09-03T16:17:25.020Z",
  "executiveSummary": "A security vulnerability has been identified in Note Mark, an open-source note-taking application, affecting all versions prior to 0.19.5. This vulnerability is classified as an improper access control and information disclosure issue. It allows unauthenticated remote attackers to obtain sensitive metadata from soft-deleted ('trashed') notes. The impact is significant as users expect deleted content to be completely inaccessible, particularly to unauthorized external parties.\nThe flaw lies within the implementation of the API endpoint responsible for retrieving notes. By manipulating query parameters, an attacker can bypass the standard soft-delete filtering mechanism. This issue poses a privacy risk, potentially exposing historical data structure, titles, and creation patterns of private notes that were previously associated with public books. Exploitation does not require authentication or special privileges, making the vulnerability highly accessible to any network-based attacker with knowledge of target book identifiers.\nThe risk implications involve potential intelligence gathering on targeted individuals or organizations using Note Mark, as deleted notes often contain sensitive information that was discarded due to confidentiality concerns.",
  "technicalDetails": "The root cause of the vulnerability resides in the backend database querying logic of Note Mark, specifically in the handling of the 'GET /api/books/{bookID}/notes' endpoint. Under normal operating conditions, Note Mark utilizes GORM (an Object Relational Mapper for Go) to manage database interactions, which employs a 'soft-delete' feature. When a user deletes a note, GORM flags the record by setting a 'deleted_at' timestamp rather than performing a hard delete from the database physical storage. Subsequent standard queries automatically filter out these soft-deleted records.\nHowever, the endpoint accepts a 'deleted' query parameter. When a client issues a request containing '?deleted=true', the application code invokes GORM's 'Unscoped()' method. The 'Unscoped()' method explicitly instructs the ORM to ignore the soft-delete state and retrieve all records, including those where 'deleted_at' is populated. While this functionality is intended for administrative or recovery purposes, the application fails to restrict its usage to authenticated and authorized owners.\nFrom a framework perspective, GORM's GORM.DeletedAt model struct is designed to intercept SQL queries at the driver level to append a 'WHERE deleted_at IS NULL' clause dynamically. The use of GORM's Unscoped() method completely deactivates this middleware-like behavior for the duration of the transaction or query context. This architectural detail means that once Unscoped() is called, the application logic assumes the responsibility of manually applying equivalent or more restrictive security boundaries.\nThe database query combines the 'Unscoped()' modifier with an authorization clause: 'owner_id = ? OR is_public = ?'. For a public book, the 'is_public' condition evaluates to true. Because the application processes unauthenticated requests and permits them to query public books, the authorization check succeeds based solely on the public status of the parent book. The system does not verify if the unauthenticated requester should have access to the unscoped (deleted) items associated with that book.\nIn the vulnerable Note Mark implementation, the developer attempted to maintain authorization by preserving the 'owner_id = ? OR is_public = ?' check within the same database query. However, this logic suffers from a structural breakdown: a note being part of a public book does not imply that its deleted history should remain public. When a note is soft-deleted, its implicit visibility status changes; it is no longer considered an active public asset. By failing to evaluate the interaction between 'Unscoped()' and 'is_public', the application treats active public notes and deleted public notes identically, presenting a severe logical bypass.\nConsequently, the attack flow is straightforward: an unauthenticated attacker sends a crafted HTTP GET request to the target endpoint specifying a public book ID and appending the '?deleted=true' parameter. The server executes the unscoped query, matches the public book criteria, and returns the metadata of all notes—including those previously deleted by the owner. This bypasses the expected privacy boundaries, leading to unauthorized metadata enumeration."
}
CVE-2026-50554: Note Mark Metadata Disclosure (MEDIUM Severity, CVSS: 5.3) - Sceawere