The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Раскрыты подробности критической уязвимости в Exim"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Раскрыты подробности критической уязвимости в Exim" +1 +/
Сообщение от Ordu (ok), 07-Сен-19, 01:03 
Из общетеоретических соображений ответить на этот вопрос невозможно. Но из практических соображений можно: это будет зависеть от того, как ты будешь конвертировать.

Если ты будешь использовать паскалевские строки, то выйти за границы массива тебе не удастся. Дыра таким образом заткнётся, но баг останется. И не факт, что этот баг не позволит эксплуатацию -- это уже будет зависеть от того, насколько корректно ты будешь обрабатывать ошибки в программе. И вряд ли очень корректно, если речь идёт о построчном переписывании exim.

А если ты откажешься от паскалевских строк, потому что, например, тебе не нравится сборка мусора, и ты хочешь рулить памятью под строки самостоятельно, то тут уже будет зависеть от того, как ты реализуешь строки в паскале. Скорее всего тебе ведь захочется отойти от упёртости паскаля реализуя их, и сделать что-нибудь разэдакое, в стиле:

struct c_string {
    size_t size;
    char str[0]; /* variable size */
};

Паскаль этого не позволяет (насколько я понимаю, он не умеет в array [] of char, а если ему указать 0 в качестве размера, то он любой индекс будет считать инвалидным и отвергать с рантайм ошибкой), значит ты так или иначе включишь "unsafe" режим программирования (заюзав какие-нибудь компиляторо-специфичные вещи, вплоть до ассемблерных вставок), таким образом у тебя будут все возможности нарушить инварианты языка, и если наружу ты выставишь API изоморфный C'шному API для работы с char* (чтобы максимально просто было бы переписывать), и под этим API не будешь вставлять дополнительных проверок на размеры (большинство этих проверок ведь не нужны и тормозят выполнение программы), то ты легко при переписывании сможешь воспроизвести баг.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Раскрыты подробности критической уязвимости в Exim, opennews, 06-Сен-19, 20:19  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру