Server: "Sync Vault" does not really sync. Possible data loss

Created on 3 Aug 2018  路  10Comments  路  Source: bitwarden/server

Syncing seems not really being a sync, but rather a "force pull". This leads into data loss if used incorrectly.

Steps to reproduce:

  • Edit existing Item in Vault 1 [e.g. Browser] (Add OTP)
  • Switch over to Desktop Vault
  • Edit same Item there (Upload an attachment)
  • Go back to Browser Vault and click "Sync Wallet"

Expected behavior:

  • Item has OTP and Attachment

Actual behavior:

  • Item has only Atachment
  • OTP is lost

Possible solutions:

  • Auto "sync" befor editing items
  • Warn user about the fact, that he should sync before
  • Proper merge strategy

Most helpful comment

Even if a diff is not shown to the user, at the very least duplicating the item with " (duplicate 1)" at the end etc. will prevent data loss.

All 10 comments

There are plans to improve syncs and make them more real-time (similar to how the mobile apps work by pushing).

Thank you! :)

keep up with the good work! I just migrated from Lastpass, suffering data loss and bad User interfaces. Bitwarden does a way better Job!

Had experienced TOTP loss a couple of times. was about to enter a ticket but I'm +1 this one.

Steps to reproduce (in my case):

  1. On the desktop app enter a new item.
  2. Open the mobile app to scan the QR code for 2FA.
  3. While having the desktop app open, change the title (or any field).
  4. The information that is saved is the information from the desktop (without the TOTP previous entered).

I found a way around this behavior -> relaunch the app after changing values from the mobile app.

I see the same thing. It would be nice if you were notified when there was a conflict and offered a way to merge the data. Instead of silently overwriting the data with the latest version.

@kspearrin
Even post-sync-fixes (these really help a lot, making this problem less prevalent) I have experience this when something prevents the sync from happening. IE mobile has problems getting signal etc.

There should be a merge logic where each client stores:

  1. State identifier at time of last sync. (post-sync)
  2. State identifier of current local state.

Then works on the logic:

If a new sync is initiated and the remote state trying to be pulled is not equal to the state identified in number 1 (the state at the end of the last sync) then show a window that diffs the two and ask the user what to do.

I can confirm I have lost data (Having to go run around trying to restore accounts) due to this issue. I would like to point out that you don't even have to edit the item on the second device. If you simply sync, it will over-ride the new data with the old data.

I confirm this behavior. I lost a TOTP key today.
This is absolutely terrible. Sync conflicts have to be managed somehow. I wish I could help.

Even if a diff is not shown to the user, at the very least duplicating the item with " (duplicate 1)" at the end etc. will prevent data loss.

At the very least a sync should not overwrite the entire entry saved on the server but only the fields that were changed.

This totally needs to be fixed. Just keep a copy of the conflicting entry as a quick fix until you find a way to display these conflicts in a way for the user to fix the conflict.

Was this page helpful?
0 / 5 - 0 ratings