Программное обеспечение и информационная безопасность
Два основных класса программного обеспечения, через котороые производится более 90% всех хакерских атак на компьютерные системы - операционные системы и прикладные программы.
Операционные системы
Операционная система является важнейшим программным компонентом любой вычислительной машины, поэтому от уровня реализации политики безопасности в каждой, конкретной ОС во многом зависит и общая безопасность информационной системы.
Операционная система MS-DOS является ОС реального режима микропроцессора Intel, а потому здесь не может идти речи о разделении оперативной памяти между процессами. Все резидентные программы и основная программа используют общее пространство ОЗУ. Защита файлов отсутствует, о сетевой безопасности трудно сказать что-либо определенное, поскольку на том этапе развития программного обеспечения, драйверы для секшего взаимодействия разрабатывались не фирмой MicroSoft, a сторонними разработчиками.
Семейство операционных систем Windows 95, 98, Millenium — это клоны, изначально ориентированные на работу в домашних ЭВМ. Эти операционные системы используют уровни привилегий защищенного режима, но не делают никаких дополнительных проверок и не поддерживают системы дескрипторов безопасности. В результате этого любое приложение может получить доступ ко всему объему доступной оперативной памяти как с правами чтения, так и с правами записи. Меры сетевой безопасности присутствуют, однако, их реализация не на высоте. Более того, в версии Windows 95 была допущена основательная ошибка, позволяющая удаленно буквально за несколько пакетов приводить к «зависанию» ЭВМ, что также значительно подорвало репутацию ОС, в последующих версиях было сделано много шагов по улучшению сетевой безопасности этого клона.
Поколение операционных систем Windows NT, 2000 уже значительно более надежная разработка компании Microsoft. Они являются действительно многопользовательскими системами, надежно защищающими файлы различных пользователей на жестком диске (правда, шифрование данных все же не производится и файлы можно без проблем прочитать; -„ загрузившись с диска другой операционной системы — например, MS-DOS). Данные ОС активно используют возможности защищенного режима процессоров Intel, и могут надежно защитить данные и код процесса от других программ, если только он сам не захочет предоставлять к ним дополнительного доступа извне процесса.
За долгое время разработки было учтено множество различных сетевых атак и ошибок в системе безопасности. Исправления к ним выходили в виде блоков обновлений (service pack). На сегодняшний день для Windows NT 4.0 самым последним является обновление «Service Pack 6», естественно все исправления, включенные в него были учтены и при разработке Windows 2000. Таким образом две эти операционные системы имеют примерно равную (и очень высокую) систему , безопасности. . .
Другая ветвь клонов растет от операционной системы UNIX. Эта ОС изначально разрабатывалась как сетевая и многопользовательская, а потому сразу же содержала в себе средства информационной безопасности. Практически все широко распространенные клоны UNIX прошли долгий путь разработки и по мере модификации учли все открытые за это время способы атак. Достаточно себя зарекомендовали: LINUX (S.U.S.E.), OpenBSD, FreeBSD, Sun Solaris. Естественно все сказанное относится к последним версиям этих операционных систем. Основные ошибки в этих системах относятся уже не к ядру, которое работает безукоризненно, а к системным и прикладным утилитам. Наличие ошибок в них часто приводит к потере всего запаса прочности системы.
Прикладные программы
Ошибки в прикладном программном обеспечении были и остаются основным путем проникновения злоумышленника как на сервера, так и на рабочие станции. Объективная причина этого разработка подобного программного обеспечения различными группами разработчиков, которые просто не в состоянии уделить должного внимания сетевой и локальной безопасности своего продукта, И если фирмы-разработчики операционных систем тратят огромные суммы на тщательные испытания поведения их программ в нестандартных ситуациях, а также активно учитывают многолетний опыт своих же ошибок, то для небольших фирм это просто не под силу, да и крайне невыгодно экономически.
Ошибки активно ищутся группами «хакеров» практически во всем более или менее распространенном программном обеспечении, однако, наибольшую известность приобретают, конечно, исследования программ, установленных почти у каждого пользователя. Так, например, в одной из недавних версий Microsoft Internet Explorer'a была обнаружена ошибка, связанная с переполнением буфера, которая приводила к тому, что часть URL-адреса попадала на «исполнение» и трактовалась как последовательность команд процессора. При этом длины этого участка хватало например, для того, чтобы загрузить на ЭВМ и сети троянскую программу и передать ей управление. В последующей версии ошибка была исправлена. Программа ICQ — самый популярный электронный пейджер в сети Интернет — в очередной своей версии была снабжена своими создателями возможностью поддерживать миниатюрный WWW-сервер. Однако, ошибка в его реализации позволяла при добавлении слева точек в имени первого каталога получать доступ ко всем файлам жёсткого диска — открывался полный сетевой доступ по чтению!
Многие атаки используют не только непосредственные ошибки в реализации программного обеспечения, но и непродуманные разработчиками аспекты использования стандартных возможностей программы. Так, пожалуй, самым ярким примером этого являются MACRO-вирусы в документах системы Microsoft Office. Возможность исполнения макросов была встроена в эту систему из самых благих побуждений, но тот факт, что макросы могут запускаться на определенные события (например, открытие документа) и получать доступ на модификацию к другим документам, сразу же был использован создателями вирусов отнюдь не в благих целях.
К подобным же примерам следует отнести возможность запуска исполнимых DLL-файяов из HLP-файлов, Казалось бы, открывается безобидный текстовый файл справки, а оказывается он может честно инициировать вызов из прилагающейся DLL-библиотеки да еще и безо всякого уведомления об этом пользователя.
Из всего вышесказанного следует правило: «семь раз отмерь - один отрежь» на этапе разработки собственного программного обеспечения.