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