Такая вот "паранойя"
АрхивСудите самиПрограммисты, работающие над ядром ОС Linux, обнаружили и заделали в исходных кодах "черный ход", "прорытый" столь хитро и искусно, что отныне досужие разговоры о неуловимых троянцах в программах больше не кажутся параноидальным бредом даже скептикам.
Программисты, работающие над ядром ОС Linux, обнаружили и заделали в исходных кодах «черный ход», «прорытый» столь хитро и искусно, что отныне досужие разговоры о неуловимых троянцах в программах больше не кажутся параноидальным бредом даже скептикам.
Обнаруженная дыра представляет собой две строчки кода, тщательно замаскированные под невинный контроль ошибок, добавленный к функции системного вызова wait4(). Эта функция доступна любой программе, работающей на компьютере, и, грубо говоря, дает операционной системе указание сделать паузу в исполнении данной программы, пока другая программа не завершит работу. На первый взгляд казалось, что добавка к коду просто проверяет, не использует ли программа, вызывающая wait4(), некую недопустимую комбинацию двух флагов и не запущена ли она пользователем с максимальными привилегиями (root). Если оба условия выполняются, то вызов прерывается.
Но при внимательном рассмотрении выяснилось, что код вовсе не проверяет, является ли пользователь всемогущим root. На самом деле, если обнаруживается нужное сочетание флагов, то вызвавший его процесс получает максимальные привилегии и моментально превращает wait4() в «черный ход». Другими словами, человек, знающий нужное сочетание флагов и место, где их следует установить, получает полный контроль над любой Linux-машиной. И вся эта гигантская разница — между тем, как код выглядит и что он в действительности делает, — заключена всего лишь в одном знаке на языке Си. Если бы этот нюанс обнаружили при обычных обстоятельствах, то наверняка сочли бы за элементарную ошибку программиста.
Суть же в том, что этот баг был выявлен при весьма подозрительных обстоятельствах. Хост-компьютеры для сайта коллективной разработки ядра Linux предоставляет софтверная компания из Сан-Франциско BitMover. Ее основатель Ларри Маквой (Larry McVoy) одновременно является и главным архитектором базы данных BitKeeper, управляющей исходными кодами Linux. По его словам, система «параноидально озабочена» целостностью разрабатываемых кодов и осуществляет обновления только в автоматическом режиме, с тщательной проверкой цифровых подписей. Именно благодаря этому сразу же была засечена попытка «по-тихому» обновить две строчки кода вручную. Сам Маквой поначалу не увидел в коде ничего подозрительного, но на всякий случай вынес обновление на суд сообщества программистов, где и выявился истинный смысл «ошибки», порождающей «троянского коня». Закладка была немедленно исправлена, так что, по всей видимости, злоумышленник не успел ею воспользоваться.
После тщательного анализа стало очевидно, что создавшие этот код люди прекрасно знают, что делают. Они отыскали именно такие флаги, которые по отдельности не вызывают ошибок, но при этом не используются совместно. По мнению экспертов, это мог сделать только человек, прекрасно разбирающийся в UNIX и нюансах работы ядра Linux. Как прокомментировал находку один из экспертов: в народе давно гуляют слухи об изощренных, невидимых закладках, но до сих пор попадались лишь слабые и несовершенные образцы троянов, теперь же мы получили конкретный пример действительно хорошего кода.