Причины компьютерных сбоев, о которых вы даже не думали

в 10:31, , рубрики: SEU, single-event upset, двоичная система, космические лучи, сбои, утечка данных, уязвимость

Привет-привет! С вами снова Оля — программист Учебного центра компании «Тензор»... и радиофизик. До этого я рассказывала вам о рабочих кейсах, а сегодня поведаю о программистско-астрофизическом эксперименте.

Бывало ли на вашем пользовательском веку такое, что компьютер внезапно завис или не смог прогрузить страницу? Грешили ли в этот момент на проклятую технику? А ведь причина может быть в другом — космическое излучение могло быть источником ваших бед! В этой статье разберем уязвимость с самого известного фреймворка cwe.mitre.org.

Историческая справка

Бельгийские вафли, выборы и голос технологий

В 2003 году в Бельгии проходили выборы, на которых большая часть избирательных участков была оборудована для электронного голосования. Во время подсчета результатов организаторы столкнулись с проблемой: на одном из участков не сошлось количество голосов. В сумме их оказалось больше, чем нужно. Чтобы понять причину, пришлось перепроверять всё вручную. Выяснилось, что компьютер правильно посчитал голоса за всех кандидатов, кроме одного: Мария Виндевогель получила на 4096 голосов больше, чем за неё проголосовали.

В поисках ответа на вопрос, как такое могло произойти, эксперты тщательно протестировали и программу, и железо. Ошибок обнаружено не было. Местные программисты терялись в загадках до тех пор, пока кто-то не задумался: почему разница составила именно 4096?

Загадочное число

С точки зрения компьютера 4096 — это 2 в 12-й степени. Если записать это число в двоичной системе счисления, внутри процессора оно будет выглядеть так:

0001 0000 0000 0000

Получается, чтобы Мария получила лишние 4096 голосов, достаточно поменять один бит во время обработки голосов:

Было: 0000 0010 0000 0010 (514 голосов)

Стало: 0001 0010 0000 0010 (4610 голосов)

Как бит случайным образом изменился в памяти компьютера?

Причины сбоев или бодрые космические частицы

Космос переполнен волнами и частицами: радиоволны, гамма-излучение, всевозможные электроны, нейтрино и т.п. Атмосфера Земли, конечно, защищает человечество от доброй части этого хозяйства. И всё-таки, если частица достаточно бодрая, энергия позволяет ей пройти сквозь любые барьеры, достигнуть Земли и поставить подножку транзистору микросхемы, выбив из нее заряд. Так в ячейке памяти и возникают незапланированные 0 или 1. Это явление зовется «нарушением в результате единичного события» (single-event upset, SEU).

Бодрых частиц в космосе много. Очень. Поэтому, случайная бомбардировка ими микросхем — не редкость, в любой момент значение любого бита может измениться (живите с этим).

Утечка данных

Описанный феномен может приводить к утечке конфиденциальных данных. В 2010 году исследователи выяснили, что на компьютере с 4 Гб оперативной памяти есть 96% шанс переворота битов в течение трех дней. Так бит может измениться в участке памяти, где записан адрес сайта, на который происходит переход: пользователь ввел в адресную строку браузера домен windows.com, бит перевернулся аки Сивка-Бурка — адрес поменялся на, скажем, windo7s.com и запрос ушел на совсем другой сервер.

Страх в том, что домены с измененным символом могут быть использованы для перехвата конфиденциальной информации. Причем, чтобы получить трафик на такой сайт и делать-то ничего не нужно, только тихонечко подождать единичного события, которое перевернет бит у пользователя. Рай для мошенников!

