* [COMM] Атаки типа buffer overflow @ 2004-08-12 12:47 Alexey Morsov 2004-08-15 16:39 ` [Comm] " Денис Смирнов 0 siblings, 1 reply; 7+ messages in thread From: Alexey Morsov @ 2004-08-12 12:47 UTC (permalink / raw) To: ALT Linux Community Привет, Не секрет что многое в линуксе (а точнее там где используються некоторые распространенные функции Си - скажем strcpy, sprintf) подвержено переполнению буфера - и является уязвимым место многих сервисов... Собственно вопрос - как обстоят с этим дела и как можно попроверять, поисследовать, помониторить на этот счет (про snort слышал но не пользовался)? -- Всего наилучшего, Системный Администратор ЗАО "ИК "РИКОМ-ТРАСТ" Алексей Морсов ICQ: 196766290 Jabber: Samurai@jabber.ru http://www.ricom.ru http://www.fondmarket.ru ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Comm] Re: Атаки типа buffer overflow 2004-08-12 12:47 [COMM] Атаки типа buffer overflow Alexey Morsov @ 2004-08-15 16:39 ` Денис Смирнов 2004-08-16 8:48 ` Alexey Morsov 0 siblings, 1 reply; 7+ messages in thread From: Денис Смирнов @ 2004-08-15 16:39 UTC (permalink / raw) To: Alexey Morsov; +Cc: ALT Linux Community On Thu, Aug 12, 2004 at 04:47:06PM +0400, Alexey Morsov wrote: AM> Не секрет что многое в линуксе (а точнее там где используються AM> некоторые распространенные функции Си - скажем strcpy, sprintf) AM> подвержено переполнению буфера - и является уязвимым место многих AM> сервисов... Я бы сказал что подавляющее большинство ошибок безопасности с этим и связано. Собственно проблема в том, что в C отсутствует тип данных "строка". Есть только тип данных "указатель на символ", который и используется для работы со строками. Следить за тем, чтобы не было записи в память, не принадлежащую этой переменной, должен сам программист. AM> Собственно вопрос - как обстоят с этим дела и как можно AM> попроверять, поисследовать, помониторить на этот счет (про snort AM> слышал но не пользовался)? Копать в сторону утилит типа valgrind, которые умеют отлавливать некоторые проблемы такого рода. В общем случае проблема неразрешима, и является основной причиной крайней неразумности использования языка С для написания прикладного ПО. -- С уважением, Денис http://freesource.info ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Re: Атаки типа buffer overflow 2004-08-15 16:39 ` [Comm] " Денис Смирнов @ 2004-08-16 8:48 ` Alexey Morsov 2004-08-16 9:41 ` Денис Смирнов 0 siblings, 1 reply; 7+ messages in thread From: Alexey Morsov @ 2004-08-16 8:48 UTC (permalink / raw) To: community Денис Смирнов wrote: > AM> Собственно вопрос - как обстоят с этим дела и как можно > AM> попроверять, поисследовать, помониторить на этот счет (про snort > AM> слышал но не пользовался)? > > Копать в сторону утилит типа valgrind, которые умеют отлавливать некоторые > проблемы такого рода. В общем случае проблема неразрешима, и является > основной причиной крайней неразумности использования языка С для написания > прикладного ПО. Т.е. ваше мнение что на Си нужно (и достаточно безопасно) писать только системное ПО (модули, ядра, драйвера)? А приложения (и уж тем более взаимодействующие с интернет) на чем-то ином? А на чем тогда (вроде тотже апач, mysql, squid на Си и писаны)? -- Всего наилучшего, Системный Администратор ЗАО "ИК "РИКОМ-ТРАСТ" Алексей Морсов ICQ: 196766290 Jabber: Samurai@jabber.ru http://www.ricom.ru http://www.fondmarket.ru ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Comm] Re: Атаки типа buffer overflow 2004-08-16 8:48 ` Alexey Morsov @ 2004-08-16 9:41 ` Денис Смирнов 2004-08-16 10:12 ` Aleksey Novodvorsky 0 siblings, 1 reply; 7+ messages in thread From: Денис Смирнов @ 2004-08-16 9:41 UTC (permalink / raw) To: Alexey Morsov; +Cc: community On Mon, Aug 16, 2004 at 12:48:11PM +0400, Alexey Morsov wrote: AM> Т.е. ваше мнение что на Си нужно (и достаточно безопасно) писать AM> только системное ПО (модули, ядра, драйвера)? А приложения (и уж AM> тем более взаимодействующие с интернет) на чем-то ином? Именно так. AM> А на чем тогда Хоть на Visual Basic. Я абсолютно серьёзно. Если совсем серьёзно, то при программировании по Windows лучше всего использовать любой .NET язык, а при портабельном программировании либо Java (из распространённых), либо, что гораздо лучше, Tcl. AM> (вроде тотже апач, mysql, squid на Си и писаны)? Ну и светятся в багтраке с завидной периодичностью. И будут светиться _всегда_. Просто потому, что при программировании на C нужно иметь очень высокую квалификацию, и требуемая квалификация растёт экспоненциально с ростом программы. Притом затраты на организацию совместной разработки тоже растут нелинейно. Кстати апач, mysql и squid не совсем прикладные программы всё-таки, и при их написании вставки кода на си отнюдь не помешают (особенно это касается апача и сквида). SQL-сервер можно и нужно писать на язычках вроде OCaml, ибо бОльшая часть нагрузки на процессор это: - парсер - оптимизатор - вычисление функций Всё это прекрасно оптимизируется. Я не удивлюсь если движок типа SQLite, написаный на OCaml, окажется: а) быстрее; б) надёжнее; в) менее требовательным к памяти; г) легче расширяемым; Но это всё _сейчас_ имеет смысл только в mission critical приложениях. Просто потому, что хороших программистов на языках отличных от C++ и жабы за разумные деньги найти сложно, и они _потребуют_ великолепной зарплаты, соц программ, хорошего менеджмента. Далеко не всегда руководство просто достаточно квалифицировано, чтобы создать такие тепличные условия (дело не в деньгах даже, программисты за 2-3k$ реально дешевле программистов за 500-1000$). Поэтому: 1. делается декомпозиция программы на _модули_ (ООП в жопу) 2. для каждого модуля продумывается на каком языке его стоит писать 3. каждый модуль либо пишется своими силами, либо заказывается у кого-то сильно более крутого (если модуль критичен по производительности) интерфейс -- пишется на Tcl (превосходная переносимость, элементарно сам встраивается в программы на других языках, а также в него легко встраиваются модули). логика -- зависит от её объёмов, в порядке убывания: OCaml, Tcl, Java, C++ вещи, требующие максимальной производительности -- OCaml, C++, Java Ну и далее смотреть и смотреть по ситуации. Главный принцип программиста -- лень. Второй главный принцип -- "разделяй и властвуй" Если код можно не писать, а лицензировать -- он лицензируется. Если код можно не писать, а взять готовую библиотеку и написать вокруг обёртку -- так и делается. Если код не является тем, ради которого покупается написаный продукт -- код продвигается в виде правок к используемым библиотекам (пусть другие люди, которые лучше знают эту сферу, занимаются его поддержкой). В случае свободных программ не зазорно использовать в качестве _расширений_ проприетарные библиотеки (IMHO). Например написать патч к mplayer, который бы использовал Intel'овские примитивы для DSP _если они есть у пользователя_ было бы полезно (это как пример). Ну и следует понимать, что написаное выше есть всего лишь результат _моего_ весьма небольшого опыта в IT -- я знаю меньше десятка языков программирования и практически не владею функциональным программированием, а значит уже большую часть возможностей попросту не вижу. Посему каждый раз надо внимательно обследовать сферу, для которой пишется программа, и искать наилучший инструмент. После чего садиться, и изучать этот инструмент. Скажем пример -- пишется приложение. Приложение должно быть _очень_ масштабируемых (грубо говоря от сотового телефона до мейнфрейма). Какой язык будет выбран? Java. Просто потому что это "политика партии" и в этом случае можно получить больше поддержки, больше кода будет написано сторонними разработчиками. Или смотреть что нужно пользователю. Скажем _сейчас_ производительность находится чуть ли не на последнем месте по важности, а _безопасность_ на первом. Поэтому выбирая интерпретируемые языки программирования, или языки вроде OCaml (где написание кривого кода несколько усложняется) можно получить преимущество на рынке за счёт большей надёжности и более быстрого добавления новой функциональности. В любом случае, надо действовать осознанно -- где приоритет "плыть туда же, куда main stream", где "плаву не туда, куда плывёт течение, а туда, куда я хочу", где ориентироваться на дешивизну разработчиков, а где на качество результата. Если же вопрос в плане "чему учиться?" то я рекомендую: 1. Tcl (обязательно) 2. OCaml (мозги несколько сдвигает, всё не могу найти время чтобы полностью с ним разобраться, но уже даже теоретическое знание изменило стиль написания кода на других языках) 3. Java (придётся) 4. Perl (знать надо, но лучше стараться на нём не писать, изучать лучше после вышеперечисленность, мозги портит почти как бейсик, по себе сужу) Стоит обратить внимание на Lisp -- так говорят умные люди, которым я доверяю. Времени пока не нахожу. -- С уважением, Денис http://freesource.info ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Re: Атаки типа buffer overflow 2004-08-16 9:41 ` Денис Смирнов @ 2004-08-16 10:12 ` Aleksey Novodvorsky 2004-08-16 10:25 ` Maxim Tyurin 0 siblings, 1 reply; 7+ messages in thread From: Aleksey Novodvorsky @ 2004-08-16 10:12 UTC (permalink / raw) To: community; +Cc: Alexey Morsov Денис Смирнов пишет: >On Mon, Aug 16, 2004 at 12:48:11PM +0400, Alexey Morsov wrote: > > AM> Т.е. ваше мнение что на Си нужно (и достаточно безопасно) писать > AM> только системное ПО (модули, ядра, драйвера)? А приложения (и уж > AM> тем более взаимодействующие с интернет) на чем-то ином? > >Именно так. > > > Проблема в том, что на С написаны и операционные системы, и серверы, и, что важнее всего, все системы программирования. Так что сколько бы ни рекламировать perl, java, VB (ну, вот этого уж точно не надо!), -- в них самих будут дыры. Конечно, увеличивать число дыр в геометрической прогрессии не стоит. Потому нужно просто хорощо писать. А если не хочется, или время поджимает -- сваливать свои баги на баги системы программирования. :-) Сейчас почти всюду, Россия не исключение, приходят к пониманию того, что нужны многоплатформенные приложения. На самом деле, практически все программы, грамотно разработанные на linux как платформе разработки, легко переносятся куда угодно. Но есть и технологии, приспособленные для этого. Если не говорить о программировании на C/C++ с использованием многоплтформенных библиотек (в частности, графических тулкитов, таких как Qt, Gtk (пока -- с оговорками, но их все меньше), WxWidgets (бывший WxWindows), то это: -- скриптовые языки (perl, python, tcl, ruby) с bindings к тем же toolkits; -- Java, особенно Eclipse; -- Mozilla development framework (Mozilla это не браузер в первую очередь, как многие думают, а очень удобная платформа разработки на XUL/js, поддерживающая больше платформ, чем Java и свободная, в отличие от нее). Mono и DotGNU тоже можно включить в этот список, но не стоит рассчитывать на их совместимость с .NET. Rgrds, Алексей ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Re: Атаки типа buffer overflow 2004-08-16 10:12 ` Aleksey Novodvorsky @ 2004-08-16 10:25 ` Maxim Tyurin 2004-08-16 10:37 ` Aleksey Novodvorsky 0 siblings, 1 reply; 7+ messages in thread From: Maxim Tyurin @ 2004-08-16 10:25 UTC (permalink / raw) To: community; +Cc: Alexey Morsov Aleksey Novodvorsky <aen@altlinux.ru> writes: > Денис Смирнов пишет: > >>On Mon, Aug 16, 2004 at 12:48:11PM +0400, Alexey Morsov wrote: >> >> AM> Т.е. ваше мнение что на Си нужно (и достаточно безопасно) писать >> AM> только системное ПО (модули, ядра, драйвера)? А приложения (и уж >> AM> тем более взаимодействующие с интернет) на чем-то ином? >> >>Именно так. >> >> > Проблема в том, что на С написаны и операционные системы, и серверы, > и, что важнее всего, все системы программирования. Так что сколько бы > ни рекламировать perl, java, VB (ну, вот этого уж точно не надо!), -- > в них самих будут дыры. Будут. Но одно дело написать на C только ядро интерпретатора, проверить и отладить его код и совсем другое писать на C большое приложение. \scip > -- Mozilla development framework (Mozilla это не браузер в первую > очередь, как многие думают, а очень удобная платформа разработки на > XUL/js, поддерживающая больше платформ, чем Java и свободная, в > отличие от нее). Если бы XUL не менялся так от версии к версии была бы очень удобная платформа. А пока с XUL приложением нужно таскать ту версию Mozilla для которой оно было написано :( \scip -- With Best Regards, Maxim Tyurin aka Bungarus JID: MrKooll@jabber.pibhe.com ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Comm] Re: Атаки типа buffer overflow 2004-08-16 10:25 ` Maxim Tyurin @ 2004-08-16 10:37 ` Aleksey Novodvorsky 0 siblings, 0 replies; 7+ messages in thread From: Aleksey Novodvorsky @ 2004-08-16 10:37 UTC (permalink / raw) To: community; +Cc: Alexey Morsov Maxim Tyurin пишет: >Aleksey Novodvorsky <aen@altlinux.ru> writes: > > > >>Денис Смирнов пишет: >> >> >> >>>On Mon, Aug 16, 2004 at 12:48:11PM +0400, Alexey Morsov wrote: >>> >>>AM> Т.е. ваше мнение что на Си нужно (и достаточно безопасно) писать >>>AM> только системное ПО (модули, ядра, драйвера)? А приложения (и уж >>>AM> тем более взаимодействующие с интернет) на чем-то ином? >>> >>>Именно так. >>> >>> >>> >>> >>Проблема в том, что на С написаны и операционные системы, и серверы, >>и, что важнее всего, все системы программирования. Так что сколько бы >>ни рекламировать perl, java, VB (ну, вот этого уж точно не надо!), -- >>в них самих будут дыры. >> >> > >Будут. Но одно дело написать на C только ядро интерпретатора, >проверить и отладить его код и совсем другое писать на C большое >приложение. > >\scip > > > >>-- Mozilla development framework (Mozilla это не браузер в первую >>очередь, как многие думают, а очень удобная платформа разработки на >>XUL/js, поддерживающая больше платформ, чем Java и свободная, в >>отличие от нее). >> >> > >Если бы XUL не менялся так от версии к версии была бы очень удобная >платформа. А пока с XUL приложением нужно таскать ту версию Mozilla >для которой оно было написано :( > > > XUL уже давно стабилен, с версии 1.4 -- точно. Впрочем, к концу года должна быть альфа версия xulruner , -- будет проще. Rgrds, Алексей ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2004-08-16 10:37 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2004-08-12 12:47 [COMM] Атаки типа buffer overflow Alexey Morsov 2004-08-15 16:39 ` [Comm] " Денис Смирнов 2004-08-16 8:48 ` Alexey Morsov 2004-08-16 9:41 ` Денис Смирнов 2004-08-16 10:12 ` Aleksey Novodvorsky 2004-08-16 10:25 ` Maxim Tyurin 2004-08-16 10:37 ` Aleksey Novodvorsky
ALT Linux Community general discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 community community/ http://lore.altlinux.org/community \ mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com public-inbox-index community Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.community AGPL code for this site: git clone https://public-inbox.org/public-inbox.git