Административный шаблон для отключения Acrobat JavaScript

Последнее время Adobe Acrobat Reader «радует» нас большим количеством “дыр”, которые производитель сего софта не поспевает затыкать. Так, например, одну из известных “дырок” обязуются ликвидировать только  12 января 2010 года. Ну, а пока патчей нет, то все рекомендации сводятся к отключению JavaScript (встроенного в Acrobat Reader):

http://blogs.zdnet.com/security/?p=5152

http://www.pcworld.com/businesscenter/article/184704/adobe_reader_zeroday_exploit_protecting_your_pc.html

http://blog.trendmicro.com/new-adobe-zero-day-exploit/

Для выполнения этих рекомендаций (отключения JavaScript в Adobe Acrobat Reader) я провел при помощи Procmon небольшие изыскательские работы и выяснил, что за включение/отключение JavaScript отвечает параметр bEnableJS (типа REG_DWORD), который может быть расположен  в следующих разделах реестра:

для версии 9.X

HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\9.0\JSPrefs

HKEY_LOCAL_MACHINE\Software\Adobe\Acrobat Reader\9.0\JSPrefs

для версии 8.X

HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\8.0\JSPrefs

HKEY_LOCAL_MACHINE\Software\Adobe\Acrobat Reader\8.0\JSPrefs

Причем установки в HKEY_CURRENT_USER приоритетнее (!), чем установки того же параметра в HKEY_LOCAL_MACHINE. Логика работы такова: если раздела JSPrefs нет ни в ветке HKLM, ни в HKCU, то встроенный JavaScript включен. При запуске Adobe Acrobat Reder ищет раздел JSPrefs сначала в HKLM, затем в HKCU, последний найденный параметр “побеждает” (а последним будет опрошен HKCU).

Поэтому, если администратор запретил встроенный JavaScript на уровне компьютера (в HKLM), то эта настройка будет действовать только до тех пор, пока пользователь не разрешит JavaScript в настройках Acrobat Reader (Edit->Preferences->JavaScript->Enable Acrobat JavaScript). После этих действий пользователя в HKCU будет создан раздел JSPrefs, который опрашивается последним, а, значит, настройки, сделанные пользователем и хранящиеся в этом разделе, будут использованы Acrobat Reader’ом.

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

И так,  осталось только написать административный шаблон. Т.к. в шаблоне нужно будет рулить только двумя параметрами реестра, то сделать это не трудно. У меня, например, получился такой шаблон:

; AcrobatReader.adm
; Administrative Template for Adobe Acrobat Reader V 8.x,9.x
; ShS
; 20091222
CLASS User
CATEGORY !!AcrobatReaderV9

POLICY !!AcrobatJavaScript
KEYNAME "Software\Adobe\Acrobat Reader\9.0\JSPrefs"
EXPLAIN !!AcrobatJavaScriptExplain
VALUENAME "bEnableJS"
VALUEON NUMERIC 1
VALUEOFF NUMERIC 0
END POLICY
END CATEGORY
;
CATEGORY !!AcrobatReaderV8

POLICY !!AcrobatJavaScript
KEYNAME “Software\Adobe\Acrobat Reader\8.0\JSPrefs”
EXPLAIN !!AcrobatJavaScriptExplain
VALUENAME “bEnableJS”
VALUEON NUMERIC 1
VALUEOFF NUMERIC 0
END POLICY
END CATEGORY
;
[strings]
AcrobatReaderV9=”Acrobat Reader v 9″
AcrobatReaderV8=”Acrobat Reader v 8″
AcrobatJavaScript=”Acrobat JavaScript”
AcrobatJavaScriptExplain=”Включает или отключает встроенный в AdobeReader JavaScript”

 

Пользуйте на здоровье ;)

[20150925] Adobe теперь сам предоставляет административные шаблоны для AcrobatReader’а

