Они обнаружили уязвимость, которая может затронуть десятки библиотек открытого программного кода. Сюда относятся и те из них, которые используются программным инструментарием, реализующим стандарты OAuth и OpenID и выполняющим проверку имен и паролей пользователей при их подключении к сайтам. Аутентификация OAuth и OpenID применяется, в частности, на популярных сайтах Twitter и Digg.
Некоторые версии подобных систем идентификации уязвимы для так называемых атак по времени. Атаки эти известны специалистам по криптографии вот уже 25 лет, но до сих пор считалось, что они не приносят результата. Теперь исследователи пытаются доказать, что это не так.
Основная сложность при проведении атак по времени заключается в том, что они требуют очень точных измерений. Признаки аутентификации вычисляются путем измерения времени, которое компьютер затрачивает на проверку цифровой сигнатуры. Сервер проверяет зашифрованную сигнатуру признака, который пользователь посылает, с тем чтобы подтвердить свою легитимность при подключении к системе. При первом же обнаружении неверного символа сервер отсылает обратно сообщение об ошибке. В случае неверного начального символа сообщение об ошибке выдается чуть раньше, чем в том случае, когда начальный символ оказывается правильным.
Посылая сигнатуры снова и снова, варьируя символы и измеряя время реакции компьютера, хакеры могут вычислить правильную цифровую сигнатуру.
Атаки подобного рода позволяют злоумышленникам маскироваться под легитимных пользователей сайта, не проходя стандартную процедуру подключения и регистрации.
Все приведенные выше выкладки могут на первый взгляд показаться лишь теорией, но дело в том, что и в реальности атаки по времени вполне могут завершиться успехом. Три года назад, например, хакер взломал игровую систему Microsoft Xbox 360. Специалисты, занимающиеся разработкой смарт-карт, на протяжении многих лет добавляют в свои системы различные средства защиты от атак по времени.
Довольно долго создатели сайтов считали, что есть слишком много других факторов, объединяемых под общим термином «дрожания сети» (network jitter), которые замедляют или ускоряют процесс отклика, делая получение точных результатов практически невозможным. Ведь для успешной атаки по времени даже отличия в наносекунды могут сыграть существенную роль.
Нейт Лоусон, глава консультационной компании Root Labs, намерен доказать неправомерность такого предположения. По результатам тестирования атак, совершаемых через Интернет, локальные сети и облака, исследователи пришли к выводу, что взлом паролей во всех этих средах возможен за счет применения алгоритмов, нивелирующих воздействие дрожания сети.
Думаю, что людям нужно серьезно задуматься об этой уязвимости и заняться ее устранением, — отметил Лоусон. — Мы специально решили обратить свое внимание на веб-приложения, которые зачастую считаются неуязвимыми для атак по времени. Мне хотелось бы достучаться до тех, кто слабо представляет себе сложившуюся ситуацию.
Исследователи обнаружили, что запросы в программах, написанных на интерпретируемых языках типа Python или Ruby (и тот и другой весьма популярны в Web), выполнялись значительно медленнее, чем в программах, написанных на Си или ассемблере. В результате шансы на успех при проведении атак по времени заметно возрастают. «В интерпретируемых языках временные различия проявляются гораздо отчетливее», — подчеркнул Лоусон.
На данном этапе атаки подобного рода в большинстве случаев не должны вызывать никакого беспокойства, — считает директор Yahoo по стандартам Эран Хаммер-Лахав, принимавший участие в реализации проектов OAuth и OpenID. — Не думаю, что крупные провайдеры используют на своих серверах библиотеки с открытым кодом, но, даже если это и так, технически осуществить подобную атаку весьма непросто.
Лоусон и Нельсон указали, что разработчики программного обеспечения активно занимаются данным вопросом, но не стали приводить названия конкретных продуктов до устранения имеющихся в них уязвимостей. Для большинства библиотек можно предложить очень простое лекарство: разрабатывать системы таким образом, чтобы они реагировали на корректные и некорректные пароли через одинаковые промежутки времени. Для этого достаточно вставить в программу всего несколько строк дополнительного кода.
Интересно, что приложения, функционирующие в облаке, иногда оказываются даже более уязвимыми для атак подобного рода. Такие сервисы, как Amazon EC2 и Slicehost, предоставляют атакующим возможность уменьшить эффект дрожания сети.
По мнению Скотта Моррисона, технического директора компании Layer 7 Technologies, существуют объективные причины, затрудняющие проведение атак по времени в облаке.
Поскольку в облаке за вычислительные ресурсы соперничает множество виртуальных систем и приложений, получить какие-то устойчивые результаты здесь довольно сложно, — пояснил он. — В системе появляются факторы непредсказуемости, о которые и разбиваются проводимые атаки.
Тем не менее указанные исследования имеют весьма важное значение. Благодаря им мы видим, что кажущиеся почти невозможными решения на практике при определенных условиях оказываются вполне реальными.