The root cause was improper deserialization control of the 'ID' field in PATCH request handlers. The pre-patch struct definitions (UserPatch/MemoPatch/etc.) allowed clients to submit arbitrary IDs via JSON payloads. By adding json:"-" to the ID fields in the commit dca35bd, the server stopped accepting client-provided IDs, forcing the use of authenticated context for authorization. While the primary exploit targeted user data (UserPatch), the same pattern existed in other PATCH handlers (Memo/Resource/Shortcut), making them potentially vulnerable too. The 'high' confidence for UserPatch stems from the CVE's explicit description of user data modification, while others are marked 'medium' due to structural similarity but less explicit evidence of exploitation.