Обжить уязвимость
Математик Илья Щуров — о том, чем грозят уязвимости в процессорах рядовым пользователям
Понятно, что от вновь открытых уязвимостей спастись надежно не получится. Нет простого решения. Мы проснулись в новом мире, который оказался менее безопасным, чем мы считали: где и что вылезет в связи с этим, какие проблемы еще появятся — никто до конца не знает.
Один из удивительных фактов состоит в том, что для объяснения того, как работают уязвимости со страшноватыми названиями Meltdown (англ. расплавление, иногда — крах) и Spectre (призрак), не нужно много труда. За полуторачасовую лекцию студентам первого курса Computer Science (компьютерных наук) я готов сделать все понятным. Но догадаться, что это так может сломаться, лучшие компании мира не могли. Пока не настал день "икс".
Важно понять, что все технологии делаются людьми, которые находятся в определенных экономических условиях. Естественное желание в условиях рынка — изготовить все побыстрее и подешевле. Поэтому проблемы безопасности являются проблемами не столько техническими, сколько социально-экономическими. Никто не хочет нести большие издержки, вкладываясь в безопасность. С такой позицией пытаются по-разному бороться. Скажем, та же авиационная промышленность — страшно зарегулированная отрасль: ты не поднимешь самолет в воздух, пока тебя тысячу раз не проверят. В информационных технологиях пока не так, потому что, как представляется, ставки в случае "крушения" не столь высоки.
Получается картинка: на рынок IT регулярно выводятся сотни и тысячи разных продуктов — операционных систем, браузеров, приложений и прочего, в каждом из которых могут быть ошибки. Ситуация была бы совсем патовой, если бы рынок не выработал каких-то механизмов самоконтроля. По счастью, они есть. Собственно, существует целый класс людей, которые специально ищут в выпущенных продуктах ошибки. Эти люди могут быть мотивированы разными целями. Кто-то работает на черном рынке: ищет уязвимости и продает их плохим парням, которые понимают, как на таких ошибках нажиться. Кто-то академический ученый, он надеется написать хорошую научную статью и занять прочное место на кафедре. Кто-то консультирует другие компании по части безопасности, и ему важно заработать себе имя и репутацию. В любом случае, если вы играете "по-белому", то тоже можете преуспеть: скажем, продать сведения об уязвимостях, но хорошим людям, то есть разработчикам программного обеспечения и железа. Последнее возможно потому, что сами разработчики пытаются создать вместо черного рынка уязвимостей — белый, и часто объявляют своего рода конкурсы на проверку своих продуктов. Условия конкурса обычно такие: если вы найдете уязвимость у нас, и никому ее больше не покажете в течение условленного времени (месяц--полгода), мы заплатим вам деньги, а уязвимость устраним. И если почитать статью исследователей, которые обнаружили то, что теперь окрестили "чипокалипсисом", то выяснится, что они как раз из таких "белых продавцов" и благодарят компанию Intel за финподдержку. Вознаграждение нашло героев, поскольку они следовали процедуре "ответственного раскрытия информации об уязвимости". Эта процедура как раз предполагает, что не нужно сразу кричать о проблеме всему свету: иначе ею смогут воспользоваться плохие парни,— нужно помочь разработчику исправиться, договорившись при этом о дате, когда информация станет публичной. Поэтому, хоть уязвимость и была обнаружена летом, узнали мы о ней только сейчас, когда ее успели подлатать.
Проблема в том, что никто не знает, не была ли эта уязвимость кем-то обнаружена раньше. На самом деле, не одна, а три команды — одновременно и независимо — пришли к тому результату, о котором и сообщили разработчикам. Они все из команд "белой стороны". Были ли какие-то команды с "черной стороны", не известно.
Как это работает
Я попробую в двух словах сказать, как устроена уязвимость. Компьютер состоит из разных частей. Одни из них работают быстрее, например процессор, главный "мозг" устройства, другие — медленнее, например оперативная память. Процессор выполняет программу строчка за строчкой: сделай то-то, запроси такие-то числа, сложи их, положи результат в такую-то ячейку... Часто возникает ситуация: "мозг" запрашивает некоторую информацию из памяти и ждет, пока память эту информацию выдаст. Процессору ждать не хочется, он старается что-то делать параллельно. Но иногда не может, потому что от того, какая информация вернется, зависит, какие действия предпринять. У него возникает развилка: если вернулось одно, идти направо, если другое — налево. Но что удивительно, даже в этой ситуации, стоя на развилке, процессор пытается забегать вперед — и это сильно ускоряет работу современных компьютеров. Он как бы говорит: ну хорошо, я вот эту информацию запросил у оперативной памяти, я еще не знаю, куда мне идти, но в прошлый раз нужно было идти направо. Пойду-ка я и сейчас направо, немножко пройдусь туда, если вдруг мне из памяти вернется, что идти нужно налево, я забуду все, что сделал, и буду делать по-новому. А если окажется, что я пошел правильно, то и отлично — я сэкономил время. Опасный момент в том, что когда происходит возврат, он не совсем полный. Вроде бы процессор все забывает, но следы проделанного остаются. Они довольно тонкие. Это что-то вроде тепла лампочки накаливания, которую уже выключили, которая уже не светит, но все еще греет. Почему все это важно?
Потому что компьютер "забегает вперед" даже тогда, когда забегать вперед ему, по факту, нельзя. То есть в оперативной памяти могут прямо содержаться сведения, что производить какие-то действия с той или иной информацией не разрешается, но он по привычке, не дождавшись ответа, начинает с этой информацией работать. И пользователь-злоумышленник, аккуратно подбирая входные данные к программе, может заставить ее неявно раскрыть секретную информацию, использованную процессором. Надежда возлагалась на то, что все "досрочные" и небезопасные действия процессора можно надежно забыть. Однако лампочка остается теплой. И да, это выяснили только сейчас.
Чипокалипсис сегодня
Своеобразным новогодним поздравлением стало заявление компании Intel о наличии в их процессорах уязвимостей Meltdown ("Крах") и Spectre ("Призрак"). При этом известии вздрогнули миллионы пользователей: процессоры этой компании составляют львиную долю мирового рынка.
Что это для пользователя
Пока не установлено, что эта уязвимость подходит для проведения активных атак, то есть для того, чтобы заставить компьютер выполнить до конца какую-то вредоносную команду. Замечу, пока. Установлено, что возможны пассивные атаки, связанные с раскрытием информации и "утечками". При этом очевидно, что всякую раскрытую информацию можно использовать впоследствии для активной атаки.
Начнем с самого близкого нам пользовательского уровня. Браузер, с помощью которого вы выходите в интернет, знает ваши пароли и даже предлагает их запомнить. При этом когда вы открываете любую веб-страницу, помимо текста и каких-то картинок, видите разные интерактивные объекты. Существуют особые программки, написанные на языке JavaScript, которые делают интерактивность возможной и запускаются браузером на компьютере, когда мы гуляем по сайтам. Мы не контролируем работу таких программ, но в целях безопасности им запрещается выходить за пределы браузера, получать информацию с нашего компьютера или знать, что сам браузер знает о нас. Например, запомненные пароли. Но, как следует из обнаруженной уязвимости Spectre, злонамеренный JavaScript при определенных обстоятельствах может получить доступ к информации, которую, по идее, знать не должен. Это, конечно, проблема. Самое печальное, что многие системы распространения рекламы устроены таким образом, что сайт, на котором размещена интерактивная реклама, не отвечает за ее "рабочий" код JavaScript. То есть вы можете ходить на самые респектабельные сайты и при этом из-за случайной рекламы "попасться". Некоторые комментаторы писали, что теперь использование специальных программ блокировки рекламы на сайтах является необходимым условием безопасности. Но тут возникает другая неприятность: без рекламы 90 процентов сайтов закроются.
Разработчики браузеров уверяют, что конкретно эта проблема уже решена или может быть скоро решена. Но до какой степени и насколько надежно, не понятно. Ярких утечек в этой связи мы пока не знаем, но это не значит, что их нет.
Далее можно построить простое рассуждение о том, как подобная уязвимость способна вызвать к жизни "активную атаку". Очень реальный сценарий: когда ты заходишь на сайт своего банка, ты должен быть уверен, что он подлинный. Это возможно, поскольку у сайта банка внутри зашит особый секретный код — SSL-сертификат, который он "показывает" браузеру в доказательство. (Сам код при этом не передается, но браузер может проверить, что он правильный.) Если секретную информацию, которая относится к SSL-сертификату, стащить, злоумышленник сможет прикинуться сайтом банка и выполнить атаку "человек посередине": ты делаешь какие-то действия и думаешь, что ты находишься на сайте банка, а на самом деле ты на сайте некоего посредника, который потом под твоим именем зайдет на настоящий сайт банка и сделает, что сам захочет. Тут можно украсть много денег.
И не только денег. Промышленный шпионаж, политический компромат — легко представить спектр возможного использования такого рода уязвимости. Мир с подставными сайтами и подставными программами, где никому нельзя доверять.
Что это для бизнеса
Понятно, что вручную делать атаку на меня или на кого-то одного из читателей — не интересно. Если, конечно, у кого-то нет на нас большого зуба. В целом злоумышленникам всегда интересно написать систему, которая будет автоматически атаковать всех, кто попадется. Или сразу атаковать бизнес.
Сегодня многие фирмы активно пользуются тем, что называется облачная архитектура. Речь о чем: ты можешь купить себе физический сервер, на котором будут работать твои сайты. Однако это дорого и трудоемко. А можно использовать "виртуальный сервер", то есть такую технологию, которая делит один физический сервер на несколько изолированных отсеков, каждый из которых может стать твоей полноправной собственностью. Это как жилье в многоквартирном доме: не обязательно покупать всю многоэтажку, чтобы жить независимо в своей квартире. Однако теперь выяснилось, что эта технология уязвима. Оказывается, что хотя мы и живем все в разных квартирах, можно по "воздухопроводу" проникнуть в чужое жилье и подсмотреть, что там происходит. Это неприятно. Конкретно для этой уязвимости выпущены заплатки, и есть надежда, что провайдеры облачных сервисов их оперативно установят и они сработают.
Наконец, притягательной целью для хакеров выглядят криптовалюты. Почему так? Смотрите: если кто-то сделал копию вашей банковской карточки, от вашего имени совершили какую-то транзакцию, а вы можете доказать, что ее не совершали, то вам, скорее всего, вернут деньги. В случае с криптовалютами все не так. Там нет никаких инстанций, которые бы могли разрешать конфликтные ситуации. Нет людей. Там все решает алгоритм — и как раз это самое крутое в криптовалюте. Но если ваш закрытый ключ, с помощью которого вы делаете транзакции в криптовалюте, кто-то перехватит (а это теперь возможно), жаловаться некуда. Это может серьезно сказаться на будущем биткойнов и других "свежих денег".
Как же быть?
Наши "ястребы" могут ратовать за переход на свое "железо" и ПО, но с точки зрения безопасности это довольно абсурдно. Из общих соображений следует, что если вам есть, что скрывать, вам лучше использовать наиболее популярный на рынке инструмент, потому что его чаще атаковали и он лучше защищен. Если вы используете экзотический инструмент и вы никому неинтересны — это тоже вариант. Но если лично вы интересны, и при этом используете что-нибудь самописное, то взломать вас будет проще: потребуется меньше времени и сил. Когда вы создаете собственные операционные системы, вы создаете собственные уязвимости, причем уязвимости самой начальной ступени, которыми легко воспользоваться. А сделать что-то большое в IT без ошибок в одиночку — просто невозможно.
Проблема в том, что нет такого человека, который бы понимал, как работает современный микропроцессор. Нет человека, которого можно было бы поместить в лабораторию, дать ему все инструменты и попросить: сделай мне сейчас микропроцессор. Технология слишком сложна.
Сейчас разработчики пишут программы, чтобы закрыть большую часть уязвимостей. Что такое эти программы? Заплатки. Есть надежда, что они нас спасут, но это не гарантия. Когда мы начинаем латать дыры, мы наверняка что-то пригоним не очень точно, а где-то еще и устроим новую щель. Именно в этом глобальная проблема того, что вскрылось в начале года — мы не можем придумать ничего лучше заплаток. Понятно, что в таких условиях масштабы уязвимостей будут расти. Возможно, когда-нибудь возникнет "ошибка икс", которая обрушит нашу великую информационную цивилизацию.
С другой стороны, IBM уже открыла доступ к своему 5-кубитному квантовому компьютеру, который работает принципиально иначе, чем наше современное "железо". Чтобы эта штука была действительно полезной, нужно сделать ее существенно производительнее, но процесс пошел. А когда квантовый компьютер выйдет на рынок, внушительная часть современного шифрования перестанет быть надежной: новый компьютер сможет его взломать. Уже сейчас некоторые браузеры стремятся перейти на шифрование, защищенное от "квантового взлома".
Главный вызов в том, что нужно учиться иначе думать. Это возможно. Скажем, в Средние века операцию умножения включали в университетский курс. Это не потому, что люди были глупыми, а потому что они использовали римские числа, и в римской записи умножение — действительно сложное действие. А сейчас мы пользуемся десятичной записью, и умножение проходят во втором классе. Несмотря на усложнение мира, наше понимание этого мира тоже в какой-то мере улучшается. Правда ли, что через сколько-то десятков лет мы сможем уместить в школьный курс то, что человек изучает на протяжении всей жизни, а устройство микропроцессоров будет понятно школьнику, не знаю. Но, может быть, сможем. Потому что в конечном итоге все проблемы с IT-сферой — это проблемы нашего недостаточно хорошего знания "информационного мира".
"Под угрозой основа"
Президент Фонда информационной демократии и директор Центра компетенций по импортозамещению в сфере информационно-коммуникационных технологий Илья Массух — об уроках, которые России стоит извлечь из нынешнего Чипокалипсиса