Advisory Database
  • Advisories
  • Dependency Scanning
  1. npm
  2. ›
  3. @sync-in/server
  4. ›
  5. CVE-2026-58272

CVE-2026-58272: Sync-in Server has Username/Login Enumeration via Timing Side-Channel on POST /api/auth/login (incomplete fix of the prior timing-attack advisory)

September 22, 2026

validateUser() in backend/src/authentication/providers/mysql/auth-provider-mysql.service.ts returns immediately when the supplied login/email does not match any account, without ever calling comparePassword():

async validateUser(loginOrEmail: string, password: string, ip?: string, scope?: AUTH_SCOPE): Promise { let user: UserModel try { user = await this.usersManager.findUser(loginOrEmail, false) } catch (e) { … } if (!user) { this.logger.warn(…) return null // <– comparePassword() is never reached here } return await this.usersManager.logUser(user, password, ip, scope) }

comparePassword() (backend/src/common/functions.ts) already contains a dummy-hash branch that was clearly added to defend against exactly this class of attack:

export async function comparePassword(password: string, hash?: string | null): Promise { if (!hash) { // No hash, waste time for time-based attacks await bcrypt.compare(password, DUMMY_PASSWORD_HASH) return false } return await bcrypt.compare(password, hash) }

The problem is that this protection only runs when comparePassword() is actually invoked with a falsy hash. Because validateUser() short-circuits with return null as soon as findUser() comes back empty, the “account doesn’t exist” path skips all cryptographic work entirely, while the “account exists, wrong password” path always performs a real bcrypt comparison (cost factor 10, ~100ms+). The two outcomes are trivially distinguishable by response time.

There’s already a published advisory in this repo for “Username Enumeration via Timing Attack” - this looks like the same underlying issue surfacing through a different call path (the early return in validateUser()) that the existing fix (the dummy-hash branch in comparePassword()) doesn’t actually reach, rather than a brand new vulnerability class.

References

  • github.com/Sync-in/server/commit/b80efe04574039a7a302c0e1007f03a7dbe6a633
  • github.com/Sync-in/server/releases/tag/v2.4.1
  • github.com/Sync-in/server/security/advisories/GHSA-29hq-23m2-2j47
  • github.com/advisories/GHSA-29hq-23m2-2j47
  • nvd.nist.gov/vuln/detail/CVE-2026-58272

Code Behaviors & Features

Detect and mitigate CVE-2026-58272 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →

Affected versions

All versions before 2.4.1

Fixed versions

  • 2.4.1

Solution

Upgrade to version 2.4.1 or above.

Impact 5.3 MEDIUM

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

Learn more about CVSS

Weakness

  • CWE-208: Observable Timing Discrepancy

Source file

npm/@sync-in/server/CVE-2026-58272.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Sun, 08 Nov 2026 00:16:15 +0000.