---
id: CVE-2026-58271
title: >-
  Sync-in Server is an open-source platform for file storage, sharing,
  collaboration, and syncing
summary: >-
  Sync-in Server is an open-source platform for file storage, sharing,
  collaboration, and syncing. Prior to version 2.4.0, `POST
  /api/app/sync/register` accepts credentials and a TOTP code to register a
  desktop sync client. On a failed TOT…
severity: medium
cvss: 6.8
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N'
cwe:
  - CWE-307
vendor: Sync-in
product: server
affected:
  - server < 2.4.0
patched:
  - '@sync-in/server 2.4.0'
published: '2026-09-21'
updated: '2026-09-24'
sourceUpdated: '2026-09-24T23:17:12.723'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-58271'
references:
  - url: 'https://github.com/Sync-in/server/security/advisories/GHSA-274f-6w77-8qm9'
    label: security-advisories@github.com
  - url: 'https://github.com/Sync-in/server/security/advisories/GHSA-274f-6w77-8qm9'
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-58271'
  - url: 'https://github.com/Sync-in/server/pull/228'
  - url: >-
      https://github.com/Sync-in/server/commit/b13a4aad5c2b38fe8231a0d007cd08a086ec5bdb
  - url: 'https://github.com/Sync-in/server/releases/tag/v2.4.0'
  - url: 'https://github.com/advisories/GHSA-274f-6w77-8qm9'
tags:
  - nvd
  - cve.org
  - exploit-available
  - ghsa
  - npm
exploitAvailable: true
ssvc:
  exploitation: poc
  automatable: 'no'
  technicalImpact: total
  timestamp: '2026-09-24T22:35:57.537707Z'
epss: 0.00279
epssPercentile: 0.18127
aliases:
  - GHSA-274f-6w77-8qm9
ecosystem: npm
ingestedAt: '2026-09-21T19:51:58.865Z'
---

## Overview

Sync-in Server is an open-source platform for file storage, sharing, collaboration, and syncing. Prior to version 2.4.0, `POST /api/app/sync/register` accepts credentials and a TOTP code to register a desktop sync client. On a failed TOTP, `SyncClientsManager.register()` calls `updateAccesses(user, ip, false)`, which hits a freeze branch that writes `passwordAttempts` back unchanged. The counter never reaches `USER_MAX_PASSWORD_ATTEMPTS` (10) and the lockout gate never fires. A successful guess returns a `{clientId, clientToken}` pair. The token can be exchanged via `POST /api/app/sync/auth/cookie` for a full JWT. While the code is valid, the attacker can also call `POST /api/auth/2fa/disable` to permanently remove MFA. Version 2.4.0 patches the issue.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Package advisory (CVE-2026-58271)

Affected packages:

- `@sync-in/server <= 2.3.0`

Patched in:

- `@sync-in/server 2.4.0`

Source: https://github.com/advisories/GHSA-274f-6w77-8qm9
