Что такое переполнение корневого буфера?
Я понимаю, что такое переполнение буфера. Как говорится в литературе, "переполнение буфера происходит, когда буфер фиксированной длины достигает своей емкости, и процесс пытается сохранить данные сверх этого максимального предела". Итак, я обращаюсь к областям памяти, которые находятся за пределами области данных, может быть, я получаю доступ к системной области. Поправьте меня, если я ошибаюсь, пожалуйста, посмотрите мой вопрос 1 в конце.
Также я нахожу это определение: "Переполнение корневого буфера - это переполнение буфера, предназначенное для получения привилегий root для системы".
Теперь мои вопросы
- Почему пользовательский процесс пишет в системной области памяти? Разве ОС не способна защитить себя или свою область памяти? Или, может быть, я ошибаюсь.
- Почему переполнение корневого буфера приводит к тому, что процесс получает привилегии root для системы? Потому что, насколько мне известно, вам нужно выполнять такие команды, как
su
или жеsudo
или некоторые из них, а затем предоставить священный пароль для достижения этого.
Да, я уже взглянул на этот вопрос и отличный ответ.
1 ответ
Решение
- Он не записывает в "системную область" памяти. Он все еще находится в памяти пользовательского процесса. Злоумышленник, как правило, пытается записать в пользовательскую память "шелл-код", который, по сути, вызывает его в командной строке системы. Для процесса без полномочий root это будет оболочка без полномочий root. Однако такая оболочка все еще полезна в качестве основы для дальнейших атак. Например, иногда возникают ошибки в ядре, которые позволяют локальному пользователю получить права root. В этом случае нормальная оболочка является прямой ступенькой к корневой оболочке.
- Ваш термин "переполнение корневого буфера", скорее всего, означает атаку переполнения буфера на программу, работающую от имени пользователя root. В этом случае успешная атака даст вам не просто оболочку, а корневую оболочку.