ДЛЯ НАЧАЛА: ЖИВЫЕ

- Knoppix -
Линукс за пять минут
- Puppy Linux -
Хороший друг


ДЛЯ ДЕЛА: ПРОФИ

- Debian -
Он такой один
- Linux Mint -
С родинкой на щеке!
- CentOS -
Копейка рубль бережёт!
- Fedora -
По следам Red Hat
- Ubuntu Linux -
Мы одной крови!
- Mageia -
Красота и удобства
- openSUSE -
Настоящее немецкое качество
- Slackware -
Линукс из кубиков
- ALT Linux -
Что русскому хорошо





ДЛЯ ДЕЛА: РОЛЛЫ

- ArchLinux -
Гениальное - просто!
- PCLinuxOS -
Просто линукс
- Aptosid -
Почувствуй силу!


ДЛЯ ДЕЛА: СОБЕРИ САМ

- Gentoo -
Каждому своё
- LinuxFromScratch -
Линукс с нуля


ДЛЯ ДЕЛА: ЛЁГКИЕ

- DeLiCate -
Старость в радость!
- SLAX -
Тысяча и один модуль


ЗАЩИТА

- OpenWall -
Не стучите, закрыто!
- Kali -
Вам, хакеры!


ПРИЛОЖЕНИЯ

- Planet CCRMA -
Работа со звуком
- VegaStrike -
Каждому по планете!


ЭКСПЕРИМЕНТ

- коЛинуксы -
Не выходя из Виндоус
- GoboLinux -
Очевидно и вероятно
- ReactOS -
Освободите Виндоус!


РОДНЯ

- BSD-семейство -
На плечах гигантов
- OpenIndiana -
До звёзд рукой подать


АРХИВ (2003-2016)
ФОРУМ




НАШИ ПРОЕКТЫ

MATRIX GL
ПОЛЕЗНЫЕ СОВЕТЫ
ПИНГВИН В КАРМАНЕ
ЗАКЛАДКИ
СТАТЬИ
КОНТАКТЫ


ПОМОЧЬ






Личный архив ЕЗ

Ошибка в GRUB и серые кардиналы

Редкий дефект в программном обеспечении привлекает к себе такое внимание, какое привлёк за последние пару недель баг в загрузчике GRUB. Это тем более удивительно, потому что при ближайшем рассмотрении шумиха кажется созданной искусственно, скандал раздутым без серьёзных причин. Но — нет худа без добра! — благодаря этому мы имеем возможность насладиться несколькими интересными деталями, редко попадающими на первые страницы.

Саму историю с багом вы наверняка слышали, поэтому я расскажу её только вкратце. В середине декабря двое испанских исследователей опубликовали подробный отчёт об обнаруженной ими ошибке в программе GRUB. «Груб» — это очень популярное в мире Linux приложение, запускающееся ещё до загрузки операционной системы. До загрузки — потому что оно, собственно, систему и загружает, и попутно позволяет сделать выбор между операционками, если на компьютере их установлено несколько. Бывалые линуксоиды помнят, что GRUB принял эстафету у загрузчика LILO, который был стандартом де-факто в первое десятилетие существования Линукса. Важно знать, что от предшественника GRUB отличается наличием встроенных инструментов для работы с жёстким диском: если что-то пойдёт не так, GRUB позволит проанализировать проблему и даже попробовать её устранить. А ещё он может служить первым барьером на входе в систему: можно заставить его требовать у пользователя ввода пароля, после чего только допускать к выбору операционки. Удобно! И именно здесь обнаружили проблему испанцы.

Так загружается система.

Изучив исходники (а GRUB, конечно, развивается под свободной лицензией), они увидели, что кусок кода, отвечающий за обработку вводимого пароля, не следит за длиной вводимой строки. Это, вообще говоря, классическая ошибка: если пользователь введёт больше символов, чем способен вместить зарезервированный программой буфер, то буфер переполнится, вводимые данные попадут в область оперативной памяти, куда попасть не должны, и могут нарушить нормальную работу программы и даже операционной системы. В данном случае, однако, исследователи пошли в другую сторону: они заставили не увеличиваться, а уменьшаться счётчик позиции, многократно нажимая клавишу Backspace. Дефектный код в GRUB на каждое такое нажатие реагирует уменьшением счётчика — и, перейдя через ноль, он обращается в очень большое число (если счётчик хранится в 32-разрядном регистре микропроцессора и равен нулю, уменьшение его на единицу сделает его равным FFFFFFFF).

Это, впрочем, только завязка. Далее уже это (слишком большое!) число вызывает следующую ошибку (переполнение второй переменной), а потом в дело вступает третий кусок кода, который обнуляет несколько байтов по адресу, указанному второй переменной. Короче говоря, в результате всех этих манипуляций и совпадений, при правильно подобранном числе нажатий Backspace (у испанцев получилось 28), можно забить нулями ту часть самой программы GRUB, которая проверяет пароль. И таким образом отключить парольную защиту! Сработает это на любой версии программы, начиная с 1.98, выпущенной шесть лет назад, до свежайшей 2.02. Дальше у взломщика полная свобода рук и фантазии: он волен модифицировать систему как угодно, например, вставив в неё программу-шпион. Хозяин компьютера об этом, естественно, знать не будет.

