Wire — современная платформа для безопасного обмена сообщениями и файлами, которая позиционируется как решение с высоким уровнем защиты данных благодаря шифрованию и прозрачности кода. Несмотря на заверения разработчиков о безопасности, эксперты выявили несколько важных нюансов, которые способны повлиять на восприятие пользователей и общую конфиденциальность передаваемых данных. В первую очередь речь идет о механизме удаления файлов — оказывается, удаление в клиентском приложении не гарантирует тотальное стирание данных с серверов Wire. Эта особенность отражает противоречия и проблемы, связанные с управлением файлами и их хранением на инфраструктуре Wire, что может иметь серьезные последствия для безопасности и приватности пользователей. Подход к шифрованию и загрузке файлов в Wire построен на использовании AES-256-CBC — алгоритма, который применяется для шифрования файлов непосредственно на стороне клиента.
Защита включает использование криптографически надежных методов генерации случайных значений, таких как getRandomValues для инициализационного вектора и ключа, а также SHA-256 для проверки целостности файла после скачивания. Такой комплекс мер обеспечивает высокий уровень безопасности при передаче и хранении зашифрованных данных. При загрузке зашифрованный файл помещается на облачные хранилища AWS S3, откуда скачивается с помощью подписанных URL, действующих ограниченное время. Интересно, что процесс удаления в применении к файлам в Wire происходит не так, как могло бы показаться большинству пользователей. Когда файл стирается через веб-приложение или мобильный клиент, удаляются лишь метаданные — ключи шифрования и ссылки на файл в локальном IndexedDB браузера.
Сам файл, размещенный на серверах Wire, остается доступным до тех пор, пока не закончится срок его хранения, что для большинства личных аккаунтов составляет один год. Для платных клиентов срок может растягиваться до момента, когда пользователь запросит удаление вручную. Таким образом ключевая проблема в том, что физическое удаление файлов не происходит автоматически с клиентского действия удаления, что вносит путаницу и создаёт ложное ощущение безопасности. Это также обусловлено тем, что Wire не предусматривает удобного интерфейса или функции, которая позволила бы быстро и бесследно «стереть» файл с серверов – удаление остается процедурой, выполняемой с сервера через специализированный API-запрос, который известен, но не встроен в клиентское приложение. Если ключ и метаданные файла были удалены самостоятельно или по ошибке, доступ к этому серверному API становится невозможен, и файл остается безвозвратно на сервере.
Еще одним немаловажным аспектом оказалась уязвимость, связанная с недостаточным контролем доступа. По умолчанию после загрузки файл доступен всем, у кого есть ссылка с идентификатором, основанным на UUIDv4 — сложном уникальном ключе высокой энтропии, что затрудняет случайное обнаружение файла. Тем не менее, при наличии этого ключа файл можно скачать без дополнительной аутентификации и проверки прав пользователя. Это противоречит описанию в официальной документации Wire, согласно которой доступ к файлам должен ограничиваться участниками беседы, в которой файл был загружен. Такая ситуация увеличивает риск утечки информации, особенно если кто-то получил доступ к ссылкам на файлы, не будучи частью переписки.
Интересно отметить, что наличие токена доступа (Asset-Token), который повышает безопасность и ограничивает доступ к файлам, введено серверной частью Wire. При использовании параметра public=false на этапе загрузки, сервер требует предоставления этого токена для скачивания файла, что предотвращает несанкционированный доступ. Пока что этот механизм не реализован в веб-клиенте для персональных аккаунтов, но кажется активным в мобильных приложениях. Такой метод значительно улучшает контроль доступа и снижает вероятность эксплуатации пробелов в защите. Анализ политики хранения данных выявил значительные расхождения между различными клиентами Wire.
Веб-версия и iOS-приложение по умолчанию используют параметр хранения файлов с истечением срока через год. Android-версия же применяет другую стратегию — файлы хранятся под «постоянным» режимом до 564 недель, что составляет почти одиннадцать лет. Это может создавать иллюзию временного хранения, тогда как на практике файлы с Android-устройств лежат значительно дольше. Такой разрыв в работе разных клиентов усложняет единое управление данными и вызывает вопросы о согласованности политики конфиденциальности. Когда речь заходит о хранении ключей, Wire также имеет особенности: даже после того, как файл удаляется с сервера или истекает срок его хранения, ключи шифрования могут оставаться в локальной базе IndexedDB пользователей.
При этом нет предусмотренного механизмa для автоматического или комфортного удаления устаревших ключей. В результате, несмотря на то, что физический файл стал недоступен, ключи остаются и хранятся локально. Это потенциально увеличивает риски в случае взлома устройства или компрометации аккаунта, ведь злоумышленник, получив доступ к ключам, сможет расшифровать ранее скачанные файлы. Также примечательно, что по метаданным загрузки файла можно определить, с какого именно клиента Wire он был отправлен, будь то мобильное приложение на Android, iOS или веб-версия. В частности, информация о политике хранения и наличии Asset-Token служит своеобразным «отпечатком», позволяющим восстанавливать детали использования клиента.
Для атакующего это дает возможность косвенно следить за привычками пользователей или устройствами, которые они применяют для обмена файлами. Все эти выявленные особенности несут в себе угрозу распространения неверных представлений у пользователей Wire относительно уровня защиты и управления файлами. Многие полагают, что удаление из переписки или веб-интерфейса означает полное стирание данных, однако реальность показывает, что файлы могут оставаться на серверах длительное время, а контроль доступа не настолько жесткий, как хотелось бы. Кроме того, отсутствие единого стандарта в политиках хранения между клиентами и локальная сохранность ключей добавляют неопределенности. В ответ на представленные выводы представители Wire подтвердили, что разработка ведется в соответствии с текущими спецификациями, а вопросы безопасности находятся в сфере постоянного внимания команды.
Было отмечено, что платные клиенты имеют больше возможностей по управлению сроками хранения файлов, а в будущем планируется внедрение новой функции Secure File Sharing, которая позволит улучшить контроль над передачей и удалением данных и повысить прозрачность для конечных пользователей. Таким образом, для пользователей Wire важно осознавать, что операция удаления файла из переписки не означает мгновенного и полного удаления файла с серверной части. Принцип работы с файлами при текущей реализации строится на разграничении между локальными метаданными и физическим размещением файлов, где последние подчиняются своим политикам хранения и могут оставаться доступными без клиента при наличии идентификатора файла. Знание этих нюансов позволит лучше оценивать риски при обмене конфиденциальной информацией и принимать дополнительные меры для обеспечения безопасности. В заключение стоит подчеркнуть, что несмотря на выявленные недостатки, архитектура Wire построена на надежных криптографических основах, а указанные проблемы касаются организационного и пользовательского опыта, а не технических недостатков шифрования.
Ожидается, что внедрение новых функций и усовершенствование клиентских приложений смогут устранить многие из существующих вопросов, а пока рекомендуется не полагаться на удаление файлов как на абсолютный механизм защиты и внимательно следить за доступом к файл-ссылкам и ключам шифрования.