PolarLearn is a free and open-source learning program. In 0-PRERELEASE-15 and earlier, POST /api/v1/auth/sign-in creates a valid session for banned accounts before verifying the supplied password. That session is then accepted across authenticated /api routes, enabling account data access and authenticated actions as the banned user.
PolarLearn is a free and open-source learning program. In 0-PRERELEASE-14 and earlier, setCustomPassword(userId, password) and deleteUser(userId) in the account-management module used an inverted admin check. Because of the inverted condition, authenticated non-admin users were allowed to execute both actions, while real admins were rejected. This is a direct privilege-escalation issue in the application.
CVE-2026-25885 is a critical improper authorization vulnerability in PolarLearn versions prior to 0-PRERELEASE-16. It allows unauthenticated attackers to connect to the group chat WebSocket endpoint and subscribe to or send messages in any group chat by supplying a group UUID. This flaw enables attackers to inject unauthorized messages that are stored persistently, not just displayed temporarily, leading to potential misinformation, disruption, or data integrity issues. The vulnerability requires no authentication or user interaction and can be exploited remotely over the network. The CVSS 4.0 base score is 10, reflecting its critical severity due to full network exploitability and high impact on confidentiality, integrity, and availability. European organizations using PolarLearn for educational or collaborative purposes are at risk of unauthorized data manipulation and privacy breaches. Mitigation involves upgrading to versions beyond 0-PRERELEASE-16 once available or implementing strict access controls and WebSocket authentication proxies. Countries with significant adoption of PolarLearn or similar open-source educational platforms, such as the Netherlands, Germany, France, and the UK, are most likely to be affected. Given the critical nature and ease of exploitation, immediate attention is required to prevent abuse and maintain trust in collaborative learning environments.
PolarLearn is a free and open-source learning program. In 0-PRERELEASE-15 and earlier, a timing attack vulnerability in the sign-in process allows unauthenticated attackers to determine if a specific email address is registered on the platform. By measuring the response time of the login endpoint, an attacker can distinguish between valid and invalid email addresses. This occurs because the server only performs the computationally expensive Argon2 password hashing if the user exists in the database. Requests for existing users take significantly longer (~650ms) than requests for non-existent users (~160ms).
CVE-2026-25221 is a Cross-Site Request Forgery (CSRF) vulnerability in the OAuth 2.0 login implementation of PolarLearn versions up to 0-PRERELEASE-15. The flaw arises because the application does not implement or verify the OAuth state parameter during authentication with GitHub and Google providers. This allows attackers to trick victims into logging into the attacker’s account, causing victims’ data and academic progress to be stored under the attacker’s profile. The vulnerability leads to data loss for victims and potential information disclosure to attackers. Exploitation requires user interaction but no prior authentication. The CVSS score is low (2.3), reflecting limited impact on confidentiality and availability, but the integrity of user data is affected. No known exploits are currently reported in the wild. European organizations using PolarLearn should be aware of this risk, especially educational institutions relying on this platform for learning management.
PolarLearn is a free and open-source learning program. Prior to version 0-PRERELEASE-15, the vote API route (`POST /api/v1/forum/vote`) trusts the JSON body’s `direction` value without runtime validation. TypeScript types are not enforced at runtime, so an attacker can send arbitrary strings (e.g., `"x"`) as `direction`. Downstream (`VoteServer`) treats any non-`"up"` and non-`null` value as a downvote and persists the invalid value in `votes_data`. This can be exploited to bypass intended business logic. Version 0-PRERELEASE-15 fixes the vulnerability.