Защита с помощью отключения работы со стеком
Защита компьютерных систем - важный аспект бизнеса "по требованию". В мире современных сетевых сред чрезвычайно важно защититься от разнообразных атак.
В настоящее время атаки на компьютерные системы становятся все изощреннее, и вследствие этого растет вероятность нарушения деятельности коммерческих и государственных компаний. Так как никакие защитные меры не могут гарантировать всесторонней защиты от атак, то необходимо предотвращать нападения, используя несколько технологий одновременно. В этом разделе описывается технология защиты, используемая в AIX для предотвращения атак, направленных на переполнение буфера.
Пробить защиту можно многими способами, но самый распространенный из них - это наблюдение за системными средствами администрирования, поиск и использование в своих целях переполнения буфера. Атаки переполнения буфера происходят во время перезаписи внутреннего программного буфера, поскольку в этот момент невозможна строгая проверка данных(например, командная строка, переменные среды, операции ввода-вывода для диска или терминала). Вредоносный код через переполнение буфера встраивается в работающий процесс и изменяет схему его выполнения. Адрес возврата функции перезаписывается и перенаправляется в место вставленного кода. Основные последствия таких атак - это проверка неправильных или несуществующих границ и искаженная информация о действительных источниках данных. Например, переполнение буфера может возникнуть, если размер объекта данных рассчитан на хранение 1 Кб данных, а программа, не проверив границы ввода, может скопировать в этот объект больше, чем 1 Кб данных.
Целью злоумышленника является атака на команды и/или утилиты, предоставляющие обычному пользователю права доступа root. Имея все права, можно получить контроль над программой и разрешить переполнение буфера. Обычно атаки нацелены на установку ИД пользователя root (UID) или на программы, запускающие командный процессор и таким образом позволяющие получить доступ к системе с правами root.
Такие атаки можно предотвратить, блокируя выполнение вредоносного кода, введенного при переполнении буфера. Запретите выполнение процессов в тех областях памяти, в которых вообще ничего не должно выполняться (области стека и кучи).