При этом действует механизм доверия - если обнаруживается уязвимое место в программном обеспечении, сначала сообщают об этом его разработчику и ждут, когда он изготовит исправление, и только потом сообщают в списки рассылки. Если разработчик ПО не отвечает, тогда тот, кто обнаружил слабое место, может послать информацию в список и раньше. В таких случаях необходимо принять меры, чтобы кто-нибудь не воспользовался выявленным слабым местом.
Обычные типы уязвимостей
В информации, помещаемой на упомянутых выше сайтах и почтовых списках (advisories), часто указывается тип уязвимости. Ниже приводятся описания наиболее распространенных из них с объяснением опасности, которую они представляют.
Backdoor
«Черный ход» (backdoor) - это имя пользователя и пароль, прошитые разработчиком в коде приложения. Он дает возможность входа в систему, о которой не известно конечному пользователю и которая нигде не документирована. Чаще всего это связано с забывчивостью разработчика, не удалившего старый код для отладки. Этот тип уязвимости редко, но встречается. Известный пример - выпуск Borland исходного кода Interbase SQL Server. Черный ход, включающий имя пользователя и пароль по умолчанию для полного доступа, были обнаружены проектом Firebird. Подробности можно узнать на http://www.securityfocus.com/advisories/3152/">
Buffer Overflow
Переполнение буфера происходит при попытке программы
сохранить данные в памяти, объем которой недостаточен для этих данных, при отсутствии в программе проверки размера памяти. В результате программа перезаписывает данные в следующем участке памяти.
Переполнение буфера - один из чаще всего встречающихся типов уязвимос- тей. Пользуются им для того, чтобы переписать информацию, которая идет после текущего блока памяти. В результате можно изменить адрес возврата текущей функции или вызвать крах выполняемого приложения с выходом в оболочку. Хорошее описание простых случаев переполнения буфера есть на http://www.ph.rack.org/show.php?%d1%80=49&%d0%b0=14%d0%b4%5d%d1%88"> http://www.ph.rack.org/show.php?р=49&а=14д]ш чтения требуется некоторое знание С и языка ассемблера).
CGI Exploit
Это (эксплуатируемые уязвимости) в выполняемых сценариях
CGI. Эксплойты этого типа разнообразны и обычно служат для получения с сервера конфиденциальной информации или обхода политики безопасности. Далее в этой главе мы рассмотрим некоторые способы избежать их появления в программах.