Почему в PDF-файлах могут быть сценарии и чем это опасно

PDF давно перестал быть «цифровой бумагой». Формат поддерживает формы с автозаполнением, интерактивные кнопки, проверку введённых данных и даже обращение к внешним ресурсам — всё это работает через встроенные сценарии на языке JavaScript. Именно поэтому файл, который выглядит как обычный документ, может содержать исполняемый код. В большинстве случаев это безобидная автоматизация, но та же возможность делает PDF удобным инструментом для фишинга и доставки вредоносного ПО.

Главный практический вывод такой: опасен не сам факт наличия сценария, а то, откуда пришёл файл и что именно код делает. Документ из доверенного источника со скриптом автозаполнения формы — норма. Анонимный PDF из письма с призывом «открыть и разрешить выполнение» — типичный признак атаки. Ниже разберём, зачем формат вообще умеет выполнять код, как это используется злоумышленниками, как проверить документ до открытия и какие настройки реально снижают риск.

Зачем PDF вообще нужны сценарии

Спецификация формата (стандартизирована как ISO 32000) включает поддержку JavaScript внутри документа. Это не уязвимость и не случайность, а осознанная функция, добавленная ещё в эпоху активного развития электронных документов. Сценарии решают несколько практических задач:

  • Интерактивные формы. Скрипт может автоматически подставлять дату, пересчитывать сумму по введённым количеству и цене, проверять корректность ИНН или номера карты прямо в документе.
  • Валидация данных. Пользователь сразу видит ошибку при заполнении, не отправляя форму обратно исполнителю.
  • Управление видимостью полей. Например, блок «паспортные данные» появляется только после выбора определённого типа заявителя.
  • Навигация по документу. Кнопки перехода между разделами, скрытие и показ слоёв, управление мультимедиа в презентационных PDF.
  • Обмен данными с сервером. Форма может отправить заполненные поля на указанный адрес — этим пользуются анкеты, договоры и опросники, распространяемые как PDF.

Отдельная категория — документы, собранные генераторами отчётности: бухгалтерские системы, CRM и сервисы электронной подписи нередко встраивают служебные скрипты для расчётов или контроля версий формы. Поэтому наличие JavaScript само по себе ничего не говорит о вредоносности файла.

Как сценарии превращаются в оружие

Проблема в том, что те же механизмы работают и против пользователя. Типичные схемы атак с использованием PDF выглядят так:

  • Фишинговая ссылка внутри документа. Внешне легитимный «счёт» или «уведомление от банка» содержит кнопку или текстовую ссылку на поддельный сайт ввода учётных данных. Скрипт здесь может маскировать реальный адрес ссылки от проверки наведением курсора.
  • Обход песочницы чтения. Некоторые просмотрщики выполняют JavaScript в PDF даже в защищённом режиме. Уязвимости в обработке сценариев периодически находят в популярных ридерах, и эксплойты используют их для выхода за пределы документа.
  • Доставка полезной нагрузки. PDF используется как первый этап цепочки: документ убеждает жертву перейти по ссылке, скачать «расшифровщик», «просмотрщик» или отключить защиту почтового шлюза.
  • Социальная инженерия через диалоговые окна. Скрипт вызывает всплывающее окно с тревожным сообщением («документ повреждён, требуется обновить программу») и ведёт на сайт загрузки вредоносного файла.
  • Скрытая отправка данных. Если форма настроена на отправку на сторонний сервер, введённые в неё персональные данные уходят злоумышленнику незаметно для пользователя.

Важный нюанс: сам по себе JavaScript в PDF не даёт атакующему полного доступа к системе. Современные просмотрщики ограничивают возможности языка — нет прямого доступа к файловой системе, процессам и сети произвольным способом. Опасность возникает в связке: уязвимый просмотрщик + вредоносный сценарий + невнимательность пользователя, которая завершает цепочку.

Как понять, что в файле есть сценарий