Такой способ перехвата данных называется Битсквоттинг (Bit-squatting). На примере сайта windows.com исследователи получили более 200 000 событий за 14 дней, так как каждый компьютер на ОС Windows сверяет свои часы через сайт time.windows.com. (https://xakep.ru/2021/03/05/bitsquatting/).

Рубрика «Эксперименты»

Суть и подготовка

Мне, как патриоту Тензора и СБИСа, конечно, тяжело было жить с мыслью о коварных космических частицах, вторгающихся в сервера компании. Именно поэтому в 2022 году я отважилась на проверку возможности получения конфиденциальных данных с сайта нашей компании (например, online.sbis.ru).

Я ждала аншлага, ведь к тому моменту у Тензора уже было более 3,5 млн клиентов — а значит вероятность обнаружения и регистрации хотя бы одного сбоя, была невероятно высока.

Я купила и зарегистрировала три свободных домена: online.sjis.ru, online.sbhs.ru, online.sbiq.ru. В каждом, как вы уже заметили, изменен один символ на один бит. Другие названия, к сожалению, уже были заняты мошенниками.

На арендованном хостинге я создала простой сервер и ждала переходов на наши сайты. Чтобы отслеживать запросы было поудобнее, написала html-страницу.

Гости

Время шло — вызовы не приходили, но я не сдавалась. Чтобы увеличить вероятность поймать вызов от ошибки SEU, дополнительно купила несколько доменов «Сбербанка» и «TikTok».

Когда вызовы наконец появились, оказалось, что они не подходят под ошибку SEU. Результаты приходили с разных доменов. Это можно объяснить тем, что наши сайты пытались проверить на уязвимости.

Выяснилось, что по сайтам могут ходить боты, которые проверяют на прочность все домены подряд, интересуясь в основном сайтами, написанными на PHP. Однако, наш сервер написан на Python с использованием flask, поэтому никакие боты нам не угрожают.

Ниже примеры url, которые нам попались:

/debug/default/view?panel=config 
/login?redirect=%2F 
/Upload/upload_file.php?l=test 
/manage/log/view?base=../../../../../../../../../../&filename=/etc/passwd 
/getCorsFile?urlPath=file:///c://windows/win.ini

Исходя из статистики, которую мы получили, выявили два критерия для определения, какие вызовы могли случиться из-за ошибки SEU.

  1. Ждать запросы с «куками». В cookies передаются данные сессии, являющиеся конфиденциальными.

  2. Ждать запросы, у которых в url есть «/service/». В случае sbis.ru эта часть используется для служебных вызовов, которые выполняет браузер при загрузке страницы. Наличие «/service/» в url не дает абсолютной гарантии, что все такие вызовы будут из-за ошибки SEU, но хотя бы исключит множество других запросов. Способ подходит только для доменов sbis.ru.

Кроме того, запросы, которые мы ищем, будут всегда приходить с уникального IP. Вероятность, что компьютер успеет выполнить несколько запросов на измененный домен из-за ошибки, крайне мала, так как следующий запрос будет сформирован заново и адрес уже не будет содержать ошибку.

Итоги эксперимента

Итак, к моменту написания статьи на наши домены пришло более 100 000 запросов. Некоторые сайты до сих пор работают и ждут SEU-события. К нашему сожалению, ни один вызов не был последствием внезапного удара космической частицы по «железу» компьютера. Вызовы с cookies, увы, не содержали сессии, а запросов с «/service/» в url было очень мало.

Надежда найти подходящий для события SEU вызов забрезжила среди множества входящих GET-запросов с пустым url. Но беглый анализ показал, что такого рода запросы выполняются в основном ботами, так как за относительно небольшое время приходило много вызовов с одного и того же IP.

Почему не получилось поймать ошибку? Может быть, активность космического излучения за последние два года не была высокой. Другое, более вероятное объяснение состоит в том, что на сегодняшний день практически не осталось техники, подверженной ошибки SEU. Такого рода ошибки сейчас корректируются и маловероятны. Тут, пожалуй, стоит только порадоваться качеству оборудования.

Все желающие могут сами попробовать найти интересные для вас запросы по ссылке.

Также прилагаю ссылку на уязвимость https://cwe.mitre.org/data/definitions/1261.html. Раз она есть на этом сайте, то точно заслуживает внимания. А сталкивались ли вы с космической проблемой?

Спасибо за прочтение, успеха вашим частицам!

Автор: Силина Ольга

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js