Введение
Мы продолжаем цикл статей о персональной компьютерной безопасности, и сегодня мы пообщаемся с Коллином Джексоном (Collin Jackson) и Адамом Бартом (Adam Barth) на тему функций безопасности нового браузера Google Chrome. Коллин и Адам входят в группу Web Security Group в Стэндфордском университете. Коллин всё ещё учится в аспирантуре, а Адам уже защитился там же. Двоих исследователей объединяет то, что они уже успели поработать в Google, где они были ведущими аналитиками архитектуры безопасности ядра Chromium, на котором построен браузер Google Chrome.
THG. Спасибо за то, что нашли время пообщаться. Давайте начнём с самого начала, расскажите немного каждый о себе. Как вы решили специализироваться в исследованиях безопасности, и почему вы оба выбрали Стэнфорд?
Коллин Джексон. Я выбрал Стэнфорд, поскольку в этом университете замечательный профессорский состав, работающий в широких областях, а я ещё не знал, куда меня потянет. Когда я начал учиться, я погрузился в безопасность web, поскольку все наиболее интересные приложения стали переходить на web, но модель безопасности web в деталях была ещё плохо изучена.
Адам Барт. Безопасность заинтересовала меня, когда я ещё был школьником. Я часто занимался тем, что придумывал коды, которые предлагал взломать своим друзьям. Я поступил в Стэнфорд, поскольку я лично связан с этим университетом: я вырос в Пало-Альто, а моя мама была профессором в школе бизнеса.
THG. Когда я проходил курс CS106B, то занял первое место в конкурсе программирования (самый быстрый алгоритм Panex Puzzle). Инструктор был как раз из Google, причём он проработал там всего полтора года. Я всегда думал, смогу ли я начать работать в Google, если захочу продолжать карьеру программиста. Насколько интересно работать в Google?
Адам Барт. Лично мне больше всего понравилось в Google то, что у меня была возможность использовать всю их массивную вычислительную инфраструктуру для экспериментов. Например, мы использовали эту инфраструктуру для оптимизации безопасности алгоритма контент-снифинга Chrome (эти эксперименты привели к появлению следующего документа (англ.).
Прим. редактора. Браузеры используют алгоритм контент-снифинга (content sniffing algorithm), чтобы самостоятельно определить тип содержимого web-страницы (HTML-код, картинки и т.д.) и правильно её вывести. Атакующие могут использовать “дыры” в этих алгоритмах, чтобы “подсунуть” браузеру вредоносный код, который он выполнит. Подробнее рекомендую ознакомиться здесь (англ.).
THG. Несколько разработчиков недавно покинули Google, поскольку они посчитали работу слишком бюрократической. Насколько сложно было уговорить компанию на эксперимент, касающийся нового алгоритма, который использовал базу данных Google в миллиарды web-страниц в качестве рабочего массива, а затем убедить компанию использовать свою команду по контролю качества для проверки 500 топовых сайтов вручную? Как долго работал ваш алгоритм на массиве из миллиардов web-сайтов?
Адам Барт. Мы не встретили никакого сопротивления во время проведения экспериментов. Я не могу точно сказать, сколько времени мы потратили, но на проведение экспериментов ушло, безусловно, меньше времени, чем на их начальное планирование. Мы проводили данную работу в рамках сотрудничества с программой стандартизации HTML 5, и мы надеемся, что другие браузеры тоже могут выиграть от проведённых экспериментов, адаптируя алгоритмы контент-снифинга HTML 5.
“Сердце” Chrome
THG. Какой компьютер вы сейчас используете для повседневной работы? Какой браузер?
Коллин Джексон. Я пытаюсь не сотворить себе кумира, проводя одинаковое время за браузерами IE, Firefox, Safari, Chrome и Opera. Мой главный рабочий ноутбук – это Mac с VMWare Fusion, под которой работает Windows XP, но у меня есть под рукой компьютеры с Vista и Ubuntu, если они понадобятся.
Адам Барт. Я пользуюсь несколькими компьютерами, но мой любимый – Mac Mini, поскольку он очень маленький и тихий. Что касается браузера, то я, по большей части, использую Chrome 2 beta, но также иногда запускаю и IE 8, поскольку он относительно новый на рынке.
THG. Mac, похоже, любимые компьютеры среди разработчиков и исследователей систем безопасности. Одна из причин, по которым мы решили взять это интервью, как раз касается функций безопасности Chromium (ядро Google Chrome). Вас двоих просто попросили провести анализ Chromium или вы были глубоко вовлечены в разработку оригинальной концепции и её реализацию?
Адам Барт. Когда мы присоединились к проекту, команда уже решила вынести движок рендеринга в “песочницу” (sandbox), но такой шаг, сам по себе, недостаточен для безопасности. Нужно тщательно продумать интерфейс между ядром браузера и движком рендеринга. Например, как вы сможете позволить пользователям загружать файлы на web-сайты, если не разрешите движку рендеринга считывать произвольные файлы? Мы помогали команде разработчиков разобраться с подобными проблемами.
Прим. редактора. Техника “песочницы” (sandbox) предусматривает помещение приложения в среду с очень ограниченными правами. В таком случае даже если приложение будет атаковано и выполнит вредоносный код, оно не сможет навредить системе, поскольку не сможет выйти за пределы “песочницы”. Мы уже говорили об этой технологии в интервью с Дино А. Даи Зови.
THG. Какие целы были поставлены перед Chromium с точки зрения безопасности?
Коллин Джексон. Архитектура Chromium разработана для защиты от “вредоносов”, кражи файлов и кейлогов в случае, если будут найдены уязвимости в движке ренедринга. Кроме того, ядро Chromium задало стандарты индустрии по борьбе с “вредоносами” и фишингом, такие как Safe Browsing и Extended Validation. В Google Chrome данные функции дополняются алгоритмом автоматического обновления, который позволяет Google быстро “накатывать” исправления безопасности при необходимости.
THG. Наши читатели понимают разницу между многопоточными и однопоточными приложениями, когда дело касается производительности, но ядро Chromium изначально построено на нескольких процессах, а не на одном. Как это влияет не на производительность, а на безопасность?
Адам Барт. Разделяя браузер на множество процессов, Chromium может выгодно использовать функции безопасности, встроенные в операционную систему, чтобы заключить в “песочницу” движок рендеринга. Использование разных процессов также улучшает прозрачность интерфейса между компонентами, поскольку компоненты могут взаимодействовать друг с другом только через узкий и чётко определённый канал связи.
Игры в “песочнице”
THG. Получается, если атакующий сможет взломать движок рендеринга, он всё равно не сможет обойти ограничение по записи файлов, поскольку Windows даёт процессу рендеринга ограниченный доступ? И если атакующий при этом не сможет взломать защиту файлов Windows, то угроза безопасности будет устранена?
Коллин Джексон. Атакующий будет ограничен процессом рендеринга, что намного лучше, чем полное владение компьютером. Однако движок рендеринга отвечает за изоляцию в зависимости от происхождения ресурса. Если она взломана, то атакующий может нарушить изоляцию и проникнуть в сеансы с другими сайтами.
THG. Что ты подразумеваешь под изоляцией в зависимости от происхождения ресурса (origin isolation)?
Коллин Джексон. За некоторыми исключениями, подобными библиотекам скриптов, web-приложения должны считывать данные с оригинального сервера, который обслуживает приложение. Подобная изоляция не позволяет злоумышленнику attacker.com считывать письма в открытой учётной записи в Gmail, например. Однако некоторым сеансам движка рендеринга часто приходится обрабатывать данные с нескольких источников, поэтому Chromium позволяет движку рендеринга самостоятельно определять рамки подобной политики.
THG. Что происходит, когда вы запускаете браузер Chrome с безопасными плагинами (safe plug-ins)?
Адам Барт. Опция безопасных плагинов – экспериментальная функция, которая заставляет Google Chrome запускать плагины (подобные Flash Player и Windows Media Player) тоже внутри “песочницы”. Заключение плагинов в “песочницу” позволяет уменьшать эффект от наличия уязвимостей в этих плагинах, но может помешать некоторым функциям плагинов. Например, плагин в “песочнице” не сможет автоматически себя обновить.
THG. Чтобы получить преимущество от большинства функций безопасности, нужно работать под NTFS и Windows Vista. Что ты может сказать про FAT32 и Windows XP – пользователь будет более уязвим к атаке?
Адам Барт. Файловая система FAT32 не поддерживает права доступа к файлам, поэтому система Windows не может предотвратить доступ движка рендеринга к файлам FAT32. Как показывает практика, большинство пользователей Windows работают на файловой системе NTFS, которая стала стандартом после Windows 2000. Есть некоторые незначительные отличия в “песочницах” между Windows XP и Windows Vista, но они, по большей части, теоретические.
THG. Как Chromium поддерживает совместимость с закачкой файлов через web? Есть ли примеры того, как “песочницу” между движком рендеринга и ядром браузера удалось обойти?
Адам Барт. Чтобы обезопасить закачку файлов, мы использовали трюк. Ядро браузера отображает диалог выбора файла и отслеживает, какие файлы указал пользователь. Затем, когда движок рендеринга запрашивает файл для закачки, ядро браузера проверяет, что пользователь выбрал для закачки именно этот файл. Без подобной проверки взломанный движок рендеринга мог бы считывать произвольные файлы и закачивать их злоумышленнику на attacker.com.
THG. Зачем ограничиваться движком рендеринга и ядром браузера? Почему не разделить Chrome на ещё большее количество “песочниц”, чтобы, например, база кук и система отрисовки окон были отделены друг от друга, как и всё остальное?
Коллин Джексон. Разбивание браузера на “песочницы” не обходится “бесплатно” – за всё это приходится платить производительностью, да и разработчикам выполнять свои задачи сложнее. Более того, компонент в “песочнице” настолько мощный, насколько ему позволяет интерфейс, поэтому нужно очень аккуратно подходить к разработке интерфейса, чтобы не сделать из него лазейку в систему. Несмотря на подобные препятствия, мне кажется, что будущее за чётко определёнными “песочницами”, и мне нравится, что разработчики идут в данном направлении.
Сравнивая с конкурентами
THG. Если говорить о других браузерах, рождённых в исследовательских лабораториях, то как насчёт DARPABrowser, разработанного в рамках контракта с Defense Advanced Research Projects Agency? Если JavaScript вообще отключить, то сможет ли Chrome обеспечивать такой же уровень безопасности?
Адам Барт. У DARPABrowser были совершенно другие задачи безопасности по сравнению с Chromium. Например, DAPRABrowser должен был ограничить вред, который может нанести взломанный движок рендеринга при просмотре “честной” web-страницы. Учёт подобных угроз приводит к созданию привилегированных компонентов, таких сложных, как движок рендеринга, и при этом не очень понятно, нужна ли вам подобная безопасность.
THG. Перейдём к коммерчески доступным web-браузерам. Чем защищённый режим “Protected Mode” в Internet Explorer отличается от того, что делает Chromium?
Коллин Джексон. Protected Mode разработан для защиты локальных файлов от перезаписи злоумышленником, который станет использовать какую-либо уязвимость браузера. Неплохое начало – оно усложняет атакующему установку “вредоноса” в систему. Но атакующий всё равно может считывать все ваши файлы. В файловой системе немало важной информации, и именно поэтому архитектура Chromium в такой же степени нацелена и на защиту конфиденциальной информации.
THG. Opera сделала важный шаг вперёд, поддержав бит NX и ASLR. Эти функции также поддерживает и IE8. А в Chromium они реализованы?
Адам Барт. Конечно. Chromium поддерживает бит NX, ASLR и StackCheck.
THG. Хотя Mac OS X Leopard обеспечивает меньше функций безопасности, чем Windows Vista или Windows 7, эта система всё равно даёт большую безопасность, поскольку под неё создано меньше эксплойтов. Дино А Даи Зови в недавнем интервью сравнил ситуацию со входной дверью в вашу квартиру, которую вы оставляете незапертой. Насколько такой подход безопасен или нет, зависит от района, где вы живёте. Какие существуют технические сложности реализации “песочниц” Chromium под другими операционными системами, такими как Mac OS X или Linux?
Адам Барт. Mac OS X имеет мощный встроенный механизм “песочниц”, которым может пользоваться Chromium для своего движка рендеринга. Насколько я понимаю, там есть некоторые трудности при выводе на экран в приложении, состоящем из нескольких процессов, но, как мне кажется, разработчики найдут правильное решение. В разных дистрибутивах Linux предлагаются разные механизмы “песочниц”, включая SELinux и AppArmor. Разработчики под Linux на данный момент оценивают, какой из механизмов лучше всего соответствует потребностям безопасности Chromium.
Куда дальше?
THG. Google открыла исходный код Chromium в надежде, что другие компании примут модель безопасности. Если сотрудничество и помогает консолидировать ресурсы, оно, вместе с тем, ограничивает разнообразие идей. Какие другие модели безопасности, помимо “песочниц”, были использованы?
Коллин Джексон. Другим подходом к устранению уязвимостей является написание большей части браузера в так называемом управляемом коде (managed code). Движки рендеринга фантастически сложные, и при этом им нужно оставаться быстрыми, поэтому они – хороший кандидат на работу неуправляемого кода в “песочнице”. Однако ядро браузера в привилегированном режиме можно сделать довольно простым, поэтому если вы перенесёте его в безопасное окружение, подобное Java или .NET, вы можете получить защиту как внутри, так и снаружи “песочницы”. Есть подобный проект Microsoft Research под названием Gazelle, который пытается это реализовать.
THG. До сих пор наше интервью фокусировалось на Chromium, но мне кажется, что в Стэнфорде вы пробовали и другие платформы. Я уверен, что вы будете рекомендовать Chrome для пользователей Windows Vista, но какой браузер лучше использовать тем, кто сидит под Mac и Linux?
Адам Барт. Я против использования IE 6 под Wine. Браузеры немало продвинулись вперёд за последние 8 лет. Если вы по-прежнему пользуетесь IE 6, то сделайте апгрейд.
THG. Какой же браузер работает на твоём Mac Mini (Адам) или на твоём ноутбуке (Коллин)?
Адам Барт. На моём Mac Mini я обычно пользуюсь Firefox, поскольку Safari часто работает с тестовой сборкой WebKit в отладчике, что несколько смущает, если, например, пользоваться им ещё и для Gmail. Если же нужно отлаживать Firefox, то я обычно переключаюсь на Safari или Opera.
Коллин Джексон. Да, распространенная ситуация. Я пользуюсь любым браузером за исключением того, который я в данный момент отлаживаю, поскольку ненавижу перезапускать браузер.
THG. Последний вопрос: поскольку вы прошли через всё это, то какой совет можете дать школьникам и студентам, которые хотят сделать карьеру в компьютерных науках?
Коллин Джексон. Хороший способ засветиться – участвовать в реальной разработке программного обеспечения и общаться с другими разработчиками со схожими интересами, чтобы сделать свой вклад в какой-нибудь проект с открытым исходным кодом. Вам даже могут за это заплатить через программу Google: Summer of Code. К сожалению, дедлайн по сдаче приложений для программы Summer 2009 был третьего апреля. Но никто не мешает попробовать свои силы в следующий раз.