BASH must die

Иван Скляров

Xakep, номер #061, стр. 061-060-4


Как избавиться от system() и popen()

Для избавления от функции system() в программе достаточно заменить ее парой вызовов fork()+exec(), а функции popen() и pclose() устраняются серией pipe()+dup2()+exec().

Что такое на самом деле /bin/sh

В большинстве *nix-систем /bin/sh является символической ссылкой на рабочую оболочку системы. В качестве рабочей оболочки обычно выступает bash.

Полезные ресурсы

Посети эти сайты:

www.securityfocus.com/data/library/P49-14.txt

www.citforum.ru/operating_systems/articles/pam.shtml

www.kernel.org/pub/linux/libs/pam/

www.openwall.com

www.immunix.org

www.phrack.org

Как мир защищается от шеллкода

Уже давно известно, что одним чтением багтраков и латанием дыр нормально свою систему не защитить. Поэтому разрабатываются различные системы безопасности. Все существующие на сегодняшний день системы защиты от shellcode можно условно разделить на две категории:

1. Системы анализа и аудита исходного кода на уязвимость.

2. Системы, блокирующие или ограничивающие деструктивные действия программ.

К первым относятся сканеры исходных текстов (source code scanners) и динамические отладчики. Сканеры исходных текстов (RATS, FlawFinder, PScan) проверяют код и выдают информацию о потенциально опасных участках. Но при помощи одних сканеров нельзя обнаружить все опасные места, поэтому применяются также динамические отладчики (MemWatch, Sharefuzz, ElectricFence). Передавая различные возможные комбинации входных данных, удается обнаружить многие скрытые ошибки, в т.ч. и переполнения буфера. Однако применение этих систем на больших программах, где количество строк в коде достигает миллиона, становится абсолютно бесполезным делом.

Ко второй категории относятся системы, блокирующие деструктивный код либо во время компиляции программы (StackGuard, FormatGuard, ProPolice), либо при ее исполнении (Openwall, Libsafe). Ограничивающий принцип (SubDomain, Linux Intrusion Detection System) основан на контроле доступа к определенным файлам и каталогам с целью минимизировать риск проникновения в систему. Однако такие системы очень сложны в управлении.

К сожалению, практически все эти системы защиты (кроме последнего варианта) рассчитаны на заранее известные уязвимости и совершенно бессильны перед другими атаками. Так, например, OpenWall хорошо защищает от переполнения буфера, но ничего не может поделать с heap overflow. Поэтому нужны системы защиты, предусматривающие успешное срабатывание шеллкода, но при этом все равно блокирующие или серьезно ограничивающие доступ хакера внутрь.

CD

На диске можно взять исходник оболочки xsh.c, который распространяется по лицензии GPL.

WARNING

Автор и редакция не несут ответственности за использование этого материала на практике.

Назад на стр. 061-060-3  Содержание