Проверить документ можно несколькими способами — от простого осмотра до анализа структуры. Вот порядок действий, доступный обычному пользователю:

  1. Посмотрите свойства документа. В Adobe Acrobat откройте меню свойств (Ctrl+D) и вкладку безопасности либо раздел с перечнем вложений и действий. Наличие JavaScript часто видно в списке дополнительных действий документа.
  2. Проверьте панель инструментов форм. Если документ содержит интерактивную форму, просмотрщик обычно показывает соответствующую панель или подсвечивает поля.
  3. Используйте онлайн-анализаторы. Сервисы вроде VirusTotal показывают не только вердикты антивирусов, но и технические детали: наличие JavaScript, внешних URL, вложений. Загружайте туда только файлы без конфиденциальных данных.
  4. Откройте файл в текстовом редакторе. PDF частично читаем как текст. Поиск по строкам /JavaScript, /JS, /OpenAction, /Launch, /URI покажет, есть ли в структуре сценарии, автозапуск действий, запуск внешних программ или ссылки. Само присутствие строки — повод насторожиться, но не приговор: легальные формы тоже содержат /JS.
  5. Обратите внимание на источник и контекст. Неожиданный счёт, срочность, просьба включить макросы или «обновить просмотрщик» — классические маркеры фишинга независимо от технического содержимого.

Для корпоративной среды существуют специализированные инструменты статического анализа (например, утилиты семейства peepdf или pdfid), которые детально разбирают структуру документа. Но описанных выше шагов обычно достаточно, чтобы отделить подозрительный файл от обычного.

Какие настройки защиты стоит включить

Защита строится на простом принципе: сценарии должны выполняться только там, где они действительно нужны. Настройки зависят от используемой программы, но логика везде похожа.

Мера защиты Что даёт Чем приходится жертвовать
Полное отключение JavaScript в просмотрщике Сценарии в PDF не выполняются вообще; большинство атак этого класса теряет смысл Не работают интерактивные формы, автоподстановка и валидация в легальных документах
Защищённый режим / песочница Просмотрщик ограничивает действия документа изолированной средой Часть функций (печать на специфические устройства, интеграция) может работать нестабильно
Запрет открытия вложений и запуска внешних приложений из PDF Исключает сценарии, где документ подталкивает открыть другой файл или программу Нельзя открыть легальное вложение прямо из документа — придётся сохранить его отдельно
Блокировка доступа к внешним URL из документа Формы не смогут молча отправить данные на сторонний сервер Онлайн-отправка легальных анкет потребует ручного копирования данных
Проверка вложений почтовым шлюзом и антивирусом Подозрительные PDF отсеиваются до попадания в ящик Риск ложных срабатываний на легальную корреспонденцию

Если вы работаете преимущественно с документами для чтения (книги, статьи, отчёты без форм), разумнее всего полностью отключить JavaScript в настройках просмотрщика. Интерактивные формы понадобятся редко, а поверхность атаки сократится радикально. Тем, кто регулярно заполняет PDF-анкеты, компромиссный вариант: держать сценарии включёнными только в одном доверенном просмотрщике с актуальными обновлениями и защищённым режимом, а всё остальное открывать в программе с отключённым JS.

Где найти эти настройки

Точные названия пунктов меню различаются между версиями программ, поэтому ориентируйтесь на логику, а не на дословные пути. В популярных просмотрщиках нужные переключатели обычно находятся в разделе настроек безопасности или доверенного менеджера: поиск по словам «JavaScript», «protected mode», «sandbox» в справке вашей программы даст точную инструкцию для установленной версии. После изменения настроек имеет смысл протестировать поведение на заранее известном безопасном файле с формой, чтобы понимать, что изменилось.

Правила работы с PDF из недоверенных источников

Технические настройки — половина дела. Вторая половина — дисциплина обращения с файлами. Практичный набор правил выглядит так:

  • Не открывайте PDF из неожиданных писем, даже если отправитель знакомый: его ящик могли взломать. При сомнениях уточните у отправителя другим каналом связи.
  • Никогда не следуйте инструкциям внутри самого документа о том, что нужно «разрешить», «включить» или «обновить». Легальному PDF такие действия не требуются.
  • Сверяйте реальные адреса ссылок: в просмотрщиках с отключённым JS наведение курсора показывает истинный URL, а не тот, который рисует сценарий.
  • Не вводите в PDF-формы пароли, коды из СМС и платёжные реквизиты, если источник документа не был вами проверен отдельно.
  • Держите просмотрщик обновлённым: значительная часть успешных атак эксплуатирует давно исправленные уязвимости.
  • Для файлов из сомнительных источников используйте отдельную среду: виртуальную машину, второй компьютер или хотя бы учётную запись без административных прав.

