From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 21 May 2003 20:00:10 +0300 From: Victor Forsyuk To: devel@altlinux.ru Subject: Re: [devel] libsafe Message-ID: <20030521170010.GH24549@nomad.ksi-linux.com> References: <20030519192608.GA7617@basalt.office.altlinux.org> <86vfw6qhqk.fsf@hlodin.lutsk.bank.gov.ua> <20030520091148.GA13656@basalt.office.altlinux.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20030520091148.GA13656@basalt.office.altlinux.org> User-Agent: Mutt/1.3.25i Sender: devel-admin@altlinux.ru Errors-To: devel-admin@altlinux.ru X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: devel@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: 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 всё же заслуживает своего места в дистрибутиве.