anotherim/src/main/java/eu/siacs/conversations/services
Daniel Gultsch 09f6343ced
Security: Introduce backup file format v2
This switches the SQL based backup format to something JSON based.

The SQL based format has always been prone to SQL injections that, for example, could delete other messages or preexisting accounts in the app. This hasn’t been a concern this far because why would anyone purposely try to restore a faulty backup? However the argument has been made that a user can be socially engineered to restore an exploited backup file.
Before version 2.12.8 a third party app could even trigger the restore process, leaving the backup password entry dialog the only hurdle.
On top of that it has been demonstrated that a backup file can be crafted in a way that puts preexisting credentials into a 'pending' message to an attacker ultimately leading to that information being leaked.

While destorying information has always been deemed an acceptable risk, leaking information is one step too far.

Starting with Conversations 2.12.9 Conversations will no longer be able to read v1 backup files. This means if you are restoring on a new device and you have a v1 backup file you must first install Conversations <= 2.12.8, restore the backup, and then upgrade to Conversations >= 2.12.9.

ceb2txt¹ has support for v2 backup files. Conceivably ceb2txt could be extended to convert between v1 and v2 file formats. (ceb2txt already recreates the database from v1 files; It is relatively straight forward to create v2 files from that database. Pull requests welcome.)

¹: https://github.com/iNPUTmice/ceb2txt/
2023-08-17 12:07:51 +02:00
..
AbstractConnectionManager.java Transferables interface needs to differentiate between 0 and null file size 2021-05-17 15:51:21 +02:00
AbstractQuickConversationsService.java remove channel discovery from Google Play build flavor 2023-08-08 10:39:36 +02:00
AppRTCAudioManager.java prepare JingleRtpConnection for content-adds 2022-11-28 08:59:23 +01:00
AppRTCBluetoothManager.java add permission checks to appRTCBluetoothManager 2022-08-05 10:56:19 +02:00
AppRTCProximitySensor.java automated code clean up 2021-01-23 09:25:34 +01:00
AttachFileToConversationRunnable.java use full file name for all new files 2022-02-22 16:05:02 +01:00
AvatarService.java automated code clean up 2021-01-23 09:25:34 +01:00
BarcodeProvider.java automated code clean up 2021-01-23 09:25:34 +01:00
ChannelDiscoveryService.java make it easier to disable muclumbus in Config 2022-10-12 14:47:02 +02:00
ContactChooserTargetService.java code clean up in ContactChooserTargetService 2022-12-11 20:13:09 +01:00
EventReceiver.java automated code clean up 2021-01-23 09:25:34 +01:00
ExportBackupService.java Security: Introduce backup file format v2 2023-08-17 12:07:51 +02:00
MediaPlayer.java AudioPlayer: disable screen and switch to earpiece when holding phone to ear 2018-09-01 18:23:07 +02:00
MemorizingTrustManager.java limit posh files to 10k 2022-03-30 09:25:05 +02:00
MessageArchiveService.java refactor SASL choice into factory; remove unused TagWriter 2022-09-06 09:25:23 +02:00
MessageSearchTask.java search individual conversations. fixes #3243 2020-08-29 08:16:08 +02:00
NotificationService.java use plurals for missed call strings 2022-11-19 08:14:50 +01:00
ShortcutService.java automated code clean up 2021-01-23 09:25:34 +01:00
UnifiedPushBroker.java UP: add custom extensions for app<->distributor interaction 2023-06-26 16:09:01 +02:00
UnifiedPushDistributor.java UP: add custom extensions for app<->distributor interaction 2023-06-26 16:09:01 +02:00
XmppConnectionService.java Use libidn for stringprep 2023-06-27 16:31:01 +02:00