Помните мой недавний пост по проблеме контроля над приложениями?
Любопытно, после него мне в личку насыпалось много идей. Особняком стояли несколько циничных каментов, мол, «да это всё можно на коленке сделать!». Ага, сложно не согласиться. И антивирус можно самому на коленке написать, и самолёт построить и велосипед изобрести. Я серьёзно – можно ведь! Дело упирается в другое – время, ресурсы и качество реализации.
С контролем над приложениями ситуация другая.
Действительно, на поверхности лежит простая реализация такой фичи: создаём домен, прописываем в нём пользователей, включаем политику ограниченного использования программ, создаём MD5-базу доверенных/запрещённых приложений и вроде как всё. Именно, что «вроде», потому что при первом же обновлении софта (а софт нынче ох как любит часто обновляться) сисадмину придётся писать базу заново! И пока это не сделать обновлённые программы работать не будут, от пользователей посыпятся гневные письма и звонки, а босс так вообще будет … ммм… очень недоволен. И так постоянно – добро пожаловать на аттракцион «belka v kolese».
Здесь всплывает одна незаметная, но мега-полезная фича нашего контроля над приложениями – Trusted Updater (или, как говорят наши разработчики — «доверенный обновлятор»). Она не только автоматически обновляет установленные программы и актуализирует базу данных доверенного софта, но и следит за наследованием «доверенности» программами, которые были вовлечены в процесс обновления. Ну, первое просто и понятно, а вот второе требует пояснения.
Рассмотрим пример. Есть некий «обновлятор», который в процессе обновления он запускает, скажем, браузер (например, чтобы показать пользовательское соглашение) и передаёт ему свои привилегии. Но что происходит, когда обновление завершено? Догадываетесь к чему это я клоню? Да! В некоторых продуктах браузер действительно наследует привилегии вызвавшей его доверенной программы пока его не перезапустят! Т.е. он может выполнять действия, которые по политике безопасности ему запрещены – например, качать что-то из Интернета, а самое главное запускать это. Более того, сам браузер получает возможность вызывать дополнительные программы и уже им передавать права апдейтера.
Получается, что одно-единственное обновление может порушить вообще всю систему безопасности. И «это не баг, а фича» ©
Наш же Trusted Updater контролирует обновление и как только процесс завершился, восстанавливает привилегии по всей цепочке задействованных программ. Важно, что наша система ещё и заранее знает, какой «обновлятор» является доверенным – для них есть специальная категория в нашей Whitelist-базе. Кроме того, если сисадмин хочет, он может сам добавить любые «обновляторы» в эту категорию — никаких забот и хорошая прибавка к уровню защиты от всяких хитрых бэкдоров.
Дальше: 4 варианта реализации