На волне новостей чип-апокалипсиса 2018 года, когда взломано почти всё, а сайты мировых брендов, сами того не подозревая, майнят в наших браузерах криптовалюту, мы решили покуситься на святая святых и взломать документы, подписанные усиленной квалифицированной электронной подписью. И вот что из этого вышло.
Как известно, усиленная квалифицированная электронная подпись (ЭП) позволяет определить лицо, подписавшее документ, и обнаружить факт внесения изменений в документе (см. ст. 5, п. 3 Федерального закона № 63 «Об электронной подписи»). Алгоритм генерации коллизий хеш-функции в этот раз нам не понадобится. Для взлома надо найти способы внесения изменений в электронный документ после его подписания, так, чтобы эти изменения не были обнаружены при проверке ЭП. Начнём.
Сценарий с документом DWG, вектор атаки — внешние ссылки
Здесь и далее предполагается, что в системе уже установлен сертификат квалифицированной электронной подписи:
- Создаём документ HVAC.dwg, который ссылается на файл nothing.dwg, расположенный на шаре в локальной сети предприятия. Файл nothing.dwg содержит выноски на оборудование Поставщика А;
- Отправляем HVAC.dwg на согласование ответственному лицу;
- С помощью программы «Autodesk→AutoCAD→Добавление цифровых подписей» ответственное лицо подписывает HVAC.dwg. Теперь это электронный подлинник:
Реализуем атаку:
- Нужно заменить оборудование Поставщика А на оборудование Поставщика Б изменением nothing.dwg, расположенного на сетевом ресурсе;
- Отдел снабжения получает электронный подлинник HVAC.dwg, руководитель отдела проверяет целостность электронной подписи, она не нарушена, а AutoCAD развеивает последнюю тень сомнения успокаивающей надписью «Чертеж не изменился с момента подписания», поэтому вместо Поставщика А заказ на оборудование уходит к Поставщику Б
Сценарий с документом DOC/DOCX, вектор атаки — шрифт
В этот раз будем использовать наиболее продвинутый комплекс защиты информации КриптоПро CSP 4.0, соответствующий стандарту ГОСТ Р 34.10-2012:
- Создаём приказ о премировании сотрудников prikaz.docx. Основной текст набираем шрифтом Arial. Для размера премии используем похожий шрифт, например, бесплатный Noto Sans Regular от Google. Вводим согласованный с директором размер премии 150 000 руб.;
- Отправляем приказ на подпись директору;
- Директор подписывает prikaz.docx усиленной квалифицированной ЭП с помощью КриптоПро Office Signature 2.0. Получаем электронный подлинник:
Реализуем атаку:
- С помощью бесплатной программы FontForge модифицируем файл шрифта NotoSans-Regular.ttf, заменив векторное изображение глифа 1 на изображение глифа 2
- Модифицированный NotoSans-Regular.ttf файл устанавливаем на компьютере бухгалтера (понадобятся права администратора);
- Получив подписанный директором подлинник приказа, бухгалтер открывает его и видит действительную подпись. Но размер премии увеличился со 150 000 руб. до 250 000 руб.
Это эффективные, но не единственные способы атаки. Есть еще макросы, вычисляемые значения полей, стили. Не защитит от них ни использование системы управления данными (PDM), ни откреплённые подписи, ни применение специализированных криптографических комплексов типа КриптоПро CSP.
Как же обеспечить защиту от такого рода атак? Самый эффективный способ — публиковать документы в нередактируемый формат или формат фиксированной разметки. Эти форматы нацелены на сохранение первоначального вида документа на любом устройстве, в любой точке мира. Вот наиболее распространённые представители форматов фиксированной разметки:
- PDF (Portable Document Format) — разработан компанией Adobe. Стандарт ISO 32000;
- XPS (XML Paper Specification) — разработан компанией Microsoft. Стандарт ECMA-388;
- DWFx — разработан компанией Autodesk. Основан на XPS.
Но и здесь не всё так однозначно. Попробуем провести атаку через шрифт на подписанный PDF-документ:
- Документ prikaz.docx опубликуем в PDF, например, с помощью виртуального принтера PDF-XChange. Полученный файл prikaz.pdf отправляем на подпись директору;
- Директор открывает документ prikaz.pdf в программе Adobe Acrobat Reader DC;
- Подписывает командой "Поставить цифровую подпись" в разделе "Сертификаты".
- Подписанный PDF отправляется бухгалтеру.
Реализуем атаку:
- Так же как и в сценарии с форматом DOCX устанавливаем бухгалтеру модифицированный шрифт NotoSans-Regular.ttf;
- Получив подписанный prikaz.pdf, бухгалтер открывает его в Adobe Reader и видит размер премии 250 000 руб., целостность подписи при этом не нарушена
Для PDF удалось реализовать данный вид атаки потому, что этот формат допускает использование шрифтов по ссылке, поэтому он не подходит для создания подлинников.Существует стандарт PDF/A (подмножество PDF), который обеспечивает необходимую защиту. Поэтому перед подписанием каждого PDF необходимо убедиться, что документ соответствует стандарту PDF/A или отсутствуют зависимости от шрифтов.
Форматы DWFx и XPS не подвержены такого рода атакам, так как на уровне стандарта ECMA-388 регламентируется хранение ресурсов внутри содержательной части документов (F.3.1 M2.6). Но DWFx не подходит для создания многостраничных текстовых документов, поэтому наиболее универсальным вариантом является XPS.
Попробуем по аналогии с PDF провести атаку через шрифт на подписанный XPS-документ:
- Документ prikaz.docx опубликуем в XPS с помощью встроенного в Windows виртуального принтера Microsoft XPS Document Writer. Полученный файл prikaz.xps отправляем на подпись директору;
- Директор открывает документ prikaz.xps в программе Pilot-ICE или в Pilot-XPS. Подписывает командой «Подписать» через КриптоПро CSP;
- Подписанный XPS отправляется бухгалтеру.
Реализуем атаку:
- Устанавливаем бухгалтеру модифицированный шрифт NotoSans-Regular.ttf;
- Получив подписанный prikaz.xps, бухгалтер открывает его в Pilot-ICE, проверяет целостность ЭП и видит тот же размер премии, который был на момент подписания документа — 150 000 руб. Атака на XPS не удалась.
Итоги
Усиленная квалифицированная электронная подпись по прежнему является надёжной технологией для обнаружения факта внесения изменений в документ. Но следует комплексно оценивать эффективность её применения. Эксперимент показал, что редактируемые форматы DWG, DOC, DOCX не подходят для создания электронных подлинников, так как могут быть легко скомпрометированы. Более защищенными и универсальными для создания подлинников являются форматы PDF/А и XPS, так как они содержат внутри файла всю необходимую информацию для того, чтобы каждый раз отображать документ в неизменном виде.
Дмитрий Поскребышев