Анализ операционной системы МСВС на предмет наличия уязвимостей

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



од, что эти ошибки будут находиться всегда.

"Он слишком многим доверял". Взлом производит обычно псевдопользователь, повышая свои полномочия до обычного, с использованием механизма доверия. Термин "доверие", также оказывающийся одной из важнейших брешей в безопасности Unix - систем, пришел из прошлого, когда компьютерные системы хотели доверять друг другу. "Доверие" употребляется всякий раз, когда возникает ситуация, в которой хост может позволить пользователю (как правило, удаленному) использовать локальные ресурсы без аутентификации (ввода пароля). В ОС МСВС существует некоторые подсистемы, использующие доверие. Наиболее простой и часто применяемой из них являются так называемые r-службы (remote, удаленные). При наличии файлов .rhosts и hosts.equiv, содержащих имена компьютеров, доступ с них возможен без указания пароля. Аналогично построены на механизме доверия, например, NFS-сервера, в управляющих файлах которых можно разрешить доступ к некоторому каталогу для группы пользователей, в том числе и всем. Любая форма доверия может быть подменена, обманута или разрушена, особенно когда служба, получающая запросы на проверку клиента, расположена вне сервера, или когда механизм доверия основан на слабой форме аутентификации.

Причины существования уязвимостей в ОС МСВС

Рассмотрев выше достаточно много фактического материала, выделим причины, по которым описанные нарушения безопасности ОС МСВС могут иметь место.

Наличие демонов.

Механизм SUID/SGID-процессов.

Излишнее доверие.

Человеческий фактор.

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

Рис. 3.1 - Причины уязвимости ОС МСВС

Рассмотрим теперь более подробно причины, по которым оказываются уязвимы демоны и SUID/SGID-процессы:

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

наличие скрытых путей взаимодействия с программой, называемых "люками";

возможность подмены субъектов и объектов различным образом.

Хорошим примером непредусмотренной ситуации в многозадачной операционной системе является неправильная обработка некоторого специального сигнала или прерывания. Часто злоумышленник имеет возможность смоделировать ситуацию, в которой этот сигнал или прерывание будет послано. Например, при получении сигнала SIGHUP с помощью системного вызова exec(2), можно перезагрузить отдельные программы, которые после перезапуска, без повторного прохождения процедуры аутентификации, уже будут исполняться с привилегиями суперпользователя. С помощью манипуляций с переменными среды и окружения, злоумышленник может заставить ее выполнить любую команду, естественно, с привилегиями root.

Наконец, одна из самых распространенных программистских ошибок - является неправильная обработка входных данных. При использовании специальной программы, подающей на вход строки длиной до 100000 символов, выяснилось, что около 20% протестированных программ работали некорректно - зависали, сбрасывали аварийный дамп и т.п. Это является некоторым следствием переполнения буфера, а так как буфер обычно находится в стеке, то переполнение теоретически позволяет создавать в стеке фрагмент кода и изменять адрес возврата из процедуры таким образом, что бы при возврате управление передавалось на этот код. Данной ошибкой пользовался всем очень хорошо известный червь Морриса. Если программа неправильно обрабатывает случайные входные данные, то, очевидно, что можно подобрать такой набор специфических входных данных, которые приведут к желаемым для злоумышленника последствиям.

Среди обычных сообщений USENET встречаются так называемые управляющие, типа newgroup или rmgroup. Некоторые почтовые программы обрабатывает команды, расположенные в них, через команду оболочки. Однако некоторая информация (иначе говоря, специальным образом разработанное фальшивое управляющее сообщение) может быть передана оболочке без надлежащего контроля. Это позволит любому, кто может присылать сообщения на ваш сервер - иногда это чуть ли ни любой пользователь исполнить любую команду, имея привилегии почтового демона, - а это либо суперпользователь, либо специальный пользователь news с широкими правами. Люком, или черным входом (backdoor) часто называют оставленную разработчиком недокументированную возможность взаимодействия, например, известный только разработчику универсальный пароль. Люки оставляют в конечных программах вследствие ошибки, не убрав отладочный код или вследствие необходимости продолжения отладки уже в реальной системе в связи с ее высокой сложностью или же их корыстных интересов. Наконец, вследствие многих особенностей ОС МСВС, таких как асинхронное выполнение процессов, развитый командный язык и файловая система, злоумышленниками могут быть использованы механизмы подмены одного субъекта или объекта другим. Может быть выполнена подмена некоторых специальных переменных. Так, для некоторых версий UNIX - систем существует атака, связанная с подменой символа разделителя команд или опций на символ /. Это приводит к тому, что когда программа вызывает /bin/sh, вместо него вызывается файл bin с параметром sh в текущем каталоге. Наконец, очень популярным видом подмены является создание ссылки (link) на критичный файл. После этого фа