[devel] libsafe

Victor Forsyuk =?iso-8859-1?q?victor_=CE=C1_ksi-linux=2Ecom?=
Ср Май 21 21:00:10 MSD 2003


On Tue, May 20, 2003 at 01:11:48PM +0400, Dmitry V. Levin wrote:
> On Tue, May 20, 2003 at 09:01:23AM +0300, Сергей Глодин wrote:
> >  >> Рекомендую новые пакеты проверять на совместимость с
> >  >> libsafe. Особенно это касается серверных пакетов.
> > 
> >  DVL> Не думаю, что это имеет смысл.
> > 
> >  Он только перехватывает выполнение опасных, с его точки зрения, функций
> >  заменяя их выполнение безопасными вариантами.
> 
> Это иллюзия.
> Функуии типа strcpy/sprintf вредны не из-за опасной реализации, а сами по
> себе, из-за своей семантики.

Несомненно. На самом деле, по сути, libsafe заменяет эти функции
на их безопасные (те, которые с известным размером буфера) аналоги.
Но делает это динамически, во время выполнения функции оценивая,
а какой же размер является еще безопасным. Выдержка из libsafe(8):

The key idea is the ability to estimate a safe upper limit on the size
of buffers automatically. This estimation cannot be performed at
compile time because the size of the buffer may not be known at that
time. Thus, the calculation of the buffer size must be made after the
start of the function in which the buffer is accessed. Our method is
able to determine the maximum buffer size by realizing that such local
buffers cannot extend beyond the end of the current stack frame. This
realization allows the substitute version of the function to limit
buffer writes within the estimated buffer size. Thus, the return
address from that function, which is located on the stack, cannot be
overwritten and control of the process cannot be commandeered.

 
> >  DVL> Когда-то в Сизифе был libsafe1, но был удален ввиду малой
> >  DVL> полезности и повышенной опасности - некоторые программы безо
> >  DVL> всякой видимой причины начинают вести себя не так, как обычно.  Не
> >  DVL> верю, что libsafe2 окажется более безопасным.
> > 
> >  Было бы неплохо протестировать его. Принудительно в ld.so.preload я его
> >  не вписываю. Это необходимо сделать вручную. Поэтому после его
> >  установки стандартное поведение программ не изменится.
> 
> Это радует :/

Как опциональный инструмент повышения безопасности libsafe всё же
заслуживает своего места в дистрибутиве.




Подробная информация о списке рассылки Devel