Такая вот «паранойя»

(Ноябрь 2003)

Один из первых сигналов о попытках встраивания бэкдоров в ПО с открытым исходным кодом.

linuxbd

Программисты-разработчики, создающие следующую (2.6) версию ядра ОС Linux, обнаружили и заделали в исходных кодах «черный ход» (backdoor), реализованный столь хитро и искусно, что отныне даже для скептиков досужие разговоры о неуловимых «троянцах» в программах не кажутся больше параноидальным бредом.

Выявленный тайный ход или бэкдор в систему представляет собой неприметное добавление из всего двух строчек кода, тщательно замаскированных под невинный контроль ошибок, добавленный к функции системного вызова wait4().

Эта функция доступна любой программе, работающей на компьютере, и, грубо говоря, дает команду операционной системе сделать паузу в исполнении данной программы, пока другая программа не завершит свою работу.

При поверхностном просмотре новая добавка к коду просто проверяла, не использует ли программа, вызывающая wait4(), некую конкретную недопустимую комбинацию двух флагов, и не запущена ли она пользователем с максимальными привилегиями (root). Если оба условия выполняются, то вызов прерывается.

Но при более пристальном рассмотрении выяснилось, что код вовсе не проверяет, является ли пользователь всемогущим «root». На самом деле, если обнаруживается нужное сочетание флагов, то вызвавший процесс получает максимальные корневые привилегии и моментально превращает wait4() в «черный ход».

Другими словами, человек, знающий нужное сочетание флагов и место, где их следует применить, получает полный контроль над любой машиной. И вся эта гигантская разница – между тем, как код выглядит, и что он в действительности делает – заключена всего лишь в различии между знаками равенства и сравнения в языке программирования Си.

Так что если бы этот нюанс обнаружили при обычных обстоятельствах, то наверняка сочли бы за тривиальный «баг», элементарную ошибку программиста.

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

Хост-компьютеры для сайта коллективной разработки ядра Linux предоставляет софтверная компания из Сан-Франциско BitMover. Основатель ее Ларри Маквой (Larry McVoy) одновременно является и главным архитектором базы данных BitKeeper, управляющей исходными кодами Linux.

По собственным словам разработчика, его система «параноидально озабочена» целостностью разрабатываемых кодов и осуществляет обновления только в автоматическом режиме, с тщательной проверкой цифровых подписей. Именно благодаря этому сразу же была выявлена тихая попытка обновления двух строчек кода вручную.

Сам Маквой поначалу не увидел в коде ничего подозрительного, но в соответствии с общепринятой практикой вынес обновление на анализ сообщества программистов, где и был выявлен истинный смысл «ошибки», порождающей «троянского коня».

После тщательного анализа стало совершенно очевидно, что создавшие этот код люди прекрасно знают, что делают. Они отыскали именно такие флаги, которые по отдельности проходят в систему не вызывая ошибок, но при этом не могут обычно проходить совместно.

По мнению экспертов, это мог сделать только человек, очень хорошо разбирающийся в UNIX и в нюансах работы ядра Linux.

Как прокомментировал находку один из экспертов, в народе давно гуляют разговоры и слухи о чрезвычайно изощренных, невидимых закладках, но до сих пор «были лишь примеры плохих [троянцев]… теперь же мы получили конкретный пример троянца действительно хорошего».