Как построить защищенную информационную систему. КнигаРефераты >> Программирование и компьютеры >> Как построить защищенную информационную систему. Книга
Неправильное использование ограничений доступа к каталогам электронной почты приводит к возникновению возможности преодоления системы защиты. В ряде версий 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 в одной системе, мог создать пользователя с идентификатором, совпадающим с идентификатором пользователя удаленной системы, и запустить в удаленной системе процесс от имени и с полномочиями этого пользователя. Таким образом, злоумышленник, получивший контроль над одной из систем, мог получить доступ и к другим системам.