Skip to content

GHSA-mr34-8733-grr2 CVE-2024-21635 GO-2025-4127

Memos' Access Tokens Stay Valid after User Password Change

High Go
Severity
0.0 / 10
High · CVSS 4.0
Exploit chance (EPSS)
0.31%
Chance of exploitation in the next 30 days. Higher than 23.53% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-287 Improper Authentication
Fix
0.18.2
Upgrade github.com/usememos/memos to this version or later

Description

Summary

Access Tokens are used to authenticate application access. When a user changes their password, the existing list of Access Tokens stay valid instead of expiring. If a user finds that their account has been compromised, they can update their password.

The bad actor though will still have access to their account because the bad actor's Access Token stays on the list as a valid token. The user will have to manually delete the bad actor's Access Token to secure their account. The list of Access Tokens has a generic Description which makes it hard to pinpoint a bad actor in a list of Access Tokens.

Details

To improve Memos security, all Access Tokens will need to be revoked when a user changes their password. This removes the session for all the user's devices and prompts the user to log in again. You can treat the old Access Tokens as "invalid" because those Access Tokens were created with the older password.

PoC

  1. Have 2 devices on hand
  2. Log onto your Memos account on both devices. Notice how Access Tokens are created for each.
  3. On one device, successfully change the password. Refresh the page on the 2nd device and notice how it doesn't log out the user.
  4. On the 2nd device, change the password again. Refresh the page on the 1st device and notice how it doesn't log out the user.

Impact

A bad actor will still have access to the user's account because the Access Token does not expire on a password update. Having multi-factor authentication will vastly improve account security in Account Takeover cases instead of just relying on a password.

Affected versions

Go

PackageVulnerableFixed in
github.com/usememos/memos
< 0.18.2
0.18.2
github.com/usememos/memos
all versions
No fix yet

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

github.com/usememos/memos Go → 0.18.2

go
go get github.com/usememos/memos@v0.18.2 && go mod tidy

Severity breakdown

CVSS 4.0 0.0

CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Attack vector
Network
Attack complexity
Low
Attack requirements
None
Privileges required
Low
User interaction
None
Confidentiality (vulnerable system)
None
Integrity (vulnerable system)
High
Availability (vulnerable system)
None
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
None
Availability (subsequent systems)
None

CVSS 3.1 7.5

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Weakness

CWE-287: Improper Authentication

When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.

How to prevent it
  • Architecture and Design: Use an authentication framework or library such as the OWASP ESAPI Authentication feature.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-gqp3-hfc3-8q54
Memos has an Incorrect Privilege Assignment issue
Medium Also affects github.com/usememos/memos
GHSA-qgjp-5g5x-vhq2
memos lacks file name validation or verification
Medium Also affects github.com/usememos/memos
GHSA-99m2-qwx6-2w6f
memos vulnerability allows arbitrarily modification or deletion registered identity providers
Medium Also affects github.com/usememos/memos
GHSA-mg56-wc4q-rw4w
memos vulnerability allows the creation of arbitrary accounts
High Also affects github.com/usememos/memos
GHSA-8p44-g572-557h
memos vulnerability allows arbitrarily modification or deletion of attachments
Medium Also affects github.com/usememos/memos
GHSA-8jcj-g9f4-qx42
memos vulnerability allows arbitrarily reactions deletion
Medium Also affects github.com/usememos/memos
GHSA-cgrg-86m5-xm4w
Memos Vulnerable to Stored Cross-Site Scripting
Medium Also affects github.com/usememos/memos
GHSA-78j5-8vq7-jxv5
Memos Vulnerable to Path Traversal via the CreateResource Endpoint
Medium Also affects github.com/usememos/memos
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor