Переполнение буфера - Windows против Unix - PullRequest
1 голос
/ 22 октября 2009

Я пытаюсь выяснить проблемы безопасности между переполнением буфера в Windows и Unix.

Насколько я понимаю, взлом Windows из-за переполнения буфера не может быть реализован в Unix, потому что каждому процессу предоставляется свое собственное пространство памяти. Означает ли это, что процессы в Windows совместно используют пространство памяти?

Ответы [ 3 ]

2 голосов
/ 22 октября 2009

Совместно используемая память не является причиной большинства эксплойтов по переполнению буфера. Windows не имеет общей памяти с Win 3.0 (или Win 3.1, работающей на 80286), поэтому прошло уже много времени, почти 20 лет, с момента последней поставки Windows, которая поддерживала модель общей памяти.

Переполнение буфера позволяет злоумышленнику изменять память в процессе, который используется. Тем самым злоумышленник стремится выполнить системную операцию (например, запустить процесс, или загрузить динамическую библиотеку, или изменить права определенного пользователя и т. Д.), Используя уровень привилегий целевых процессов.

Это возможно на платформах Win *, * nix и многих других. То, как ОС и приложение, которое эксплуатируется, справляется с этой попыткой, является тем, что имеет значение. Со стороны приложения, чтобы избежать этого, обычно требуется тщательная проверка размера буфера. Технологии, такие как ASLR (рандомизация размещения адресного пространства, которая не позволяет злоумышленнику угадать адрес функции, которую он должен вызвать, чтобы нанести вред) и DEP (предотвращение выполнения данных, которое не позволяет злоумышленнику внедрить исполняемый код в области данных) ОС, очень помогите. Со стороны ОС, не запуск приложений от имени пользователя root / администратора является, пожалуй, самой важной линией защиты.

2 голосов
/ 22 октября 2009

Процессы Windows и Unix имеют изоляцию памяти. Атаки переполнения буфера могут происходить в обеих средах.

1 голос
/ 22 октября 2009

Возможно, вам следует уточнить, что вы имеете в виду под "переполнением буфера Windows hack". Переполнения буфера не обязательно должны изменять код других процессов.

Пример: чтение из cin в байтовый массив фиксированного размера может использоваться для запуска пользовательского кода. Если сама программа запускается с правами root, ни Unix, ни Windows не могут ничего сделать для предотвращения взлома - изоляция памяти не поможет вообще.

Как указал Тодд, Windows и Unix способны к изоляции памяти (что является очень простой вещью по сравнению с DEP или ASLR ).

...