RISE (Randomized Instruction Set Emulation Building)
– эта разработка, основанная на документе «Diverse Computer Systems» (http://www.cs.unm.edu/~immsec/publications/hotos-97.pdf)
являет собой попытку решения еще одной из проблем – однородности компьютерных
систем. Как и в природе, если какой-то вид становится доминирующим, то он
становится подвержен болезням, заражению и пр. В компьютерном мире ситуация
аналогична. Сегодня стараются делать компьютерные системы более совместимыми и
более легкими для использования, и как результат, сейчас можно встретить в
одной сети несколько сотен компьютеров практически одинаковой конфигурации, и
когда уязвимость найдена, получается весьма благодатная почва для размножения
компьютерных вирусов и для вторжения. Эффекта рандомизации можно достигнуть,
изменяя исходные коды программы, при трансляции, в момент загрузки, комбинируя
эти и другие способы. Все они имеют как положительные, так и отрицательные стороны.
В RISE рандомизируются некоторые инструкции исполняемого двоичного файла в
момент загрузки, для этого они складываются XOR с неким случайным числом. Этот
способ имеет ряд преимуществ, так, не надо хранить измененные программы,
возможно использование нового ключа при каждом исполнении, не требуется
исходный код, не требуется настройка. Такой компьютер с «индивидуализированной»
системой команд будет иметь большую устойчивость к уязвимостям, вроде
переполнения буфера. Так как изменить системы команд процессора довольно
проблематично, то для реализации этой идеи используется x86 эмулятор Valgrind (http://valgrind.kde.org), первоначально
предназначенный для отладки памяти. На нынешнем этапе RISE представляет собой
скорее концепцию, так как Valgrind сильно замедляет процесс, и для нормальной
работы эмулятору требуется большая оптимизация. Работает RISE (как и остальные
утилиты, кроме lisys ) пока только с ядрами 2.2 и 2.4, поэтому при попытке
собрать с ядром серии 2.6, скорее всего, получите такое сообщение.
checking
for the kernel version... unsupported (2.6.4-52-default)
configure: error:
Valgrind works on kernels 2.2 and 2.4