GNU Aspell 0.60.8.3 закрывает три уязвимости в распаковщике prezip и загрузчике словарей

GNU InetUtils

Орфографический корректор GNU Aspell содержит три уязвимости, из-за которых подготовленный словарь, список слов или сжатый архив со словарём способен повредить память процесса. Ошибки затрагивают все сборки Aspell до версии 0.60.8.3, исправления уже зафиксированы в репозитории проекта и войдут в ближайший релиз. Сведения об ошибках 6 октября 2026 года опубликовал координационный центр CERT.PL. Каждая из трёх проблем получила 1,8 балла по шкале CVSS 4.0, то есть низкую оценку. Такая цифра отражает условия эксплуатации, а не безобидность ошибок: чтобы сработал сценарий атаки, нужен локальный запуск программы и действие самого пользователя.

Детали уязвимостей

Aspell - не только консольная проверка орфографии. Его встраивают в текстовые редакторы, почтовые клиенты и библиотеки вроде enchant, через которые корректор подключается к офисным пакетам. Словари при этом живут отдельно: это обычные файлы, которые скачивают с сайтов, кладут в языковые пакеты дистрибутивов, копируют между машинами и дополняют своими списками слов. Корректор доверяет этим данным и разбирает их как есть. Именно в разборе внешних файлов и сосредоточены все три уязвимости.

Первая, CVE-2026-75818, связана со служебной утилитой prezip-bin. Она упаковывает словари в сжатый вид и распаковывает их обратно. Распаковщик не проверяет, сколько места осталось в буфере, поэтому специально собранный сжатый файл вызывает чтение и запись за границами участка памяти, выделенного в куче. Результат - повреждение памяти и аварийное завершение процесса. Злоумышленнику достаточно убедить пользователя прогнать через prezip-bin подготовленный архив.

Вторая, CVE-2026-75819, живёт в загрузчике двоичных словарей формата rws. При открытии такого файла программа берёт значения смещений из его заголовка и использует их как индексы внутри буфера в куче, не проверяя границы. Подготовленный файл заставляет корректор читать память за пределами буфера: наружу может утечь содержимое кучи, а может случиться падение. Запуск aspell со словарём, подсунутым через опцию --master, через каталог --dict-dir или через настройки, и есть точка входа. Выбор параметров задаёт атакующий, а нажимает Enter пользователь.

Третья ошибка касается личных списков слов, куда попадают слова, добавленные вручную. Функция добавления записывает длину слова в один байт, поэтому для слов, длина которых кратна 256 символам, значение обрезается. Обрезанная длина ведёт к повреждению кучи, а затем к отказу в обслуживании: программа падает. Достаточно, чтобы пользователь запустил aspell с подготовленным личным списком, где есть такое слово. Номер этой уязвимости в записи CERT.PL не выделен отдельно от двух предыдущих по смыслу, но исправление для неё тоже внесено в общий набор правок.

Низкие оценки по CVSS объяснимы. Атака требует локального доступа, сложна в исполнении и невозможна без участия человека: ни одна из трёх уязвимостей не срабатывает сама по себе, в момент открытия веб-страницы или получения письма. Последствия тоже ограничены - аварийное завершение процесса и частичное раскрытие содержимого памяти. Выполнение произвольного кода в записях не заявлено. При этом словари - файлы переносимые. Их скачивают с сайтов, собирают из сторонних источников, подсовывают в языковые пакеты. Поэтому путь к ошибке лежит не через сеть, а через источник данных, которому пользователь доверяет. Сведений об эксплуатации этих уязвимостей в реальных атаках в опубликованных записях нет.

Исправления внесены в основную ветку Aspell, а версия с ними - 0.60.8.3. Пока она не вышла, разумно ограничить круг файлов, которые корректор получает извне. Словари и личные списки слов лучше брать из проверенных источников, а prezip-bin не запускать на архивах неизвестного происхождения. Администраторам общих систем стоит присмотреться к каталогам, куда пользователи складывают личные списки слов: именно оттуда приходит третий сценарий. Сборщикам пакетов в дистрибутивах имеет смысл заранее подготовить обновление, потому что Aspell входит в зависимости многих прикладных программ.

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

Ссылки

 

Комментарии: 0