13 Comments

  1. Не ну не дури ради, а ради душеспасания :) А что останавливает от использования сторонних просмотровщиков? Тем более, что в нашем так называемом продакшн нахер никому не нужны зява скрипты в акробате, эти придурки в нем жпеги отсканенные со счетами отправляют ….

    Гы. Кстати буду рад познакомиться у вас очень приятный блог. ca@brntech.ru

    • > А что останавливает от использования сторонних просмотровщиков?
      1) Acroreader уже был установлен на всех компьютерах организации (стандарт де факто)
      2) Сторонние, как правило заточены под персональное использование:
      – инсталяторы не в ормате MSI,
      – обновления так же не годятся для распространнения в корпоративной сети
      3) Сторонние могут иметь проблемы с отображением PDF (ЕМНИП, PDF – закрытый формат)
      Для примера: STDU viewer криво отображает некоторые имеющиеся у меня документы

      >Тем более, что в нашем так называемом продакшн нахер никому не нужны зява скрипты в акробате
      потому и отключаю ;) Сам (до недавнего времени) не подозревал, что они в нем (Acroreader’е) имеют место быть.

  2. А если пойти путем использования смекалки и сноровки? Например Foxit, я его после обработки напильником доменной политикой развернул, а особо одаренным, ну например генералам настоящий? Тем более, что я думаю что вожди и менеджерат у вас в разных оушках

    • Смотрел в сторону FoxIt, особенно до выхода Acroreader 9.x (“восьмерка” от Adobe еще и сильно тормознутая была). Но с выходом “девятки” перестал. На хрена козе баян? Я развернул административную установку Acroreader’а, освежаю ее свежими патчами от Adobe по мере их выхода, ну и JScript отключил, и голова не болит. Не вижу преимуществ FoxIt перед “девяткой” в корпоративной среде, наоборот, вижу недостатки: необходимость работать напильником. Работает – не чини.

    • А теперь небольшой но очень важный вопрос. Вы чего в акробате такое передаете? Можно примерчик того, что не сможет разрулить тот же foxit или не приведи господи okular линуховый? Вот хочу сильно посмотреть! Чем девятка от восьмерки отличается … Блин как 1Ска ей богу :)

      • Речь шла не о том, что может FoxIt, а чего он не может. Речь шла об удобстве использования этого продукта (для меня, как для администратора) в корпоративной среде. IMHO, для того, чтобы развернуть акробат его обновления необходимо затратить гораздо меньше усилий.
        Вот, как вы, например, осуществляете обновление FoxIt на компьютерах пользователей?

        Upd. Уточню: речь идет о распространении обновлений, которые для FoxIt выпускаются достаточно регулярно.

        • Непосредственно к FoxIt viewer’у (касательно того, что он как-то неправильно отображал документы) у меня не возникало. Были претензии к STDU viewer’у, после чего я его снес (он не справился с отображением некоторых книг/документации технического характера, которые у меня есть. Какие файлы конкретно вызвали проблемы, сейчас уже не помню).

      • Мы, в свое время, пытались заменить Acrobat на FixIt. Практика показала, что это был ложный путь, начиная от административной установки и заканчивая проблемами с отображением конкретных файлов. А после выхода Reader 9 и проблемы со скоростью практически исчезли.

  3. Да будет срачь! :) Шутка.

    Как я уже говорил с pdf у мення сотрудники сталкиваются лишь в контексте того, что им скан с вложением отправляют. Следовательно если поступает звонок, “ну не можу открыть” …. А это у них постоянно в следствие отсутствия разума, то бум распространять обновления, если это не связано с отсутствием мозга …. А так … Пардоньте шибко сложные штуки нам никто не шлеть.

    • Ну, какой же это срач? ;) Обмен мнениями ;)
      Вот, видите, я даже не знал (только подозревал), что у FoxIt reader’а бывают проблемы с отображением PFD. Вы мои подозрения подтвердили. Но, я, на самом деле, когда говорил об обновлениях, имел в виду другую их сторону: затыкание дыр в безопасности программы. Программ без ошибок не бывает (если это конечно не программа, выводящая “Hello world”). И, если производитель заботится о своем продукте, он будет выпускать обновления. И чем популярнее программа, тем чаще в ней будут искать и находить уязвимости. Безопасность – это не состояние, но процесс, и именно потому безопасна та программа, производитель которой латает дыры, а не та, которая не обновляется из-за того, что якобы не содержит дыр. Посему, я и использую Adobe Acroreader, что его
      1) удобно распространять в корпоративной
      2) удобно обновлять в корпоративной среде
      Ну, а лишний и не нужный мне функционал я, опять таки, из соображений безопасности отключаю. Это касается того самого JavaScript’а, о котором шла речь выше, так и других частей и модулей, которые я даже не инсталлирую или отключаю до этапа установки, настроив при помощи Adobe Customization Wizard 9 инсталятор.

  4. Pingback: Установка приложения в корпоративной среде при помощи групповых политик (на примере Adobe Acrobat Reader). « ShS's Blog ShS's Blog

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.