?

Log in

No account? Create an account
Космические лучи и хакеры - Коллектив Авторов "EugeneBo" [entries|archive|friends|userinfo]
Eugene

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Космические лучи и хакеры [May. 12th, 2014|10:42 pm]
Eugene
[Tags|, , , ]

Космические лучи -- это энергичные частицы, прилетающие к нам из космоса. Изредка среди них встречаются настоящие монстры с энергиями до ~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% этих "переворотов". Но они есть!

Вот такая связь между космической астрофизикой и компьютерной безопасностью.

Ну и в заключение -- а стоит ли об этом беспокоиться?

Нет, если Вы простой пользователь. Вероятность того, что Ваш личный запрос к Майкрософту или Гуглу окончится на расставленой хакером злой странице астрономически мала.

Да, если Вы -- владелец крупной компании, занимающейся рекламой в интернете. Если Вашу рекламу загружают браузеры сотен миллионов людей, то некоторым из них может и не повезти. А виноватыми сочтут Вас, ведь во всех логах прописано, что зараза пришла с того же домена, что и Ваша реклама. Так что, может, стоит проверить, не зарегистрированы ли уже кем-то домены, отличающиеся от Вашего всего на один бит?
linkReply

Comments:
[User Picture]From: 0242
2014-05-13 05:56 am (UTC)
From my extensive experience on testing bit flips on disks (many of which are caused by bad memory), double or triple consecutive bit flips are similarly common (they're most definitely not independent, if you know what I mean). Moreover, given that most bit flips are not really flips but rather sets or resets, change patterns like 00010000 -> 00111000 are common (which looks like a disjoint double bit flip, but is in fact a consecutive triple bit set).

In other words, strong checksumming is a must.
(Reply) (Thread)
[User Picture]From: eugenebo
2014-05-13 06:04 am (UTC)
Quite possibly higher order bit flips exist as well. I actually suggested to the author to test for double flips for statistical purposes, but he likely got not interested much :))

From the security point of view though, complex flips are probably less interesting. Their space is way too large to enable effective squatting.
(Reply) (Parent) (Thread)
[User Picture]From: 0242
2014-05-13 06:10 am (UTC)
It's actually the other way around. In a 512-bit chunk, there could be 512 single bit flips but only 510 consecutive triple bit flips :)

Edited at 2014-05-13 06:17 am (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: eugenebo
2014-05-13 06:24 am (UTC)
Ahh! Yeah, that makes sense.
(Reply) (Parent) (Thread)
[User Picture]From: psilogic
2014-05-13 06:10 am (UTC)
А еще промахи при наборе, которые бывают не только типа "рядом с правильной 1 клавишей", но и "рядом с предыдущей", "рядом со следующей", "по полпути между" и т.п.
(Reply) (Thread)
[User Picture]From: 0242
2014-05-13 06:14 am (UTC)
вспоминается http://bash.org/?5300
(Reply) (Parent) (Thread)
[User Picture]From: psilogic
2014-05-13 06:21 am (UTC)
:))
(Reply) (Parent) (Thread)
[User Picture]From: eugenebo
2014-05-13 06:16 am (UTC)
Это классический domain squatting, давно известная штука.

Edited at 2014-05-13 06:17 am (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: psilogic
2014-05-13 06:22 am (UTC)
Угу. Но я имел в виду, что даже далекие опечатки имеют хотя и гораздо меньшую, но ненулевую вероятность.
(Reply) (Parent) (Thread)
[User Picture]From: eugenebo
2014-05-13 06:29 am (UTC)
Участвущий в этой ветке 0242 как-то обратил внимание, что если написать в русской раскладке слово "forex" задом наперёд, то получится "чукща". Хе-хе. Я не знаю, как он до этого додумался, но да, опечатки иногда бывают весьма удивительные :))
(Reply) (Parent) (Thread)
[User Picture]From: _m_e_
2014-05-13 06:15 am (UTC)
Интересно, как бы оценить какой процент битфлипов случается именно на клиенте. Полагаю большинство битфлипов случаются в сети и на DNS серверах, но они менее интересны, так как отлавливаются HTTPS'ом.
(Reply) (Thread)
[User Picture]From: eugenebo
2014-05-13 06:23 am (UTC)
Утверждается, что как раз "интересные" битфлипы происходят именно на DNS. HTTPS их не отловит (см. "Finding 5: HTTPS/TLS will not help. DNSSEC will help a tiny bit." на http://dinaburg.org/bitsquatting.html.)
(Reply) (Parent) (Thread)
[User Picture]From: _m_e_
2014-05-13 06:28 am (UTC)
а, действительно, можно проверить HOST.

происходят именно на DNS => происходят именно *до* DNS
If the Host header contains the original domain, the error occurred during domain resolution. In 96% of the cases, the bit-error had occurred prior to DNS resolution.
(Reply) (Parent) (Thread)
[User Picture]From: ne_bo
2014-05-13 10:49 am (UTC)
Прикольно, было интересно почитать)
(Reply) (Thread)