klink0v (klink0v) wrote,
klink0v
klink0v

Пляски с повышением привилегий в Windows. Часть 1: 1С

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

У этой чудо-программы обновление справочника банков реализовано весьма странным образом. Сначала с сайта "РосБизнесКонсалтинг" во временную папку профиля пользователя (который запустил экземпляр приложения 1С), куда-нибудь в "AppData\Local\Temp\xx\tempBik\", скачивается самораспаковывающийся MZP-архив под названием "bnk.exe". Затем этот EXE-шник тупо запускается самой 1С-кой. При этом в атрибутах этого файла зачем-то прописано, что он должен запускаться обязательно с повышением привилегий. Таким образом, обычный непривилегированный пользователь не может обновить справочник банков. Ему для этого необходимо либо выдать права локального администратора, либо сообщить пароль оного для повышения привилегий.

Надо ли объяснять, что ни того, ни другого нормальному одмину делать не захочется? Что делать? Ставить Microsoft Application Compatibility Toolkit и создавать в нём отдельное правило для этого самого "bnk.exe".

Запускаем версию, подходящую под нужную нам архитектуру с из-под администратора с повышением привилегий. Выбираем либо новую, либо уже имеющуюся базу данных. Говорим "Создать новый"→"Application Fix"

Имя-описание придумываем сами. В поле "Program file location" натравливаем утилиту на файл "bnk.exe", скачанный с РБК по ссылке выше. Где (в какой папке) он будет лежать, не играет никакой роли. Об этом подробнее расскажу чуть ниже.

В качестве применяемых фиксов указываем (ставим галку) "Run as Invoker". Поскольку саму утилиту мы запустили с повышенными привилегиями из-под админа, то и bnk.exe потом будет запущен с такими же правами.

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

Затем сохраняем где-нибудь нашу базу данных (это обязательно).

После сохранения говорим "Install".

И делаем logoff→logon для требуемого пользователя, поскольку новые правила применяются в момент входа в систему.

Теперь оно работает. Но! Это даже не дыра, это огромная пропасть в безопасности. Любой пользователь теперь может загрузить на сервер произвольный исполняемый файл, поместить его в любую папку, переименовать его в "bnk.exe" и запустить с правами суперпользователя.

А что делать? Другим способом решить поставленную в начале псто задачу за разумное время не получится. Всем сисадминским сообществом дружно шлём лучи поноса 1С-у, Борису и РосБизнесКолсантингу.

Продолжение следует.



Ретранслировано из Я.ру
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments