Часть кода WhatsApp переписали с использованием языка Rust Обложка: Skyread

Часть кода WhatsApp переписали с использованием языка Rust

Новости
Главное:

  • Разработчики WhatsApp переписали часть кода мессенджера на языке Rust для повышения безопасности.
  • Функция на Rust обеспечивает предупреждение об опасных вложениях, предотвращая эксплуатацию уязвимостей, подобных Stagefright.
  • Реализация на Rust показала улучшенную производительность и безопасность, теперь используется на всех основных платформах WhatsApp.

Команда разработчиков WhatsApp, входящая в состав Meta, объявила о том, что значительная часть кода мессенджера была переписана на языке программирования Rust с целью повышения уровня безопасности. В частности, на этом языке реализована функция, предупреждающая пользователей об опасных медиа-вложениях, таких как изображения и видео, которые могут содержать вредоносный код.

Такое решение стало ответом на известную уязвимость Stagefright, обнаруженную в 2015 году на устройствах под управлением Android. Эта уязвимость позволяла атакующим воспользоваться ошибкой в обработке медиафайлов операционной системой, что могло привести к получению контроля над устройством. Ранее разработчики WhatsApp применили кроссплатформенную библиотеку на C++ под названием «wamedia» для отправки и обработки MP4-файлов, изменив её так, чтобы выявлять нестандартные медиафайлы и предотвращать возникновение ошибок в уязвимых библиотеках ОС. Это обеспечило защиту пользователей ещё до выхода обновлений самой системы.

Далее команда приступила к параллельной разработке версии библиотеки на Rust. В ходе работы использовались дифференциальное фаззинг-тестирование, а также комплексные интеграционные и модульные тесты, чтобы гарантировать совместимость новой реализации с классической на C++. Среди сложностей проекта были увеличение размера исполняемого файла и адаптация системы сборки для разных платформ. В итоге 160 тысяч строк кода на C++ были заменены 90 тысячами строк на Rust, которые сопровождаются тестами. Новая версия показала лучшие показатели по производительности и расходу памяти во время работы.

Rust-версия библиотеки была внедрена для всех пользователей WhatsApp на основных платформах: Android, iOS, Mac, веб-версии, носимых устройствах и других. С течением времени функционал расширился дополнительными проверками на соответствие структур в различных типах файлов, чтобы защищать нижележащие библиотеки от дифференциальной эксплуатации. Кроме того, внимание уделялось потенциально рискованным форматам, например PDF, и случаям маскировки одних типов файлов под другие с использованием поддельных расширений или MIME-типов. Также внедрена маркировка известных опасных файлов, например исполняемых, для их специальной обработки в интерфейсе приложения.

Разработчики отмечают, что большинство серьёзных уязвимостей в отрасли связаны с проблемами безопасности памяти в коде на C и C++. Поэтому они реализуют стратегию, включающую минимизацию площади атаки на уровне продукта, повышение безопасности существующего C/C++-кода и выбор безопасных в плане работы с памятью языков, таких как Rust, для нового кода.

Кроме перехода на Rust, WhatsApp усилил защиту с помощью технологий контроля потока исполнения (CFI), усовершенствованных распределителей памяти и более безопасных API для работы с буферами. Разработчики, работающие с C и C++, проходят специальное обучение, получают методические рекомендации и подлежат автоматическому анализу безопасности.

В свете недавних выявленных уязвимостей, связанных со вредоносными медиафайлами, распространяемыми через групповые чаты, WhatsApp также внедрил режим «Строгие настройки учётной записи». Эта функция автоматически блокирует подозрительные вложения, звонки и другие потенциальные угрозы от неизвестных контактов, поднимая уровень конфиденциальности и безопасности для пользователей.

Команды безопасности WhatsApp и Meta ожидают, что использование Rust в проекте будет расширяться и углубляться в ближайшие годы, что позволит ещё более эффективно обеспечивать защиту миллиардной аудитории мессенджера.

Топики: