Атака с возвратом в libc

редактировать

«Возвращение к LIBC» атака является компьютерной безопасностью атака, как правило, начиная с переполнением буфера, в котором подпрограмму обратный адрес на стеке вызовов заменяются адрес подпрограммы, который уже присутствует в процессе исполняемой памяти, минуя функция no-execute bit (если есть) и избавляет злоумышленника от необходимости вводить собственный код. Первый пример этой атаки в дикой природе был предоставлен Александром Песляком в списке рассылки Bugtraq в 1997 году.

На POSIX - совместимые операционные системы стандартная библиотека Clibc«) обычно используется для обеспечения стандартной среды выполнения программ, написанных на языке программирования Си. Хотя злоумышленник может вернуть код в любом месте, он libcявляется наиболее вероятной целью, поскольку он почти всегда связан с программой и предоставляет злоумышленнику полезные вызовы (например, system функцию, используемую для выполнения команд оболочки).

СОДЕРЖАНИЕ
  • 1 Защита от атак return-to-libc
  • 2 См. Также
  • 3 ссылки
  • 4 Внешние ссылки
Защита от атак return-to-libc

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

« Защита ASCII » - это метод, который можно использовать для предотвращения атак такого типа. С защитой ASCII все адреса системных библиотек (например, libc) содержат NULL-байт ( 0x00). Обычно это делается путем помещения их в первые 0x01010101байты памяти (несколько страниц размером более 16 МБ, получившие название «область защиты ASCII»), поскольку каждый адрес до (но не включая) этого значения содержит как минимум один NULL-байт. Это делает невозможным внедрение кода, содержащего эти адреса, с помощью функций обработки строк, таких как strcpy(). Однако этот метод не работает, если злоумышленник может переполнить NULL байтами в стеке. Если программа слишком велика для первых 16  МБ, защита может быть неполной. Этот метод похож на другую атаку, известную как return-to-plt, где вместо возврата к libc злоумышленник использует функции таблицы связи процедур (PLT), загруженные в независимый от позиции код (например, system@plt, execve@plt, sprintf@plt, strcpy@plt).

Рандомизация разметки адресного пространства (ASLR) делает этот тип атаки крайне маловероятным на 64-битных машинах, поскольку расположение функций в памяти является случайным. Однако для 32-битных систем ASLR дает мало преимуществ, поскольку для рандомизации доступно только 16 бит, и они могут быть побеждены грубой силой за считанные минуты.

Смотрите также
использованная литература
внешние ссылки
Последняя правка сделана 2023-04-13 11:58:52
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте