Если говорить о безопасности, то операционная система будущего во многом уже создана. Разработчики ОС во главе, как ни странно, с Microsoft и некоторыми другими производителями ПО делают свои продукты более защищенными по умолчанию. Кроме того, они предоставляют программистам инструменты и руководства на основе передового опыта, чтобы те могли повысить безопасность приложений. Если бы все пользовались последними версиями ПО и применяли современные методы его создания, будущее наступило бы уже сегодня.
Увы, так легко вопросы не решаются. Интернет породил усугубляющуюся проблему безопасности ПО, а защита веб-браузеров и другого предназначенного для работы в Интернете ПО превратилась в важнейшую задачу разработчиков средств безопасности. Приемы, предназначенные для защиты этих программ, будут использоваться в других приложениях и даже в самом ядре ОС.
Последние исследования в области безопасности выявили незначительное количество взломов защиты, созданной с помощью DEP (data execution prevention), ASLR (address space layout randomization) и других системных технологий. Но разработчики этих инструментов понимают, что не создают непреодолимого барьера. Такие инструменты представляют собой лишь препятствия для эксплойтов, которые все труднее и труднее совершенствовать. Чем больше таких препятствий, тем сложнее воспользоваться эксплойтом в реальных условиях (в отличие от лабораторных) и тем менее серьезные последствия будет иметь такой эксплойт. Это называется полноценной защитой.
Хорошие новости заключаются в том, что эти технологии не должны повлиять на работу приложений (за исключением некоторых редких случаев) и что вы получаете защиту бесплатно. Они изначально предназначены для борьбы с некоторыми приемами программирования, особенно с самомодифицирующимся кодом, как это и должно быть. Подлинная проблема, с которой мы сталкиваемся на протяжении многих лет с тех пор, как в Windows были реализованы DEP и ASLR, заключается в том, что многие используемые нами приложения с ними не совместимы.
История усовершенствований
Возможны и другие системные усовершенствования, которые могут и должны реализовать разработчики ОС. Одно из них, “песочница”, имеет долгую историю развития в управляемых средах, таких как Java. Действительно, еще недавно многие считали, что подобные управляемые среды олицетворяют собой будущее ОС. Некоторые продолжают придерживаться этого мнения и сегодня, но заслуги Java и .NET в обеспечении безопасности не слишком впечатляют, хотя они вроде бы разрабатывались именно с такой целью.
Управляемые виртуальные среды повышают безопасность благодаря управлению памятью для приложений, например защите от ошибок в памяти. Обычно за это приходится расплачиваться производительностью системы. Проблема в том, что сами среды могут быть уязвимы и с годами в них обнаружилось довольно много брешей. Кроме того, помимо ошибок памяти существует такое множество категорий ошибок, что приложения не могут считаться защищенными лишь потому, что написаны в управляемой среде.
Тем не менее защита от ошибок в памяти имеет большое значение, и благодаря тенденции к переходу на управляемый код безопасность в целом повышается. Это одна из причин, по которым многие разработчики корпоративных программ стали использовать такие среды — от Java до ASP.NET. Трудно написать обычный код, тщательно проверенный с целью выявления уязвимостей. Это может потребовать такой квалификации, которой вы, возможно, не обладаете. Написание управляемого кода избавляет по крайней мере от явных ошибок. И, повторимся, это нисколько не труднее, если вы не будете использовать приемы, к которым прибегать не следует.
В среде Chromium, образующей основу браузера и ОС Chrome, корпорация Google подняла использование “песочницы” на новый уровень, обеспечив защиту оригинального кода, запускаемого в браузере. Это не избавило браузер Chrome от уязвимостей и влияния эксплойтов, но ограничило ущерб от действия последних, не позволяя им распространиться за пределы браузерной среды, возможности которой ограничены. Действительно, “песочница” Chromium работает в режиме пользователя. Поэтому никакие действия атакующего не выйдут за пределы возможностей пользователя, запустившего программу.
Примерно то же самое можно сказать о защищенном режиме (Protected Mode) в Microsoft Internet Explorer 7 и 8 под управлением Vista и Windows 7. В защищенном режиме функции браузера специально ограничены в соответствии с полномочиями пользователя, и он может осуществлять запись только в папки для хранения временных файлов.
Все эти приемы могут использоваться более широко в качестве функций приложений. Правда, и Chromium под управлением Windows, и защищенный режим используют особенности Windows, такие как уровни целостности (integrity levels), объекты задач (job objects) и ограничивающие маркеры (restricted tokens), которые не обязательно будут доступны на других платформах.
Таким образом, разработка “песочниц” может оказаться последней главой в давней истории — компромиссом между максимальной функциональностью и переносимостью между различными платформами. Но все зависит от того, как вы пишете свои программы. Если вы предназначаете их для запуска в “песочнице” Chromium и соблюдаете действующие в этой среде правила, вы добьетесь определенной переносимости наряду со всеми функциями Chromium, которые она предоставляет под Windows, Mac и Linux.
Обзор других платформ
Что доступно на названных выше платформах? В Linux имеется “песочница” под названием SECCOMP, которая первоначально предназначалась для работы в средах “коммунальных вычислений” с ограниченной скоростью. SECCOMP накладывает очень (да, очень-очень) жесткие ограничения. Запущенный в “песочнице” поток получает доступ только к весьма ограниченному числу системных вызовов — read(), write(), exit() и sigreturn(). Любой другой вызов прерывает поток. Это делает ее действительно защищенной, но бесполезной для реально использующихся программ.
Google пытается реализовать свою архитектуру “песочницы” Chromium в Linux. Но это не так легко сделать, как в Windows. С такими же проблемами столкнется корпорация и в случае с Mac. Здесь потребуются гораздо более хитроумные приемы. Но результатом станет среда, в которой приложения смогут безопасно работать, не имея возможности повредить другие элементы системы.
Это наиболее общая из существующих сегодня защищенных архитектур. Не исключено, что ОС Chrome могла бы стать чем-то большим, чем просто веб-браузер. Google не предоставила достаточно информации, чтобы об этом можно было говорить с уверенностью. Но, возможно, любая программа, запущенная в среде Chromium на ПК или Mac, будет работать под управлением ОС Chrome. Или не будет, поскольку браузер является единственным интерфейсом пользователя для ОС Chrome.
Защищенный режим IE и защищенный просмотр (Protected View) в Microsoft Office 2010 демонстрируют примеры философии, которая будет определять характер будущей ОС — минимальные привилегии. Идея заключается в том, что ни один пользователь или процесс не должны иметь никаких привилегий сверх минимально необходимых. Идея не нова. Она давным-давно реализована в Unix и ее дериватах, но была недоступна для широкого применения.
Масштабному использованию минимальных привилегий в Windows препятствуют две проблемы: плохо спроектированные приложения, которые без всякой необходимости требуют от пользователя прав администратора, и плохая поддержка обычных пользователей в Windows XP. Windows Vista и Windows 7 обеспечивают гораздо лучшую поддержку обычных пользователей, но на многих предприятиях сохраняются проблемы с унаследованными приложениями. Если вы по-прежнему рискуете своей безопасностью, предоставляя пользователям расширенные права, необходимые для запуска таких приложений, значит вам необходимо найти способ от этого отказаться.
Это не какая-то функция, которой вы можете воспользоваться самостоятельно. Кроме того, ОС будущего будет подвергнута более тщательному тестированию. Недавно исследователь Чарли Миллер, запустив на три недели программу для выявления брешей в ПО (fuzzer), выявил в Mac OS X 20 критические уязвимости. Почему корпорация Apple не использовала такие программы? В действительности, Apple в данном вопросе движется в правильном направлении, как и большинство производителей ОС, но недостаточно быстро.
По мере совершенствования защиты с помощью минимальных привилегий, “песочниц” и других приемов хакеры станут переходить к взлому самой ОС, многим компонентам которой необходимо работать в привилегированном режиме. Обезопасить этот код будет намного сложнее. Но компании уже работают над данной проблемой. Среди них — grsecurity (www.grsecurity.net), создающая Linux-системы, в которых пытается уменьшить полномочия ядра и управлять ими.
Избавление от груза прошлого
Наконец, и это, наверное, самое важное, ОС будущего не позволит работать созданным в прошлом приложениям и системному ПО (например, драйверам устройств). Она просто обязана это сделать. Старые приложения, особенно требующие высоких привилегий, не смогут использовать новые средства повышения общей безопасности в системе.
Теперь совершенно ясно, что важнейшие приложения, в частности Acrobat, создают основную брешь, через которую вредоносный код проникает в систему. Заставив последующие версии Acrobat стать более защищенным, ОС будущего защитит систему в целом.
Сходные изменения могут — или, лучше, должны — быть внесены в порядок обновления приложений. Устаревшие, уязвимые приложения представляют собой главное направление атак против системы. Если бы приложения могли устанавливать свои обновления с помощью централизованной службы вроде Windows Update, пользователям было бы легче поддерживать их на современном уровне, а ОС и приложениям было бы проще информировать пользователей о своем состоянии.
Я выдвинул эту идею некоторое время назад, и у меня создалось впечатление, что Microsoft не готова взять на себя ответственность за обновление ПО других компаний и обеспечить его поддержку. Но, безусловно, можно найти способ реализовать эту идею, поскольку она сулит каждому такие преимущества, которые нельзя игнорировать.
Для решения данной задачи предприятия на протяжении многих лет устанавливали системы управления “заплатками”. Предложенная мною унифицированная система обновления предназначается главным образом для частных лиц и малого бизнеса.
Можно не сомневаться, что основные производители ОС извлекли уроки из недавнего прошлого. Это все, что нужно операционной системе с точки зрения безопасности. Именно в этом направлении продукты и развиваются, если уже не прошли через эту стадию.
Мы находимся на таком этапе, когда при наличии желания и денег вы можете защититься от любых атак кроме, разве что, организованных наиболее целеустремленными и располагающими большими ресурсами хакерами. Однажды мы можем прийти к такой ситуации, когда даже обычные пользователи смогут сами себя защитить.