Космические лучи -- это энергичные частицы, прилетающие к нам из космоса. Изредка среди них
встречаются настоящие монстры с энергиями до ~1020 электронвольт. Это, для наглядности, энергия упавшего со стола молотка. Только вот заключена она не в молотке, а в одном-единственном невидимом протоне.
До сих пор не совсем понятно, откуда берутся частицы с такими сумасшедшими энергиями. К счастью, они очень редки -- за всю историю их и видели-то всего пару десятков штук. Большинство же космических лучей обладают куда более приличествующими для микрочастиц энергиями в 0.1 - 1 ГэВ. Но им и этого вполне хватает, чтобы, врезаясь в земную атмосферу, расколошмачивать вдребезги встреченные атомы и порождать
многокилометровые ливни радиации из вторичных частиц.
Львиная доля энергии ливней поглощается воздухом и грунтом. Меньшая оседает в наших телах, внося
примерно 13%-й вклад в фон естественного облучения на поверхности Земли. А совсем крошечная доля влетает в чипы компьютерной памяти. И некоторые из этих частиц обладают достаточными силёнками, чтобы взять и перевернуть один битик памяти из нуля в единицу. Ну или наоборот.
Сотрудники IBM
прикидывают, что один такой переворот ("bit flip") случается разок в месяц на 256 мегабайт памяти. В работе, о которой пойдёт речь ниже, приводится цифра
"от 3-х ошибок в месяц до 3-х в час на 4 гигабайта памяти" -- правда, это включая сбои, вызванные не только естественной радиацией.
В большинстве случаев повреждение остаётся незамеченным. Переворот бита либо шустро детектируется и корректируется современной электроникой, либо тупо затирается в ходе работы. Куда реже он заканчивается критическим сбоем системы на ровном месте с последующей перезагрузкой, и тогда единичные космические протоны удостаиваются личной, персонально им адресованной порции программерских матюгов. И стоило ради этого лететь через половину Вселенной?
Наконец, совсем-совсем уже редко переворот битика может оказаться и нескорректированным, и "осмысленным". Именно про
этот эффект рассказал Artem Dinaburg на конференции DEFCON ещё в 2011-м году. Там было подробно, я же перескажу кратенько.
В Интернете есть такие штуки, называются DNS-сервера. Вся их работа, по сути, состоит в том, чтобы переводить запросы в виде читаемых людьми URL-ов (например,
www.bobukh.com) в IP-адреса, более удобные машинам (в данном случае, 50.135.11.217). Так вот. Сбой битика может произойти в памяти DNS-сервера. И так, что Вы наберёте в адресной строке
www.microsoft.com, а сервер (из-за этого сбоя) начнёт искать IP-адрес ресурса, отличающегося от заказанного одним-единственным битиком (например, www.mic2osoft.com). Что из этого получится? Скорее всего, ничего интересного. В природе нет такого домена, Вы увидите "sever not responding", хмыкните и перезагрузите страницу. Но что если бы такой домен существовал, а на нём и вправду жила бы какая-нибудь страница?
Эта страница, в таком случае, загрузится в Ваш браузер. И с его точки зрения, равно как и всей операционной системы, она будет принадлежать домену
www.microsoft.com! Она будет иметь те же права исполнять скрипты, что и этот домен. Она будет иметь доступ к его cookies (придумали ли уже, наконец, хоть какой-то благозвучный русский термин для этого слова?) Она сможет доступаться ко всем данным, к которым имеет доступ исходная страница. Скажем, читать и посылать Вашу почту, если бы www.microsoft.com был почтовым доменом и Вы бы автоматически в него логинились. В более общей терминологии, произошло бы нарушение
Same Origin Policy, с серьёзными и хорошо известными специалистам по безопасности последствиями.
Это теория. Но возможна ли подобная атака на практике? Artem Dinaburg поставил эксперимент. Зарегистрировав с полсотни доменов, отличающихся от самых широкопосещаемых ошибкой в одном-единственном бите (но не одной клавишей на клавиатуре, чтобы исключить опечатки), он принялся ждать:
И дождался. На эти адреса действительно стали приходить запросы. Десятки в день:
Эффект есть!
Справедливости ради надо отметить, что большинство ошибок в памяти вызываются всё-таки не радиацией. Причина номер один -- банальный перегрев электроники, номер два -- плохое качество "железа". С некоторой натяжкой их вклад даже различим статистически, например, как отклик числа запросов из местности на температуру в ней. А радиация отвечает, грубо, где-то за 10% этих "переворотов". Но они есть!
Вот такая связь между космической астрофизикой и компьютерной безопасностью.
Ну и в заключение -- а стоит ли об этом беспокоиться?
Нет, если Вы простой пользователь. Вероятность того, что Ваш личный запрос к Майкрософту или Гуглу окончится на расставленой хакером злой странице астрономически мала.
Да, если Вы -- владелец крупной компании, занимающейся рекламой в интернете. Если Вашу рекламу загружают браузеры сотен миллионов людей, то некоторым из них может и не повезти. А виноватыми сочтут Вас, ведь во всех логах прописано, что зараза пришла с того же домена, что и Ваша реклама. Так что, может, стоит проверить, не зарегистрированы ли уже кем-то домены, отличающиеся от Вашего всего на один бит?