Как построить защищенную информационную систему. Книга
Рефераты >> Программирование и компьютеры >> Как построить защищенную информационную систему. Книга

Неправильное использование ограничений доступа к каталогам электронной почты приводит к возникновению возможности преодоления системы защиты. В ряде версий Unix почтовая программа после добавления но­вого сообщения к файлу, в котором хранятся поступившие сообщения, назначает владельцем этого файла пользователя, на имя которого поступило сообщение. При этом не производится никаких проверок его атри­бутов. В дополнение к этому многие системы настроены таким образом, что каталоги, содержащие электронную почту пользователей, доступны по записи для всех поль­зователей. Это означает, что любой пользователь может удалить «почтовый ящик» пользователя root и заменить его копией командного интерпретатора с установленным атрибутом SUID и доступным для выполнения лю­бым пользователем. После этого пользователь может послать на имя root любое сообщение. Программа, об­служивающая почту, добавит это сообщение в конец файла - «почтового ящика» и назначит ему нового вла­дельца — root. Таким образом, в системе появится командный интерпретатор, с установленным атрибутом SUID, владельцем root, и доступный для выполнения любому пользователю.

Индекс: U7. Система: Unix

Источник информации: М. Bishop. «Security problems with the UNIX operating system». Computer Science Department, Purdue University, West Lafayette, Indiana, March,1982.

В Unix имеется утилита uux, реализующая удаленное выполнение ограниченного множества команд и про­грамм. Командная строка, содержащая имя и параметры программы, которую необходимо выполнить, передается программой mix на удаленную машину, где осуществля­ется ее анализ и проверка на принадлежность запускае­мой программы к множеству доступных. Если анализ и проверка завершились успешно, порождается соответст­вующий процесс. В процедуре анализа командной строки содержалась ошибка, которая позволяла выполнять программы, не входящие в множество допустимых.

Разбор командной строки был организован следую­щим образом: утилита uux читала первое слово команд­ной строки (имя команды), проверяла его, а затем про­пускала (как аргументы и опции команды) все после­дующие символы до первого разделителя команд (признака конца команды). Затем производился разбор следующей команды и т. д. После окончания разбора вся строка целиком передавалась командному интерпрета­тору для выполнения. Но множество проверяемых разделителей команд было неполным, символы «|», «Λ», «;» учитывались, а «&» и «'» — нет. Таким образом, коман­ды, следующие за неизвестным программе них раздели­телем. выполнялись, но не проверялись на принадлеж­ность к множеству допустимых. Следовательно, пользо­ватель мог осуществить удаленный запуск любых про­грамм и выполнение любых команд в обход контроля них.

Индекс: U10. Система: Unix

Источник информации: Е. Н. Spafford. «Crisis and Aftermath», Comm. of the ACM 32, June 1989, PP 678 — 687.,

Во многих версиях ОС Unix программа sendmail распространялась с установленной по умолчанию отладоч­ной опцией, позволявшей неавторизованным пользова­телям проникать в удаленные системы. Отладочный ре­жим позволяет посылать сообщения, снабженные npoграммой-получателем, которая запускается на удалена ной машине и осуществляет прием сообщения. Эта воз­можность использовалась разработчиками для отладки программы и в коммерческой версии была оставлена по ошибке. Злоумышленник мог указать в качестве программы-приемника командный интерпретатор, а в текст сообщения включить соответствующие команды, что фактически превращало его в пользователя удаленной системы, несмотря на то что он не был в ней зарегистри­рован. Известный вирус Р. Морриса использовал эту возможность для проникновения в удаленные системы.

Индекс: U11. Система: Unix

Источник информации: D. Gwyn. «UNIX-wizard digest», Vol. 6 No. 15, Nov. 1988.

Команда chfn системы Unix предоставляет пользова­телям возможность изменить имя, под которым они за­регистрированы в системе. Поскольку имя пользователя хранится в файле /etc/passwd, эта программа должна иметь возможность записи в этот файл. Для этого она имеет атрибут SUID, а ее владельцем является root. Само по себе изменение имени не несет никакой угрозы, но команда chfn не осуществляла проверку длины заданной пользователем строки символов. Пользователь, знаю­щий об этом, мог создать очень большой входной буфер, при попытке записи которого окажется, что он не поме­щается на место прежней записи, и в файл /etc/passwd бу­дет записана пустая строка. Пустая строка в этом файле интерпретируется как наличие в системе пользователя с пустыми именем и паролем, который обладает полномо­чиями root. Таким образом злоумышленник мог создать для себя идентификатор, обладающий максимальными привилегиями.

Индекс: U12. Система: Unix (4.3 BSD on VAX)

Источник информации: J. A. Rochlis, M. W. Eichin, «With microscope and tweezers: the worm from MITs perspective», Comm. ACM 32, June 1989, pp. 689—699.

Программа-демон fingerd имеющаяся в каждой Unix системе, предназначена для передачи удаленным пользо­вателям информации о пользователях локальной систе­мы. Ошибка в этой программе позволяла неавторизо­ванному пользователю запускать на удаленной машине любой процесс. Данная программа содержала в себе фрагмент кода примерно следующего вида:

{

char buffer[100] ;

gets(buffer);

}

Проверка переполнения буфера не осуществлялась. Так как буфер размещался в стеке, то, создав в нем фрагмент кода и вызвав переполнение стека, можно за­менить адрес возврата из процедуры таким образом, что управление будет передаваться на этот код. Посредством формирования соответствующего кода злоумышленник мог вынудить систему выполнить любую необходимую ему команду, в том числе запустить командный интерпретатор. Эта возможность наряду с отладочной опцией команды sendmail использовалась вирусом Р. Морриса.

Индекс: U14. Система: Unix (SunOS)

Источник информации: J. Purtilo, RISKS-FORUM Digest, Vol. 7 No. 2, June 1988.

Процесс-демон rpc.rexd обеспечивает в системе Unix поддержку удаленного выполнения программ. В реали­зации данной программой механизма идентификации присутствовала ошибка. Когда приходил запрос с уда­ленной системы на выполнение процесса, этот демон определял идентификатор пользователя, инициирую­щего запрос. Если это был пользователь root, запрос отвергался, так как root удаленной системы не имеет полномочий на локальной. Если это был не root, rpc.rexd проверял легальность для локальной системы идентификатора пользователя удаленной системы и в случае наличия в системе пользователя с таким иденти­фикатором исполнял от его имени указанный процесс.

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


Страница: