На днях попался прекраснейший разбор уязвимости CVE-2025-27363 в системной библиотеке для показа шрифтов FreeType, которая в том числе используется в Android и её применение в WhatsApp. Мне кажется, это очень красивый эксплойт.
Пусть меня исправят профессиональные reverse-инженеры, если я спутал детали, но кратко она работает так.
Внутри многих PDF содержится собственный шрифт. Это стандартная практика: PDF на то и PDF, чтобы он выглядел максимально одинаково на разных устройствах.
В WhatsApp у многих пользователей включено превью показа PDF-документов, и в момент его создания библиотека FreeType начинает обрабатывать этот шрифт.
Дальше начинается магия. В библиотеке есть примерно такой код:
limit = (FT_Short)gloader->current.num_subglyphs;
FT_NEW_ARRAY(points, limit + 4);
Здесь:
•
num_subglyphs — количество компонентов символа.•
FT_Short — знаковое 16-битное число.•
FT_NEW_ARRAY — выделение памяти под массив.Ключевая деталь:
FT_Short может хранить значения от −32768 до 32767.Но атакующий делает шрифт, у которого количество компонентов символа равно: num_subglyphs = 65533; // 0xFFFD, а в результате получается преобразование (FT_Short)65533 == -3, и выделение памяти происходит FT_NEW_ARRAY(points, 1), то есть под один элемент.
А дальше FreeType выполняет следующий код:
points[0] = loader->pp1; //допустимая запись, а остальное — вне памяти
points[1] = loader->pp2;
points[2] = loader->pp3;
points[3] = loader->pp4;
и только первые 16 байт выполняются в своей памяти, а остальные 48 байт — вне её.
Это называется Out-of-Bounds Write (OOB Write).
В результате атакующий получает возможность повредить соседние объекты в памяти. При удачном расположении объектов и обходе защит это потенциально позволяет добиться выполнения произвольного кода внутри процесса приложения.
В статье говорится, что есть подтверждённые целевые атаки на 90+ целей из разных стран.
Особенно впечатляет, что в описанном сценарии атака потенциально становится zero-click: пользователю даже не требуется открывать PDF, достаточно автоматической обработки документа приложением. Не забывайте обновлять систему патчами безопасности!