Карта Германии 1:1 в PDF-формате? Легко!

Карта Германии 1:1 в PDF-формате? Легко!

Карта Германии 1:1 в PDF-формате? Легко!

Как оказалось, в файл PDF можно втиснуть страницу космических размеров. Лимиты, указанные в спецификациях формата, отображают возможности конкретного приложения для просмотра таких документов — Adobe Acrobat.

О том, что формат PDF не ограничивает размеры страниц таких документов, сказано, например, в соответствующей статье Википедии. Тем не менее программист Алекс Чань (Alex Chan), известная под ником alexwlchan, неоднократно сталкивалась с мнением, будто максимальный размер PDF-страниц — 381 км по стороне.

Таким листом можно накрыть половину Германии на карте масштабом 1:1, однако откуда взялось это магическое число?

 

В приложениях к спецификациям PDF 1.7 (PDF) отмечено, что лимиты на величину и количество объектов в таких файлах связаны с возможностями принтеров и соответствующих приложений. В Acrobat 5.0 и выше размеры страниц ограничены 200 х 200 дюймов; в этих границах дефолт можно для каждой менять с помощью записи UserUnit (число отображает кратность измерения на странице относительно типографского пункта, в программах Adobe равен 1/72 дюйма).

Версии Acrobat 7.0 и новее поддерживают верхнее значение UserUnit в 75 000, то есть страница PDF по каждой стороне не должна превышать 15 млн дюймов (381 км). Чтобы удостовериться, что для PDF это не предел, Чань изучила структуру таких файлов и собрала дополнительную информацию, задавая наводящие вопросы ChatGPT, а затем приступила к экспериментам, создав несколько простейших образцов вручную.

Как выяснилось, увеличить размеры страниц можно не только с помощью UserUnit, но также манипулируя значением MediaBox (размер материала, на котором производится печать). При превышении лимитов Acrobat приложение продолжало упорно показывать в метаданных 15 млн дюймов, а такой же трюк с UserUnit оно вообще не заметило (не выдало ни предупреждения, ни ошибки).

В ходе исследования было установлено, что встроенная в macOS программа Preview.app не поддерживает UserUnit и потому полностью игнорирует такие значения, считая, что во всех PDF установлен дефолт 1/72 дюйма. Верхний предел, как в случае с Acrobat, для этого приложения выставить невозможно, поэтому оно спокойно покажет в свойствах файла, что ширина страницы соизмерима с расстоянием от Земли до Луны.

 

Когда в ходе экспериментов Preview.app заявила, что PDF больше вселенной (примерно 37 млрд световых лет в квадрате), Чань решила остановиться. Распечатывать такие страницы даже не стоит пытаться.

В 7-Zip нашли критическую дыру: архив может превратиться в запуск кода

В популярном архиваторе 7-Zip нашли критическую уязвимость. Баг позволяет вызвать сбой приложения или добиться выполнения произвольного кода. Брешь получила идентификатор CVE-2026-48095 и затрагивает 7-Zip 26.00. Исследователи уже опубликовали технические детали и демонстрационный эксплойт.

Обнаружил её Ярослав Лобачевский из GitHub Security Lab. Проблема находится в обработчике NTFS-архивов.

Из-за ошибки при расчёте размера буфера 7-Zip может выделить под данные всего 1 байт, а затем попытаться записать туда 256 МБ контролируемых атакующим данных.

В результате данные вылезают за пределы буфера и начинают перезаписывать соседние участки памяти. По данным специалистов, уже после 304 байт может быть повреждён указатель vtable, а дальше появляется возможность перехватить выполнение кода.

Особенно неприятно то, что атакующему не обязательно маскировать файл под NTFS-образ в лоб. 7-Zip использует определение формата по сигнатурам и при распаковке может перебрать разные обработчики. Поэтому специально созданный файл можно выдать за .7z, .zip или .rar, а уязвимый обработчик всё равно может сработать.

Риск повышает и то, что в открытом доступе уже есть Python-генератор тестового файла для эксплуатации бага. Это не значит, что всех прямо сейчас массово атакуют, но порог входа для злоумышленников стал заметно ниже.

RSS: Новости на портале Anti-Malware.ru