Что такое переполнение корневого буфера?

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

Также я нахожу это определение: "Переполнение корневого буфера - это переполнение буфера, предназначенное для получения привилегий root для системы".

Теперь мои вопросы

  1. Почему пользовательский процесс пишет в системной области памяти? Разве ОС не способна защитить себя или свою область памяти? Или, может быть, я ошибаюсь.
  2. Почему переполнение корневого буфера приводит к тому, что процесс получает привилегии root для системы? Потому что, насколько мне известно, вам нужно выполнять такие команды, как su или же sudo или некоторые из них, а затем предоставить священный пароль для достижения этого.

Да, я уже взглянул на этот вопрос и отличный ответ.

1 ответ

Решение
  1. Он не записывает в "системную область" памяти. Он все еще находится в памяти пользовательского процесса. Злоумышленник, как правило, пытается записать в пользовательскую память "шелл-код", который, по сути, вызывает его в командной строке системы. Для процесса без полномочий root это будет оболочка без полномочий root. Однако такая оболочка все еще полезна в качестве основы для дальнейших атак. Например, иногда возникают ошибки в ядре, которые позволяют локальному пользователю получить права root. В этом случае нормальная оболочка является прямой ступенькой к корневой оболочке.
  2. Ваш термин "переполнение корневого буфера", скорее всего, означает атаку переполнения буфера на программу, работающую от имени пользователя root. В этом случае успешная атака даст вам не просто оболочку, а корневую оболочку.
Другие вопросы по тегам