Специалисты Check Point рассказали о проблеме, обнаруженной ими в функции обработки изображений WhatsApp. Проблема помогала вывести приложение из строя, кроме того, применив определенные фильтры к специально созданному изображению и отправив его потенциальной жертве, злоумышленник мог воспользоваться уязвимостью и получить доступ к конфиденциальной информации из памяти WhatsApp.
Еще в ноябре 2020 года эксперты выяснили, что переключение между различными фильтрами в специально подготовленных GIF-файлах приводило к сбою в работе WhatsApp. Исследователи определили один из сбоев как нарушение целостности информации в памяти и незамедлительно сообщили о проблеме разработчикам, который присвоили проблеме идентификатор CVE-2020-1910 (7,8 балла по шкале CVSS), подробно описав ее как уязвимость чтения и записи за пределами допустимого диапазона (out-of-bounds read-write).
В результате в феврале 2021 года разработчики WhatsApp выпустил исправленную версию приложения (2.21.1.13), в котором появились две новые проверки для исходных и измененных изображений.
Корень проблемы заключался в функции «applyFilterIntoBuffer ()», которая работает с фильтрами для изображений: берет исходное изображение, применяет к нему фильтр, выбранный пользователем, а затее и копирует результат в буфер. Путем реверс-инжиниринга библиотеки libwhatsapp.so исследователи обнаружили, что уязвимая функция работает, основываясь на предположении, что и исходное, и измененное изображения имеют одинаковые размеры, а также один и тот же цветовой формат RGBA.
Учитывая, что каждый пиксель RGBA хранится в виде 4 байтов, вредоносное изображение, имеющее только 1 байт на пиксель, может быть использовано для получения out-of-bounds доступа к памяти, поскольку функция пытается прочитать и скопировать в четыре раза больше данных из буфера.