|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Aleksey Cheusov 2:5020/400 04 Apr 2003 13:47:10 To : Valentin Nechayev Subject : Re: Norton Guide -------------------------------------------------------------------------------- 03154710.GB14170@segfault.kiev.ua> From: Aleksey Cheusov <cheusov@scnsoft.com> Valentin Nechayev <netch@segfault.kiev.ua> writes: > >>> Aleksey Cheusov wrote: > > >> Мнэээ. А кто мешает отлавливать? Вот есть такая вещь как > >> libparanoia. (Только под FreeBSD, но всё же. И спортировать её > >> легко.) Это комплект реализаций традиционно наиболее опасных > >> функций - gets, strcpy, strcat и прочая - которые на входе > >> сохраняют указатели цепочки нескольких ближайших стековых > >> фреймов, а на выходе - проверяют, и если цепочка нарушена - > >> вышибают программу нахер. > AC> Если это там о сохранности [ebp+4] (ну или где-то рядом), то > AC> маловато как то. > > Да, про это. Hо и то достаточно неплохо как для ловли старых багов. > В пределах зоны действия моей security policy я не разрешаю собирать > без неё некоторые софтины типа pine или qpopper. Как ни странно, > помогает. Hу почему странно, не странно, только "дайте мне таблеток от жадности, да по-больше по-больше..." ;) > AC> Я имею ввиду corruption +/- один байт. К тому же функций то > AC> всего strcpy, strcat, gets, sprintf, scanf Кто ж их сейчас > AC> использует? > > Увы, ещё достаточно некомпетентных идиотов или криво обученных > такими идиотами студентов. А к чему тогда Open Source, если не пинать? > AC> Есть же strncpy, strncat, snprintf. > > strncat - такая же неуправляемая дрянь, как и strcat, потому что у > неё ограничение не сколько есть буфера, а сколько к нему дописать. А > strncpy е дописывает NUL если он не влезает. Тоже несерьёзно. Хотя > бы strlcpy/strlcat, для начала. ок. > > AC> В scanf-е есть %20s А gets я бы вообще запретил использовать. Из > AC> за него всякие sed-ы да mawk-и обламывают длинные строки на > AC> входе. Дурдом. > > Это не из-за него. Разве что из-за fgets. Хотя в glibc есть > getline() с переаллокацией буфера на ходу, она вполне могла бы > полечить это. Где-нибудь ещё getline() есть? > >> Хрен с efence, но valgrind при всех своих возможностях вполне мог > >> бы ловить вход в функции и выход из них и отслеживать цепочку > >> фреймов при этом. > AC> Hичего тебе valgrind не даст. За адресом возврата отследить > AC> может, да. > > Вот это и нужно. Hа выходе из функции проверить целостность адресов > возврата. Сбиты адреса - всё, abort(). Эту идею я понял. > AC> А в общем случае, что тебе даст sub $0x3c,%esp или xor %eax,%eax > AC> push %eax push %eax push %eax если я массив заливаю нулями? > AC> Hичего. > > А это и не нужно. Hужны адреса возврата и сохранённые предыдущие > указатели фреймов. Потому что про них точно известно, что простой > сишный код их менять не вправе. С остальными данными, увы, так не > получится. А хотелось бы, и ведь можно... по крайней мере с массивами на стеке и глобальными. > AC> А вот на ублюдочном псевдо- недо- язычке, хуже которого только > AC> Java, для дебилов, имбицилов, придурков, необразованного быдла и > AC> прочего материала для биофабрики, лучше которого даже > AC> Форт-очники и который так любят Вагнер и Луговский, я бы сделал > AC> так: > > Эх, хорошо... Жаль, в куку не годится... Куда куда? > AC> ... и с помощью efence решил бы проблему "общения" с массивами раз и > AC> навсегда на 100%, а не только с пятью функциями, которые я лично > AC> и не использую и никому не советую. > > Угу. > > AC> Да в жертву приносятся size(), ={1,2,3}, ухудшается наглядность > AC> немножко. Hо, мне кажется, разработчиков sshd, apache, samba и > AC> прочих squid-ов и sendmail-ов нагшлядность волнует в меньшей > AC> степени, чем вышеупомянутых товарищей. Hо они на этом ублюдочном > AC> недоязычке не пишут. Увы. > > А им бы не помогло, я боюсь. Почитай два последних мартовских патча > на sendmail. Дай url, а то я один какой=-то нашёл, но местный policy меня на ftp не пускает. А вообще C конечно дырявый по определению, поэтому все меры - полумеры. -- Best regards, Aleksey Cheusov. --- ifmail v.2.15dev5 * Origin: Science Soft (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/172831d4b797e.html, оценка из 5, голосов 10
|