Каталог Программ :: Полезные утилиты:: софт для win32
Welcome to win32utils.com!
Google
 
Web win32utils.com

en ru




Win32 Utils
Начало
Новости ПО
Добавить программу
Форум
О сайте
Утилиты
ALJ
AWR
Alexf Dialer


скачать программы для пк

Новости сайта win32utils.com

Новости сайта Win32Utils.com

Alexf Dialer, возобновление работы

2005-03-03 00:42
Новая версия после 5 летней паузы.

ALJ: новая версия

2005-01-07 15:58
Программа научилась отсылать лог-файл с ошибками разработчику. Исправлены несколько мелких ошибок.

AWR: новая версия

2004-12-01 23:14
Новая версия программы AWR.

ALJ: новая версия

2004-11-05 13:55
Несколько мелких исправлений.

Alexf Dialer

2004-11-04 23:09
Восстановлена домашняя страничка программы AFD (Alexf Dialer)

Обновление сайта win32utils.com

2004-11-02 18:30
Обновление ПО сайта http://win32utils.com/

Новости мира программного обеспечения

Новости программного обеспечения

Эти страшные NULL-pointerы

2008-05-05 16:00
Сначала не удержусь от цитирования компьютерровской статьи об уязвимости в flash-плейере:

"С присущей компьютерам проблемой переполнения буфера памяти мир безопасности вплотную познакомился в 1996 году [...] В самом простом изложении техническая суть открытия Дауда сводится к очень тонкой работе с NULL pointer, особым указателем адреса памяти с несуществующим значением. [...] Есть возможность заставлять некоторые приложения обращаться к произвольным адресам памяти и выполнять соответствующие коды всякий раз, когда происходит доступ к NULL pointer. [...] Если эти самые NULL-указатели так опасны, почему их до сих пор используют в кодах программ, вместо того чтобы от них отказаться? К сожалению, эта проблема программирования имеет слишком глубокие корни, уходящие к аппаратным кодам, которые непосредственно управляют работой регистров памяти."

Звучит сенсационно - вроде как волшебным образом ноль превращается в произвольное число. Не очень понятно, правда, с чего это вдруг программа полезла к нулевому указателю, а операционная система ее туда пустила. Попробуем разобраться.

Что происходит на самом деле. Происходит, во-первых, хорошо известное целочисленное переполнение (большим unsigned int соответствуют отрицательные signed int, чем можно играть при смешивании unsigned/signed операций). Полученное извне большое беззнаковое число SceneCount проскакивает через знаковую проверку jg, после чего поступает на вход функции выделения памяти, которая, не будучи в состоянии выделить отрицательное количество байтов, возвращает тот самый NULL (имеющий в данном случае вполне существующее значение 0).

Во-вторых, происходит отсутствие проверки возвращаемого значения функции выделения памяти, что приводит к тому, что полученный NULL уходит в дальнейшую обработку. Далее к нему прибавляется все то же SceneCount, умноженный на 12 (размер структуры), и полученный адрес, отсчитываемый от нуля, используется для записи информации. Соответственно, манипулируя значением SceneCount, которое берется из заголовка swf-файла, атакующий может заставить плейер записать почти произвольную информацию в почти произвольную область памяти процесса. Что, впрочем, еще полдела, поскольку дальше остается разобраться с этими "почти", ну да это уже другой вопрос, которому, к слову, посвящено более половины исходного документа.

Переводя на русский язык:

1. Обращение к произвольным адресам памяти при доступе к NULL pointer не имеет ни малейшего отношения к действительности, равно как и "аппаратные коды, управляющие работой регистров памяти". Надумана и опасность нулевых указателей - их для того и придумали, чтобы облегчить проверки, которыми в данном случае пренебрегли. Проблема не в обращении к нулевому указателю (которое отловит любая современная ОС), а в использовании непроверенного значения в качестве базы для операций с указателями.

2. Описываемая уязвимость в принципе не имеет отношения к переполнению буфера. Да и к новому классу ее можно отнести с большой натяжкой.

3. Ну и до кучи - с "присущей компьютерам проблемой переполнения буфера памяти мир безопасности вплотную познакомился" вовсе не в 1996 году, а существенно раньше. Срыв стека широко использовался еще в вирусе Морриса, а известен был задолго до того.

4. Некое представление о программировании иногда полезно даже для авторов компьютерных журналов.



© 2005 · О сайте Win32utils.com