Вот ради чего всё: обнуление участка оперативной памяти, отвечающего за проверку пароля.

Повторюсь, история эта была рассказана десятки, если не сотни, раз — что необычно для бага в линуксовом софте. Публику и СМИ, полагаю, взволновал тот факт, что считающиеся неприступными Linux-боксы тоже могут оказаться беззащитными из-за мелкого дефекта. На самом деле паника надуманная. Часто ли вы видели включенную парольную защиту в GRUB? На домашних компьютерах её не включают, потому что незачем, хватит и проверки личности при входе в саму операционку. Но даже и на корпоративных машинах такое редкость.

Мозговой штурм, устроенный линуксоидами на форумах, позволяет предположить, что пароль в GRUB активируют на компьютерах, которые ставятся в публичных местах (вроде цифровых киосков всех сортов), а также, вероятно, на компьютерах в режимных учреждениях, где дополнительный уровень защиты не бывает лишним. В любом случае, простых пользователей Linux проблема не коснётся, а если всё же беспокоитесь — просто установите последний security-апдейт: в Debian, Red Hat, Ubuntu, да и многих других дистрибутивах, баг уже исправлен, заплатки выпущены.

28 нажатий на Backspace, Enter, и GRUB выкидывает вас в аварийный режим.

А история эта, на самом деле, интересна другим. Обычно ведь уязвимости в программах не рассматриваются так пристально. О них пишут поверхностно, без погружения в детали. Здесь же мы можем насладиться машинными кодами в чистом виде. И — понять, что простых ошибок не бывает. Обнаружение, а часто и использование любой уязвимости, требуют большого предварительного труда. Даже если вы не слишком хороши в английском, загляните в работу испанцев — оцените, как много неизвестных должны совпасть, чтобы дефект в GRUB сработал как нужно взломщику. Минимум три элемента должны составить цепочку, которая только и приведёт к желанному результату!

Что, в свою очередь, извлекает на свет следующий интересный аспект. Может ли такая ошибка быть результатом случайности? Могло ли так совпасть, чтобы три различных отрывка программы вдруг сработали в унисон, сложились, словно куски одного пазла, и подарили атакующему возможность обойти парольную защиту? Наверное, может. Но что если это не случайность? Что если допустить, что ошибка была внедрена в GRUB намеренно? Кому это может быть выгодно, кто такое мог сделать?

Из того, что мы знаем о потенциальных применимости бага в GRUB, понятно, что заинтересованной стороной должен быть либо тот, кому нужен незаметный вход на секретные предприятия/учреждения, либо власть над уличными цифровыми киосками. Поэтому логично заподозрить прежде всего спецслужбы. Лучше того, если копнуть глубже и выяснить, кто же был автором ошибки, архивы приведут нас вот к этому молодому человеку с логотипом Агентства Национальной Безопасности США на футболке ;-) Это некий Vladimir Serbinenko, он же phcoder. Из открытых источников известно, что живёт он в США и принимает сравнительно активное участие в разработке некоторых open source-проектов, в том числе, GRUB. Именно он, если верить проведённому энтузиастами расследованию, был автором патча для GRUB, в котором скрывался дефект.

Владимир Сербиненко.

Впрочем, если уж пускаться во все тяжкие и быть конспирологом на все сто, интересней предположить не то, что Сербиненко является сотрудником АНБ, а то, что он работает на себя и лично был заинтересован во взломе самого популярного линуксового загрузчика. Эта версия пока ещё нигде не звучала, я предлагаю её сейчас вам как есть, как вижу сам. Linux используется в цифровых киосках: фотографических, игровых, торговых, обменных. Значит, человек, умеющий «влезть киоску в мозги», способен поиметь вполне реальную выгоду. В каждом случае выгода будет разная, но совсем не трудно представить сценарий, как, например, заработать, имея несанкционированный доступ к игровому автомату. И вот с этой точки зрения баг в GRUB уже не кажется бесполезным. Что если Владимир наметил жертву (серию киосков), изучил их устройство, после чего внёс ошибку в GRUB, дождался обновления программного обеспечения, и — провёл атаку?

На самом деле лично я в эту версию не верю — и предлагаю её вам с улыбкой, надеясь на ваше понимание (и что Владимир не обидится, если читает эти строки). Я не любитель конспирологии и не считаю Сербиненко тайным киберграбителем. Однако вам будет полезно знать, что подобный сценарий отнюдь не выдумка. Время от времени такие истории случаются — и раскрыть преступление всегда бывает непросто. Подтверждением этому может служить, например, следствие по делу американца Эдди Типтона, тянущееся уже несколько лет и никак не завершающееся. Он сумел получить доступ к компьютерам одной из лотерей, изменил программу, заставив её сгенерировать нужную ему комбинацию, но всё-таки попался и получил десять лет тюрьмы. На прошлой неделе, однако, выяснилось, что его жертвой была не одна, а несколько лотерей по всей стране, так что скандал продолжается. Вспомните об этом, когда в следующий раз увидите слишком странную компьютерную ошибку ;-)

------------------------------------------------------------------------------------------------------------

Этот текст всегда доступен по адресу Knoppix.ru/271215.shtml


При частичной или полной перепечатке, переводе, переработке материалов сайта ссылка на Knoppix.ru обязательна.
(c) Knoppix.ru 2003 - 2016