Атаки с переполнением буфера

Взломщики выполняют атаки с переполнением буфера для запуска исполняемых кодов путем переполнения буферов с фиксированным объемом памяти, зарезервированных для процесса ввода. Эти коды позволяют взломщику проникнуть в систему целевого компьютера или повредить хранящиеся на нем данные.

Существуют два типа атак с переполнением буфера.
  • Атаки на динамическую память: заполняется память, зарезервированная для программы. Это сложные для выполнения атаки, которые совершаются редко.
  • Атаки на стек: объекты стековой памяти используются для хранения введенных пользователем данных. Это наиболее распространенный тип атак.
В приведенном далее процессе описаны атаки на стек с переполнением буфера.
  1. Использование стековой памяти в обычном режиме: объект стековой памяти с фиксированным размером обычно пуст и находится в состоянии ожидания ввода данных пользователем. Когда пользователь вводит в программу данные, например свое имя, данные сохраняются в верхней части стека и им назначается обратный адрес блока памяти. При обработке стека введенные пользователем данные отправляются на обратный адрес, указанный программой.
  2. Переполнение стека: при написании программы для данных резервируется определенный объем памяти. При записи данных, объем которых превышает зарезервированное в стеке пространство, происходит переполнение стека. Это вызывает проблему, только если введенные данные являются вредоносными.
  3. Использование переполнения: когда программа ожидает ввода имени пользователя, а взломщик вводит исполняемую команду, которая превышает размер стека, команда сохраняется за пределами зарезервированного пространства.
  4. Запуск вредоносного кода: автоматический запуск команды не происходит только при превышении размера буфера стека. Он возможен, если взломщиком предоставлен обратный адрес, указывающий на вредоносную программу. Сначала в результате переполнения буфера происходит сбой программы, однако программа пытается выполнить восстановление, используя предоставленный взломщиком обратный адрес. Если обратный адрес является допустимым, вредоносная команда выполняется.
  5. Использование разрешений: поскольку программы обычно выполняются в режиме ядра или с разрешениями, унаследованными от учетной записи службы, вредоносный код выполняется с теми же разрешениями, что и приложение, в отношении которого совершена атака. Это означает, что взломщик может получить полный контроль над операционной системой.

Атаки с переполнением буфера