|  | 20 ноября 2016 | Информационные технологии

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

Ошибка в программе


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

Согласно имеющейся статистике, программа, не прошедшая этап окончательной отладки, содержит около 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 будет подвергнут некоторым изменениям, а ее работа будет проверена на ряде программного обеспечения, на базе которого держатся все основные службы локальных, глобальных сетей и Интернета.




Ключевые слова:
Программа, Shuffler, Защита, Нападение, Ошибка, Код, Перемещение, Шифрование, Память

Первоисточник

Другие новости по теме:
  • Исследователи успешно атаковали компьютер при помощи вируса, закодированног ...
  • Искусственный интеллект научился писать программы, "воруя" участки кода д ...
  • Ученые начали работу над созданием программы, стандартизирующей и облегчающ ...
  • Создана программа, способная исправить ошибки в другой программе, не имея д ...
  • Sketch - новый язык программирования, способный самостоятельно оптимизирова ...




  • 20 ноября 2016 16:25
    #1 Написал: FomaNeverujuwij

    Публикаций: 0
    Комментариев: 3785
    Что-то очень слабо понятен принцип работы этой программы.


    --------------------
        
    21 ноября 2016 18:14
    #2 Написал: kasanabeer

    Публикаций: 0
    Комментариев: 126
    О, один в один описание работы Denuvo
        
    23 ноября 2016 10:10
    #3 Написал: cmp167

    Публикаций: 0
    Комментариев: 163
    FomaNeverujuwij, обычно в программе загруженной в память блоки данных доступные программе для записи перемешиваются с блоками памяти, которые содержат саму программу, причем довольно предсказуемо, хацкеку остается лишь найти кусок кода, который позволяет записать больший кусок данных, чем выделенно памяти, и тем самым перезаписать кусок программы своим кодом, который выполнится с некой вероятностью. Рандомизация усложняет процесс и снижает вероятность.

    Динамическая рандомизация - я бы посмотрел сколько скушается производительности проца на десктопном компе на мультимедийной программе, которая в памяти занимает в разы больше места чем несчастный nginx. Кроме того, переполнение буфера это 1 из множества ошибок, есть целый пласт языков избавленных от них как от класса, но многие проги написанные на этих языках все равно дырявые.
        

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.