Skip to content

Vijkunja has Weak Password Policy Combined with Persistent Sessions After Password Change

Critical severity GitHub Reviewed Published Feb 25, 2026 in go-vikunja/vikunja • Updated Feb 27, 2026

Package

gomod code.vikunja.io/api (Go)

Affected versions

<= 0.24.6

Patched versions

None

Description

Summary
The application allows users to set weak passwords (e.g., 1234, password) without enforcing minimum strength requirements. Additionally, active sessions remain valid after a user changes their password.

An attacker who compromises an account (via brute-force or credential stuffing) can maintain persistent access even after the victim resets their password.

Details

  1. Weak passwords are accepted during registration and password change.
  2. No minimum length or strength validation is enforced.
  3. After changing the password, previously issued session tokens remain valid.
  4. No forced logout occurs across active sessions.

Attack scenario:

Attacker guesses or obtains weak credentials.
Logs in and obtains active session token.
Victim changes password.
Attacker continues accessing the account using the old session.

Steps to Reproduce

1. Register using a weak password (e.g., 12345678 ).
2. Log in and Password Change functionality.
3. Change account password with single character (e.g., 1 or a )
4. Reuse the old session.
5. Observe that access is still granted.

Impact

  • Persistent account takeover
  • Unauthorized access to sensitive data
  • Increased brute-force success probability
  • Elevated risk for administrative accounts

The combination of weak password controls and improper session invalidation significantly increases both exploitability and impact.

Recommendation
Password Policy Improvements:

  • Enforce strong password policies – Require passwords to be 8–16+ characters with a mix of uppercase, lowercase, numbers, and special characters.
  • Block common passwords – Use a blacklist of commonly used and breached passwords.
  • Use secure hashing – Store passwords using strong salted hashing algorithms like bcrypt or Argon2.
  • Enable account lockout – Limit failed login attempts to reduce brute-force risk.
  • Educate users – Promote strong password practices and phishing awareness.

Session Management Fix:

  • Invalidate all active sessions upon password change
  • Revoke refresh tokens (if applicable)
  • Implement token/session versioning
  • Regenerate session IDs after credential updates
  • Log and notify users of password change events

Implementing both controls will significantly reduce the risk of persistent account compromise.

Weak Password Policy Combined with Persistent Sessions After Password Change POC

A fixed version is available at https://github.com/go-vikunja/vikunja/releases/tag/v2.0.0.

References

@kolaente kolaente published to go-vikunja/vikunja Feb 25, 2026
Published to the GitHub Advisory Database Feb 25, 2026
Reviewed Feb 25, 2026
Published by the National Vulnerability Database Feb 25, 2026
Last updated Feb 27, 2026

Severity

Critical

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

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

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

EPSS score

Exploit Prediction Scoring System (EPSS)

This score estimates the probability of this vulnerability being exploited within the next 30 days. Data provided by FIRST.
(6th percentile)

Weaknesses

Weak Password Requirements

The product does not require that users should have strong passwords, which makes it easier for attackers to compromise user accounts. Learn more on MITRE.

Insufficient Session Expiration

According to WASC, Insufficient Session Expiration is when a web site permits an attacker to reuse old session credentials or session IDs for authorization. Learn more on MITRE.

CVE ID

CVE-2026-27575

GHSA ID

GHSA-3ccg-x393-96v8

Source code

Credits

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.