- PVSM.RU - https://www.pvsm.ru -
Привет-привет! С вами снова Оля — программист Учебного центра компании «Тензор»... и радиофизик. До этого я рассказывала вам о рабочих кейсах, а сегодня поведаю о программистско-астрофизическом эксперименте.
Бывало ли на вашем пользовательском веку такое, что компьютер внезапно завис или не смог прогрузить страницу? Грешили ли в этот момент на проклятую технику? А ведь причина может быть в другом — космическое излучение могло быть источником ваших бед! В этой статье разберем уязвимость с самого известного фреймворка cwe.mitre.org [1].
В 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 [2], бит перевернулся аки Сивка-Бурка — адрес поменялся на, скажем, windo7s.com [3] и запрос ушел на совсем другой сервер.
Страх в том, что домены с измененным символом могут быть использованы для перехвата конфиденциальной информации. Причем, чтобы получить трафик на такой сайт и делать-то ничего не нужно, только тихонечко подождать единичного события, которое перевернет бит у пользователя. Рай для мошенников!
Такой способ перехвата данных называется Битсквоттинг (Bit-squatting). На примере сайта windows.com [2] исследователи получили более 200 000 событий за 14 дней, так как каждый компьютер на ОС Windows сверяет свои часы через сайт time.windows.com [4]. (https://xakep.ru/2021/03/05/bitsquatting/ [5]).
Мне, как патриоту Тензора и СБИСа, конечно, тяжело было жить с мыслью о коварных космических частицах, вторгающихся в сервера компании. Именно поэтому в 2022 году я отважилась на проверку возможности получения конфиденциальных данных с сайта нашей компании (например, online.sbis.ru [6]).
Я ждала аншлага, ведь к тому моменту у Тензора уже было более 3,5 млн клиентов — а значит вероятность обнаружения и регистрации хотя бы одного сбоя, была невероятно высока.
Я купила и зарегистрировала три свободных домена: online.sjis.ru [7], online.sbhs.ru [8], online.sbiq.ru [9]. В каждом, как вы уже заметили, изменен один символ на один бит. Другие названия, к сожалению, уже были заняты мошенниками.
На арендованном я создала простой сервер и ждала переходов на наши сайты. Чтобы отслеживать запросы было поудобнее, написала html-страницу [11].
Время шло — вызовы не приходили, но я не сдавалась. Чтобы увеличить вероятность поймать вызов от ошибки 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.
Ждать запросы с «куками». В cookies передаются данные сессии, являющиеся конфиденциальными.
Ждать запросы, у которых в url есть «/service/». В случае sbis.ru [12] эта часть используется для служебных вызовов, которые выполняет браузер при загрузке страницы. Наличие «/service/» в url не дает абсолютной гарантии, что все такие вызовы будут из-за ошибки SEU, но хотя бы исключит множество других запросов. Способ подходит только для доменов sbis.ru [12].
Кроме того, запросы, которые мы ищем, будут всегда приходить с уникального IP. Вероятность, что компьютер успеет выполнить несколько запросов на измененный домен из-за ошибки, крайне мала, так как следующий запрос будет сформирован заново и адрес уже не будет содержать ошибку.
Итак, к моменту написания статьи на наши домены пришло более 100 000 запросов. Некоторые сайты до сих пор работают и ждут SEU-события. К нашему сожалению, ни один вызов не был последствием внезапного удара космической частицы по «железу» компьютера. Вызовы с cookies, увы, не содержали сессии, а запросов с «/service/» в url было очень мало.
Надежда найти подходящий для события SEU вызов забрезжила среди множества входящих GET-запросов с пустым url. Но беглый анализ показал, что такого рода запросы выполняются в основном ботами, так как за относительно небольшое время приходило много вызовов с одного и того же IP.
Почему не получилось поймать ошибку? Может быть, активность космического излучения за последние два года не была высокой. Другое, более вероятное объяснение состоит в том, что на сегодняшний день практически не осталось техники, подверженной ошибки SEU. Такого рода ошибки сейчас корректируются и маловероятны. Тут, пожалуй, стоит только порадоваться качеству оборудования.
Все желающие могут сами попробовать найти интересные для вас запросы по ссылке [11].
Также прилагаю ссылку на уязвимость https://cwe.mitre.org/data/definitions/1261.html [1]. Раз она есть на этом сайте, то точно заслуживает внимания. А сталкивались ли вы с космической проблемой?
Спасибо за прочтение, успеха вашим частицам!
Автор: Силина Ольга
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/uyazvimost/391355
Ссылки в тексте:
[1] cwe.mitre.org: https://cwe.mitre.org/data/definitions/1261.html
[2] windows.com: http://windows.com
[3] windo7s.com: http://windo7s.com
[4] time.windows.com: http://time.windows.com
[5] https://xakep.ru/2021/03/05/bitsquatting/: https://xakep.ru/2021/03/05/bitsquatting/
[6] online.sbis.ru: http://online.sbis.ru
[7] online.sjis.ru: http://online.sjis.ru
[8] online.sbhs.ru: http://online.sbhs.ru
[9] online.sbiq.ru: http://online.sbiq.ru
[10] хостинге: https://www.reg.ru/?rlink=reflink-717
[11] html-страницу: https://sbiq.ru/showstat
[12] sbis.ru: http://sbis.ru
[13] Источник: https://habr.com/ru/companies/tensor/articles/812591/?utm_source=habrahabr&utm_medium=rss&utm_campaign=812591
Нажмите здесь для печати.