|
Привет, меня зовут Дэвид Б. Хейз, и я работаю в отделе безопасности Office, отвечающем за тестирование проверки файлов Office (кодовое имя: Gatekeeper). В связи с новой возможностью проверки файлов в Microsoft Office 2010 появились некоторые недоразумения, и я надеюсь их прояснить и объяснить, что и как.
Зачем проверять двоичные файлы?
За прошедшие годы офисные двоичные файлы неизбежно развивались, рос их размер и увеличивалась сложность. Причины усложнения форматов подробно описаны в других материалах (см. статью Джоэла Сполски здесь), поэтому в этой статье не будем касаться этого. Эти двоичные форматы хорошо описаны здесь. Мы обнаружили, что злоумышленники используют двоичные файлы для заражения компьютера пользователя, поэтому мы решили придумать способ, как это остановить. При поступлении в Майкрософт новых заявок об атаках с помощью файлов Office мы выполняли проверку своими средствами, чтобы узнать, как обстоят дела. Что ж, пока все хорошо!
Что такое Gatekeeper?
Проверка файлов Office — это возможность, впервые представленная в Publisher 2007 для проверки PUB-файлов. Она позволяет убедиться, что двоичный файл соответствует ожиданиям приложения. В Office 2010 эта возможность значительно расширена и теперь позволяет проверять файлы Word, Excel и PowerPoint. Обратите внимание, что эта возможность применяется только для проверки двоичных файлов (т. е. PUB, DOC, XLS, PPT и т. д.), а XML-документы не проверяются (например, DOCX, XLSX, PPTX и т. д.), как и макросы и другие пользовательские элементы. Проверяется структура файла, например, в XLS-файле есть структура FONTINDEX, и если значение ifnt равно 4 (что является недопустимым для этого элемента), проверка завершается с ошибкой.
Как это работает?
При загрузке недоверенного двоичного файла (т. е. файла, не расположенного в надежной папке и не являющегося надежным документом) в Word, PowerPoint или Excel выполняется проверка его действительности. При проверке анализируются части файла, которые будут обрабатываться приложением, т. е. соответствующие потоки OLESS. Если они прошли проверку, файл открывается обычным образом, и делать нам больше нечего. Однако если файл оказывается недопустимым, он передается (по умолчанию) в режим защищенного просмотра.
Если щелкнуть этот текст, будет включен режим Backstage, в котором можно открыть файл со всеми доступными функциями приложения. Учтите, что при этом файл будет отмечен как надежный и НЕ будет проверяться при следующем открытии.
После окончания работы с файлом и завершения работы вы можете увидеть следующее:
Это сообщение появляется максимум один раз в две недели (для каждого приложения) и позволяет отправить файл (или файлы) с ошибкой нам с помощью службы отчетов об ошибках Windows. Конечно, можно удалить один или два файла, если вы не хотите делиться этими данными, но если их отправить, мы сможем их проанализировать для дальнейшего улучшения функции проверки файлов Office.
Как этим управлять?
С помощью политики
Мы понимаем, что многим администраторам (или пользователям, заботящимся о безопасности) не понравится идея открытия файла, не прошедшего проверку, поэтому есть групповая политика для управления действием по умолчанию при ошибке проверки файла. Эти политики расположены под разделом "Параметры\Безопасность\Центр управления безопасностью\Режим защищенного просмотра" в шаблонах групповой политики для каждого приложения.
С помощью реестра
Есть несколько разделов реестра, которые управляют различными аспектами проверки файлов Office.
Общие разделы
HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation \ReportingInterval — это значение DWORD, управляющее количеством дней между отображением диалогового окна об отправлении файлов с помощью службы отчетов об ошибках Windows.
HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation\DisableReporting — это значение DWORD. Если оно равно 1, диалоговое окно не отображается (и отправить файлы нельзя).
Разделы, относящиеся к различным приложениям
Для примера я буду использовать "Excel", но этот пример работает и для "PowerPoint" и "Word"
HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\EnableOnLoad — это значение DWORD, если оно равно 0, Office не проверяет файлы.
HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\DisableEditFromPV — это значение DWORD, если оно равно 1, редактирование файлов, не прошедших проверку, запрещено.
Разделы, относящиеся к Excel
HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\PivotOptions — это значение DWORD, управляющее различными параметрами проверки кэша сводных данных (в целях повышения производительности) в файлах, в которых они есть.
0 = никогда не проверять кэш сводных данных 1 = проверять кэш сводных данных в следующих случаях: (1) Файл открыт в Интернете и платформа локально отмечает его, как открытый в Интернете. (2) Файл — вложение сообщения электронной почты Microsoft Outlook. (3) Пользователь специально открыл файл в режиме защищенного просмотра. (4) Файл открыт из известного "ненадежного" ресурса, в котором кэшируется интернет-содержимое, или любого определенного пользователям места, если защищенный просмотре ненадежных документов отключен с помощью другого раздела реестра. (5) Файл открыт и кэш сводных данных анализируется при загрузке. 2 = всегда проверять кэш сводных данных.
С помощью скриптов
Для пользовательских решений на основе Office есть ряд интересных свойств, добавленных в объекты Application, которые отключают проверку файлов для этого сеанса. Также есть дополнительный параметр для Excel, управляющий проверкой кэшей сводных данных (т. е. данных, кэшированных в файле, для сводных таблиц и диаграмм). Вот пример скрипта Powershell, показывающего, как установить эти два параметра для Excel (свойство FileValidation также применяется для Word и PPT):
$excel = New-Object -comobject Excel.Application
# допустимые значения:
# msoFileValidationDefault = 0
# msoFileValidationSkip = 1
$excel.FileValidation = msoFileValidationSkip
# допустимые значения:
# xlFileValidationPivotDefault = 0 (делайте все, что вы делаете обычно, например, используйте параметры реестра по умолчанию),
# xlFileValidationPivotRun = 1 (проверка всех кэшей сводных данных),
# xlFileValidationPivotSkip = 2 (не проверять кэши сводных данных)
$excel.FileValidationPivot = xlFileValidationPivotSkip
Это все здорово, но умеет ли она готовить?
Мы добились определенных успехов в ускорении проверки файлов. Да, теперь требуется больше времени для открытия файла, но всего на несколько миллисекунд. Кроме того, найти файл среднего размера, который проверяется дольше 1 секунды, очень сложно — время проверки большинства файлов лежит в пределах от 1 до 100 мс. Конечно, если файл огромный и сверхсложный и чтобы просто его открыть требуется час, проверка займет больше одной секунды, но скорее всего вы все равно ее не заметите. Если же файл проверяется дольше 5 секунд (это происходит с очень сложными файлами), есть возможность отменить проверку и перейти напрямую в режим защищенного просмотра. В конце концов, мы не можем позволить открыть файл в обычном режиме, так как хакеры просто делали бы свои файлы по-настоящему сложными, получали управление компьютером и делали именно то, что данная возможность пытается предотвратить.
Если проверка файла занимает много времени (если проверка выполнена, не пройдена или пропущена), отображается такое же сообщение об отправке отчета в службу отчетов об ошибках Windows в виде файла с ошибкой, что позволяет вам отправить файл нам для анализа.
Краткость — сестра таланта
Пообщавшись с разработчиками, мы как-то сочинили следующий диалог:
"Так над чем ты работаешь?"
"Над проверкой файлов Office"
"А что это?"
"Проверка файла Office, чтобы убедиться, что с ним все в порядке"
"Значит, ты потратил последние два года на написание логической функции?"
"Ну … мм … да, но это очень важная функция!"
По сути проверка файлов Office — это действительно функция с двумя вариантами (да или нет), информирующая приложение о допустимости или недопустимости файла, но это по-настоящему важная функция! Кроме того, это очень сложная функция, что могут подтвердить все, кто смотрел спецификации форматов файлов. Что ж, вкратце, все. Проверка файлов Office проверит двоичный файл на допустимость и, если что-то не так, можно отправить файл нам для анализа!
|
|