Когда сценарии в PDF оправданы, а когда это красный флаг

Оценка всегда контекстная. Один и тот же технический признак означает разное в разных ситуациях.

Сценарий скорее легитимен, если: документ получен от организации, с которой у вас есть отношения; он содержит рабочую форму с логичной автоматизацией (расчёты, валидация); сценарии соответствуют назначению документа; отправитель подтвердил рассылку.

Это красный флаг, если: файл пришёл неожиданно и требует срочных действий; документ просит отключить защиту или установить программу; в структуре обнаружены /Launch или /OpenAction с внешними командами; форма отправляет данные на адрес, не совпадающий с доменом отправителя; антивирусы и анализаторы помечают файл, даже если вердикт «подозрительно», а не «вредоносно».

Промежуточный случай — рабочий документ от партнёра, в котором вы нашли JavaScript. Здесь правильное действие не паника, а один вопрос отправителю: «зачем в форме скрипт?» Внятный ответ про автоподстановку дат снимает вопрос, уклончивый — повод отказаться от файла и попросить версию без интерактивных элементов.

Альтернативы для организаций

Компании, которым PDF-формы нужны постоянно, могут снизить риски архитектурно, а не только настройками рабочих станций:

  • Перевести критичные формы из PDF в веб-приложения: браузерная форма с серверной валидацией безопаснее и удобнее, а сценарии контролирует сама организация.
  • Настроить почтовый шлюз на переупаковку или блокировку PDF с активным содержимым из внешних отправителей, выдавая их получателям после ручной проверки.
  • Использовать централизованные политики: администратор задаёт единые настройки просмотрщиков на всех машинах, и сотрудники не могут случайно включить выполнение сценариев.
  • Регулярно обучать сотрудников на примерах актуальных фишинговых писем — техническая защита не спасает, если человек сам вводит данные на поддельном сайте.

Что делать, если подозрительный файл уже открыт

Само открытие PDF в обновлённом современном просмотрщике редко приводит к заражению: для этого нужна эксплуатируемая уязвимость конкретной версии программы. Но если после открытия вы заметили странности — всплывшие окна, запросы на установку ПО, переходы в браузер, необычную сетевую активность — действуйте последовательно:

  1. Отключите компьютер от сети, чтобы прервать возможную связь с управляющим сервером.
  2. Не вводите нигде пароли с этого устройства до завершения проверки.
  3. Запустите полную проверку актуальным антивирусом, желательно загрузочным диском или с другого устройства.
  4. Обновите просмотрщик до текущей версии — возможно, вы эксплуатировали известную закрытую уязвимость.
  5. При работе с корпоративной сетью немедленно сообщите в IT-отдел: скорость реакции здесь важнее любых технических мер.

Главное, что нужно запомнить

Сценарии в PDF — штатная возможность формата, созданная для интерактивных форм, и большинство таких скриптов безобидны. Риск появляется там, где сходятся три фактора: документ из недоверенного источника, просмотрщик с разрешённым выполнением кода и человек, готовый выполнить инструкции из самого файла. Разорвите любое звено — и типичная атака не сработает.

Конкретные следующие шаги: проверьте настройки своего просмотрщика и отключите JavaScript, если работаете в основном с документами для чтения; возьмите в привычку прогонять сомнительные файлы через онлайн-анализатор; и относитесь к любым просьбам «разрешить» или «обновить», написанным внутри PDF, как к попытке манипуляции, пока отправитель не подтвердит обратное.

Материал носит информационный характер и не заменяет консультацию специалиста по информационной безопасности. Настройки и поведение конкретных программ зависят от их версии, а оценка подозрительного файла в критичных случаях должна проводиться профильным специалистом.

PEFile.ru