Как Calc запускает код без предупреждения?

Специально подготовленная электронная таблица способна заставить LibreOffice Calc или Apache OpenOffice Calc выполнить код злоумышленника сразу после открытия файла. Обычного запроса о доверии к документу при этом нет. Атака срабатывает, только если в офисном пакете включена поддержка Java. Исследователи проверили её в Windows и Linux, но считают, что конкретной операционной системой проблема не ограничена. Пока опубликован лишь прототип, случаев эксплуатации в реальных атаках не зарегистрировано.
Как Calc запускает код без предупреждения?
Изображение носит иллюстративный характер

Уязвимость LibreOffice получила номер CVE-2026-63277. Исправления вышли 5 октября 2026 года в версиях LibreOffice 26.2.5 и LibreOffice 26.8.0. В соответствующих ветках затронуты все более ранние выпуски. Исправление подготовил Caolán McNamara из Collabora Productivity, поэтому пользователям LibreOffice достаточно перейти на одну из двух закрывающих уязвимость версий.
Для Apache OpenOffice та же схема зарегистрирована как CVE-2026-59265, но патча пока нет. Уязвимы все выпуски вплоть до актуального Apache OpenOffice 4.1.16 включительно. Исправление ожидается в версии 4.1.17, которая ещё проходит тестирование. До её выхода безопаснее отключить Java в настройках OpenOffice и не открывать таблицы, полученные из неизвестных либо ненадёжных источников.
Начальной точкой атаки служит диапазон базы данных внутри таблицы Calc. Такой диапазон умеет импортировать сведения из внешнего источника и автоматически обновлять их. Источником может быть отдельный файл базы данных формата ODB, причём его не обязательно прикладывать к документу: веб-адрес ODB-файла встраивается непосредственно в таблицу.
При открытии документа диапазон автоматически обновляется, а LibreOffice или OpenOffice обращается по заданному адресу и загружает ODB-файл. Тот, в свою очередь, может указать офисному пакету Java-драйвер базы данных, то есть JDBC-драйвер, а также местонахождение его программного кода. Код допускается разместить в JAR-файле — архиве с Java-компонентами — либо на удалённом сервере.
Офисный пакет загружает JAR и запускает JDBC-драйвер внутри собственного процесса. Если драйвер создан атакующим, вместе с ним выполняется и заложенный атакующим Java-код. Пользователь к этому моменту успевает лишь открыть таблицу: отдельного согласия на загрузку и запуск программы интерфейс не требует.
Каждый элемент цепочки сам по себе штатный: диапазоны баз данных, ODB-файлы, JDBC-драйверы, JAR-загрузки и автоматическое обновление внешних данных предусмотрены разработчиками. Ошибка возникает при их последовательном соединении. Получается выполнение произвольного кода, для которого не действует защита, знакомая по макросам: LibreOffice и OpenOffice обычно показывают предупреждение или запрашивают разрешение перед запуском макроса, а здесь такой проверки нет.
В опубликованном прототипе вредоносный JDBC-драйвер открывает системное приложение «Калькулятор». Это безвредный способ подтвердить выполнение кода, хотя тем же путём можно запустить любой выбранный атакующим Java-код. Для удобства демонстрации таблица, ODB-файл и программный компонент находились на одном компьютере. В настоящей атаке ODB и вредоносный JAR, вероятнее всего, размещались бы на сервере под контролем злоумышленника.
Уязвимость LibreOffice независимо друг от друга обнаружили Rick de Jager из команды безопасности V12, а также Thomas Rinsma и Edoardo Geraci из Codean Labs. Проект Apache OpenOffice приписывает обнаружение соответствующей ошибки OpenOffice специалистам Codean Labs. Команда V12 опубликовала прототип атаки, работающий с обоими офисными пакетами.
Издание The Hacker News запросило комментарии у The Document Foundation, разрабатывающей LibreOffice, и у проекта Apache OpenOffice. Практические меры уже различаются: LibreOffice следует обновить до 26.2.5 или 26.8.0, тогда как пользователям OpenOffice 4.1.16 и более ранних выпусков придётся отключить Java либо отказаться от непроверенных таблиц до выхода 4.1.17.


Новое на сайте

Ссылка