Можно ли прочитать зашифрованный PDF-файл?

Исследователь Фабиан Айзинг на Chaos Communication Congress показал, насколько надежно шифрование в  PDF-файлах.

Исследователь Фабиан Айзинг на Chaos Communications Congress показал, насколько надежно шифрование в  PDF-файлах.

Формат файлов PDF, согласно спецификациям, поддерживает шифрование. В нем используется алгоритм AES с режимом Cipher Block Chaining. Так что в теории человек или компания, защитившие файл, могут быть уверены, что содержимое документа станет известно кому-либо только в том случае, если он знает пароль.

В продолжение исследования безопасности PDF, о котором мы уже писали, исследователь Фабиан Айзинг из Мюнстерского университета прикладных наук решил проверить, насколько надежна имплементация шифрования в этом формате. И пришел к неутешительным выводам.

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

Кто и для чего использует зашифрованные PDF на практике?

Прежде чем приступать к анализу, исследователи задались вопросом, а применяет ли кто-нибудь зашифрованные PDF на практике. Оказалось, что да. Вот что они нашли навскидку:

  • Некоторые банки таким образом обеспечивают конфиденциальность документов, пересылаемых клиентам.
  • Есть ряд плагинов, которые встраивают в почтовые клиенты возможность отправить письмо в виде зашифрованного PDF.
  • Некоторые подключаемые к интернету МФУ позволяют отправлять отсканированные документы непосредственно на почту и при выборе опции «в зашифрованном виде» применяют именно PDF, защищенные паролем.
  • Медицинские диагностические приборы также используют зашифрованные PDF для сохранения результатов исследований.
  • Кроме того, некоторые государственные учреждения принимают входящие документы в виде шифрованных PDF. Например, американский департамент правосудия поступает так с исковыми заявлениями.

Прямая эксфильтрация (атака типа direct exfiltration)

Первый вариант атаки исследователи называют «взлом шифрования в обход криптографии». Изучая документацию формата, они выяснили, что в PDF-файлах шифруется только само содержимое — объекты типов string и stream. Остальные объекты, отвечающие за структуру документа, остаются незащищенными. То есть при желании можно узнать количество и размер страниц, объектов, ссылок. А эту информацию, по большому счету, не следовало бы оставлять потенциальным злоумышленникам.

Исследователи задумались, нельзя ли добавить в материал собственный контент. Они подробнее изучили документацию стандарта и нашли любопытный момент. Оказывается, в PDF 1.5 была добавлена функция гранулярного контроля над шифрованием контента. Иными словами, он допускает частичное шифрование – можно, например, зашифровать только вышеупомянутые объекты типа string или stream. А значит, часть контента может быть незашифрованной. Более того, проверка целостности не производится.

Это позволяет добавить в зашифрованный документ что-то постороннее. В том числе функцию submit-form action, которая позволят встроить в PDF-файл форму, отправляющую данные на сторонний сайт. При желании она активируется при открытии документа (то есть сразу после введения пароля). Так вот, в качестве отправляемых данных можно указать весь зашифрованный контент файла. Так что легитимный получатель вводит пароль, содержимое расшифровывается, а потом вся информация отправляется на сторонний сайт.

Впрочем, это не единственный метод эксфильтрации — при необходимости можно встроить простое обращение к сайту злоумышленников, добавив в URL все содержимое файла. Или использовать JavaScript.

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

Криптографическая атака (Malleability attack)

Второй недостаток формата — использование известного изъяна в режиме сцепления блоков шифрования (Cipher Block Chaining, CBC) без контроля целостности. Его суть заключается в том, что если часть зашифрованной информации известна злоумышленнику, то он может изменить содержимое одного из блоков.

Согласно спецификациям формата PDF, часть шифрованных данных — 12 байт различных разрешений (раздел /Perm), которые шифруются тем же AES-ключом, что и остальной документ. Это сделано для того, чтобы злоумышленники не пытались самовольно изменять их (например, выдавая читателю возможность редактировать файл). Но в результате получается, что атакующему заранее известна часть незашифрованных данных.

В итоге он может добавить в защищенный файл все тот же механизм эксфильтрации данных, который вышлет содержимое файла на сторонний сайт.

Итог

Исследователи проверили свои методы на 23 разных программах для чтения PDF и четырех браузерах. И обнаружили, что каждая из программ хотя бы частично уязвима к одной из этих атак.

Сводная таблица уязвимостей в приложениях для чтения PDF. Источник: https://media.ccc.de/v/36c3-10832-how_to_break_pdfs

Сводная таблица уязвимостей в приложениях для чтения PDF. Источник.

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

Единственное, что мы можем порекомендовать в данной ситуации — использовать альтернативные методы передачи конфиденциальных данных. Например, зашифрованные контейнеры, которые можно создавать при помощи наших решений.

Советы