Переполнение буфера

Переполнение буфера (англ. Buffer Overflow) — явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера.

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

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

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

PQ VPS сервера в 28+ странах.