Пoкa нaписaниeм кoмпьютeрныx прoгрaмм будут прoдoлжaть зaнимaться живыe люди, в этиx прoгрaммax будут сoдeржaться oшибки. Нeкoтoрыe из этиx oшибoк нe являются критичными, иx нaличиe, зaчaстую, дaжe нe скaзывaeтся нa рaбoтoспoсoбнoсти прoгрaммы. Нo сущeствуeт ряд критичныx oшибoк, испoльзoвaниe кoтoрыx пoзвoлит oткрыть нaпaдaющeму дверь во внутренности системы, через которую можно удалять файлы, воровать номера кредитных карт или другую важную информацию. Новая программа, разработанная специалистами из Колумбийского университета, позволяет предотвратить кибернападения описанного выше типа. И делает это она постоянно шифруя и перемещая участки кода выполняющейся программы, кардинально сокращая промежуток времени, который хакер может использовать для совершения нападения.
Согласно имеющейся статистике, программа, не прошедшая этап окончательной отладки, содержит около 50 ошибок разного рода на 1000 строк программного кода. Тщательная отладка программы, которая является весьма длительным и трудоемким процессом, избавляет программу от большинства самых очевидных ошибок. Но в любом случае в ней остается некоторое количество ошибок, каждая из которых является потенциальной лазейкой для совершения нападения. И, несмотря но то, что разработчики компиляторов постоянно закрывают обнаруженные уязвимости, атакующие хакеры так же быстро находят новые методы и пути для совершения нападений.
«Программа Shuffler делает почти невозможным использование ошибки в программном коде в качестве лазейки для совершения нападения. Таким образом она защищает пользователей программ от ошибок, допущенных разработчиками» — рассказывает Дэвид Уильямс-Кинг (David Williams-King), ведущий ученый данного проекта, — «Благодаря работе программы нападающие не могут вычислить или выяснить точного расположения отдельных участков кода программы, ведь этот код постоянно продолжает изменяться».
В начале 2000-х годов в некоторых операционных системах начали использовать технологию обеспечения безопасности, называемую рандомизацией расположения адресного пространства (address space layout randomization, ASLR). Суть работы этой технологии заключается в перераспределении и перемещении отдельных участков памяти в момент запуска программы. Это в свою очередь, требует повторного проведения процедуры поиска в памяти для того, чтобы повторно использовать некоторые участки программного кода. Но хакеры быстро разобрались, как можно обойти данную технологию, из-за чего она тут же потеряла свою актуальность.
Программа Shuffler делает нечто, напоминающее работу технологии ASLR, но делает это так, что ее работу невозможно обойти при помощи уже известных методов. Она рандомизирует маленькие блоки программного кода, шифруя их и перемещая каждые 20-50 миллисекунд, оставляя злоумышленнику слишком малое время для произведения нападения. Такой подход не нов, но раньше его считали не очень практичным из-за того, что для его реализации требуются специализированные аппаратные средства. Однако нынешние процессоры, обладающие высокой вычислительной мощностью, уже вполне могут справиться с такими задачами и чисто программным путем.
На приведенном видеоролике символом # обозначается зашифрованный и перемещенный участок исполняемого кода программы одного из распространенных типов веб-сервера. По мере выполнения программы сервера программ Shuffler каждые 50 миллисекунд меняет положение блоков, расшифровывает некоторые и шифрует новые блоки, подстраиваясь под программу, которая обеспечивает вывод демонстрационной веб-страницы.
«Когда злоумышленник получит необходимую ему для нападения информацию, она уже устареет» — рассказывает Вэзилеайос Кемерлис (Vasileios Kemerlis), профессор информатики из университета Брауна, — «К тому времени Shuffler уже переместит выполненные программой фрагменты кода в другие участки памяти и произведет все это совершенно случайным образом».
Для использования программы Shuffler не требуется никакого дополнительного кода в защищаемой программе и никаких специальных компиляторов для ее сборки. Shuffler даже рандомизирует свой собственный код во время работы, защищая себя от ошибок. Более того, программа менее требовательна к ресурсам компьютера и не расходует столько процессорного времени, как ее ближайшие конкуренты, программы TASR и Remix, разработанные в Массачусетском технологическом институте и университете Флориды соответственно.
Для одиночных программ, выполняющих интенсивные вычисления на одном процессорном ядре, работа программы Shuffler становится причиной их замедления на 15 процентов. Но в случае программы веб-сервера, выполняющейся на 12-ядерном процессоре, замедление столь незначительно, что им можно просто пренебречь.
И в заключении следует отметить, что разработчик собираются сделать программу Shuffler общедоступной программой с открытым кодом. Но прежде чем это сможет произойти, код программы Shuffler будет подвергнут некоторым изменениям, а ее работа будет проверена на ряде программного обеспечения, на базе которого держатся все основные службы локальных, глобальных сетей и Интернета.