Разработчики Meta* рассказали, что они переписали часть кода WhatsApp на языке Rust, чтобы внедрить новый уровень безопасности. Так, на нём написана функция предупреждения об опасных вложениях, таких как изображения или видео.
Такое решение было принято после обнаружения уязвимости на уровне ОС Android 2015 года. Тогда устройства Android и работающие на них приложения стали уязвимы для атак Stagefright, которые эксплуатировали ошибку в обработке медиафайлов библиотеками, предоставляемыми операционной системой.
Уже тогда в мессенджере поняли, что кроссплатформенная библиотека C++ «wamedia», разработанная WhatsApp для отправки и согласованного форматирования файлов MP4, может быть модифицирована для обнаружения файлов, не соответствующих стандарту, а это, в свою очередь, может вызывать ошибки в уязвимой библиотеке ОС на стороне получателя. Внедрение такой проверки помогло защитить пользователей WhatsApp от уязвимости Stagefright гораздо быстрее, чем если бы они ждали обновления ОС.
Тогда в мессенджере разработали версию wamedia на Rust параллельно с оригинальной версией на C++. Разработчики использовали дифференциальное фаззинг-тестирование, а также обширные интеграционные и модульные тесты для обеспечения совместимости между двумя реализациями. Двумя основными препятствиями стали первоначальное увеличение размера бинарного файла из-за внедрения стандартной библиотеки Rust и поддержка системы сборки для различных платформ. В итоге разработчики заменили 160 тысяч строк кода на C++ (без тестов) на 90 тысяч строк кода на Rust (с тестами). Версия на Rust продемонстрировала преимущества в производительности и использовании памяти во время выполнения. Тогда Rust внедрили для всех пользователей WhatsApp и на многих платформах: Android, iOS, Mac, Web, Wearables и других.
Со временем разработчики добавили больше проверок на несоответствие структур в определённых типах файлов, чтобы помочь защитить нижестоящие библиотеки от попыток дифференциальной эксплуатации парсера. Кроме того, они проверяли файлы более высокого риска, даже если они структурно соответствовали требованиям, на наличие индикаторов риска. Например, PDF-файлы часто являются средством распространения вредоносного ПО. Кроме того, разработчики обнаруживают случаи, когда один тип файла маскируется под другой, используя поддельное расширение или MIME-тип. Наконец, они единообразно помечают известные опасные типы, такие как исполняемые файлы или приложения, для специальной обработки в пользовательском интерфейсе приложения.
Ежемесячно эти библиотеки распространяются среди миллиардов пользователей.
«Как и многие другие в отрасли, мы обнаружили, что большинство серьёзных уязвимостей, о которых мы сообщали, были связаны с проблемами безопасности памяти в коде, написанном на языках программирования C и C++. Для борьбы с этим мы инвестируем в три параллельные стратегии:
разработка продукта таким образом, чтобы минимизировать ненужное воздействие на поверхность атаки;
инвестирование в обеспечение безопасности оставшегося кода на C и C++;
выбор языков, безопасных для работы с памятью, по умолчанию, а не C и C++, для нового кода», — указывают разработчики.
В WhatsApp добавили такие средства защиты, как CFI, усиленные распределители памяти, более безопасные API для обработки буферов и многое другое. Разработчики на C и C++ проходят специализированное обучение по безопасности, получают рекомендации по разработке и проходят автоматизированный анализ безопасности своих изменений.
В целом, команды безопасности WhatsApp и Meta ожидают ускорения внедрения Rust в ближайшие годы.
Ранее команда Google Project Zero выявила уязвимость в WhatsApp для Android, связанную со вредоносными медиафайлами, распространяемыми через групповые чаты. Злоумышленник может назначить контакт жертвы администратором группы и отправлять вредоносный медиаконтент, который автоматически загрузится на целевое устройство без какого-либо взаимодействия со стороны человека. Этот медиафайл будет загружен в базу данных MediaStore, и если он сможет выйти за пределы этой среды, то будет использоваться как эксплойт, позволяющий атаковать жертв без какого-либо взаимодействия.
В ответ в WhatsApp внедрили функции безопасности, направленные на защиту пользователей от сложных кибератак. Новый режим «Строгие настройки учётной записи» предлагает уровень защиты с упором на конфиденциальность. Он автоматически блокирует вложения и медиафайлы от неизвестных контактов, звонки с незнакомых номеров и ограничивает дополнительные настройки, которые могут подвергнуть пользователя риску.
Meta Platforms*, а также принадлежащие ей социальные сети Facebook** и Instagram**:
* признана экстремистской организацией, её деятельность в России запрещена
** запрещены в России
