Переполнение буфера(buffer overflows)




Введение

 

Интернет полностью меняет то, как мы работаем, живем, развлекаемся и учимся. Эти изменения будут происходить в уже известных нам областях (электронная коммерция, доступ к информации в реальном времени, расширение возможностей связи и т.д.), а также в областях, о которых мы пока не подозреваем. Может даже наступить такой день, когда корпорация сможет делать все свои телефонные звонки через интернет и совершенно бесплатно. В личной жизни возможны появления воспитательских Web-сайтов, через которые родители смогут в любой момент узнать, как обстоят дела у детей. Наше общество только начинает осознавать возможности интернета.

Однако вместе с колоссальным ростом популярности этой технологии возникает беспрецедентная угроза разглашения персональных данных, критически важных корпоративных ресурсов, государственных тайн и т.д. Каждый день хакеры подвергают угрозе эти ресурсы, пытаясь получить к ним доступ с помощью специальных атак. Эти атаки, которые будут описаны ниже, становятся все более изощренными и простыми в исполнении.

Во-первых, это повсеместное проникновение интернета. Сегодня к этой сети подключены миллионы устройств. Многие миллионы устройств будут подключены к интернету в ближайшем будущем. И поэтому вероятность доступа хакеров к уязвимым устройствам постоянно возрастает. Кроме того, широкое распространение интернета позволяет хакерам обмениваться информацией в глобальном масштабе. Простой поиск по ключевым словам типа "хакер", "взлом", "hack", "crack" или "phreak" даст вам тысячи сайтов, на многих из которых можно найти вредоносные коды и способы их использования.

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

 


 

Сетевые атаки

Сетевые атаки. Виды. Способы борьбы

 

Для начала установим, что такое сетевая атака. Сетевая атака - действие, целью которого является захват контроля (повышение прав) над удалённой/локальной вычислительной системой, либо её дестабилизация, либо отказ в обслуживании, а также получение данных пользователей пользующихся этой удалённой/локальной вычислительной системой.

На данный момент выделяют следующие атаки: mailbombing, переполнение буфера, использование специализированных программ (вирусов, снифферов, троянских коней, почтовых червей, rootkit-ов и т.д.), сетевая разведка, IP-спуфинг, man-in-the-middle, инъекция (SQL-инъекция, PHP-инъекция, межсайтовый скриптинг или XSS-атака, XPath-инъекция), отказ в обслуживании (DoS- и DDoS- атаки), phishing-атаки. Рассмотрим некоторые из них.

 

Mailbombing

 

Суть данной атаки заключается в том, что на почтовый ящик посылается огромное количество писем на почтовый ящик пользователя. Эта атака может вызвать отказ работы почтового ящика или даже целого почтового сервера. Данная атака может проводиться любым хотя бы немного подготовленным противником.

Простым примером программы, с помощью которой можно осуществить подобную атаку- The Unabomber. Достаточно знать адрес сервера, позволяющего анонимно отправлять почтовые сообщения, и адрес пользователя, которому эти сообщения предназначены. Количество писем, которое можно отослать для этой программы равно 12 разрядному числу. Рассмотрим способы защиты от данной атаки.

. Давать адрес электронной почты только проверенным источникам.

. В качестве преграды для mailbombing-а может выступать и Web-сайт провайдера, иногда настраиваемый таким образом, чтобы он автоматически определял почтовые атаки. В большинстве случаев они распознаются сервером посредством сравнения исходных IP-адресов входящих сообщений. Если количество сообщений из одного источника превышает некие разумные пределы, то все они автоматически поступают в Recycle Bin на сервере. Конечно же, ничто не мешает злоумышленнику фальсифицировать собственный IP-адрес.

Обычно к таким атакам опытные злоумышленники прибегают крайне редко.

 

Переполнение буфера(buffer overflows)

 

Атака на переполнение буфера основывается на поиске программных или системных уязвимостей, способных вызвать нарушение границ памяти и аварийно завершить приложение или выполнить произвольный бинарный код от имени пользователя, под которым работала уязвимая программа. Если программа работает под учетной записью администратора, то данная атака может позволить получить полный контроль над компьютером, на котором исполняется данная программа.

Реализации атаки требует решения двух подзадач:

. Подготовка кода, который будет выполняться в контексте привилегированной программы.

. Изменение последовательности выполнения программы с передачей управления подготовленному коду.

Классификация атак по переполнению буфера представлена в таблице.

 


 

Классификация атак по переполнению буфера.

Подготовка кода Цель переполнения Внедрение кода Внедрение параметров Не требуется
Искажение адреса возврата из функции Атака “срыв стека” Атака “срыв стека” с параметризацией Атака “срыв стека” с передачей управления
Искажение указателей функций Атака на указатели функций Атака на указатели функций с параметризацией Атака на указатели функций с передачей управления
Искажение таблиц переходов Атака на таблицы переходов Атака на таблицы переходов с параметризацией Атака на таблицы переходов с передачей управления
Искажение указателей данных Атака с искажением указателей данных Атака с искажением указателей данных с параметризацией Атака с искажением указателей данных с оригинальным кодом

 

Исходя из подзадач, реализацию которых требует атака, выделяют следующие способы борьбы с атаками подобного типа:

. Корректировка исходных кодов программы для устранения уязвимостей. Переполнение буфера происходит, прежде всего, из-за неправильного алгоритма работы программы, который не предусматривает проверок выхода за границы буферов. Также возможно применение специальных утилит автоматического поиска уязвимостей в исходном коде программы. Указанные методы и средства позволяют создавать более защищенные программы, но не решают проблему в принципе, а лишь минимизируют число уязвимостей по переполнению буфера. Данный подход ориентирован непосредственно на разработчиков программного обеспечения и не является инструментом конечного пользователя или системного администратора.

. Использование неисполнимых буферов. Суть метода заключается в запрещении исполнения кода в сегментах данных и стека, т.е. параметры сегментов данных и стека содержат только атрибуты записи и чтения, но не исполнения. Однако ограничение на исполнение данных приводит к проблеме несовместимости. Исполняемый стек необходим для работы многим программам, так как на его основе генерируется код компиляторами, реализуются системные функции операционных систем, реализуется автоматическая генерация кода. Защита с использованием неисполнимых буферов предотвратит только атаки с внедрением кода, но не поможет при других видах атак.

. Применение проверок выхода за границы. В основе данного метода лежит выполнение проверок выхода за границы переменной при каждом обращении к ней. Это предотвращает все возможные атаки по переполнению буфера, так как полностью исключает само переполнение. Однако, у этого решения есть существенный недостаток - значительное (до 30 раз) снижение производительности программы.

. Применение проверок целостности. Решение, основанное на данном методе, получено благодаря проекту Synthetix. Цель Synthetix - специализация кода для увеличения производительности операционных систем. При этом вводится понятие так называемого квази-постоянства (Quasi-invariant), т.е. состояния среды, которое неизменно в определенных рамках. Такое квази-постоянство позволяет устранить ряд избыточного кода проверки выполнения различных условий. В рамках проекта реализован набор утилит, в том числе обеспечивающих контроль и защиту квази-постоянных состояний среды. К их числу относятся StackGuard и PointGuard.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: