вторник, 9 декабря 2008 г.

Исправление дыр безопасности в чужих программах

Это перевод Fixing security holes in other programs. Автор: Реймонд Чен.
Любой отчёт об ошибке, который включает в себя ошибку переполнения буфера, быстро поднимается в приоритете. Несколько последних таких отчётов, которые мне пришлось разбирать, на самом деле были отчётами об ошибках в чужих программах, которые были обнаружены Windows.
Например, было несколько программ, которые отвечали на уведомление LVN_GETDISPINFO переполнением буфера LVITEM.pszText, записывая туда больше, чем LVITEM.cchTextMax символов.

Другая программа, отвечая на IContextMenu.GetCommandString, переполняла буфер pszName, записывая туда больше, чем cchMax символов.

К счастью, в обоих случаях переполнение было всего на один символ, так что мы смогли исправить это создавая буфер на один символ больше, чем это действительно необходимо, и указывая его размер меньше действительного. Таким образом, если программа переполняла буфер, то она ничего не портила.

Другая программа переполняла свой собственный стековый буфер, если вы щёлкали правой кнопкой по файлу, чьё имя содержит больше чем MAX_PATH символов в пути (эти файлы легальны, но их непросто создать и манипулировать ими). Для этого случая мы смогли сделать не много.
Так что, ребята, не забываем: следим за размерами буферов и не переполняем их. Безопасность - это работа каждого. Мы с вами в этом все вместе.

2 комментария:

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.

Примечание. Отправлять комментарии могут только участники этого блога.