В компьютерной безопасности выполнение произвольного кода ( ACE ) — это способность злоумышленника запускать любые команды или код по своему выбору на целевой машине или в целевом процессе . [1] Уязвимость выполнения произвольного кода — это недостаток безопасности в программном обеспечении или оборудовании, позволяющий выполнять произвольный код. Программа, предназначенная для эксплуатации такой уязвимости, называется эксплойтом выполнения произвольного кода . Возможность запуска выполнения произвольного кода по сети (особенно через глобальную сеть, такую как Интернет) часто называют удаленным выполнением кода ( RCE или RCX ).
Произвольное выполнение кода означает, что если кто-то отправляет специально разработанный набор данных на компьютер, он может заставить его делать все, что захочет. Несмотря на то, что эта конкретная слабость может не вызывать реальных проблем в реальном мире, исследователи обсуждали, предполагает ли это естественную тенденцию компьютеров иметь уязвимости, которые позволяют несанкционированное выполнение кода. [2]
Существует ряд классов уязвимостей, которые могут привести к возможности злоумышленника выполнить произвольные команды или код. Например:
Выполнение произвольного кода обычно достигается посредством контроля над указателем инструкций (например, переход или ветвь ) запущенного процесса . Указатель инструкций указывает на следующую инструкцию в процессе, которая будет выполнена. Таким образом, контроль над значением указателя инструкций дает контроль над тем, какая инструкция будет выполнена следующей. Чтобы выполнить произвольный код, многие эксплойты внедряют код в процесс (например, отправляя ему входные данные, которые сохраняются во входном буфере в ОЗУ ) и используют уязвимость для изменения указателя инструкций, чтобы он указывал на внедренный код. Затем внедренный код автоматически выполняется. Этот тип атаки использует тот факт, что большинство компьютеров (которые используют архитектуру фон Неймана ) не делают общего различия между кодом и данными , [7] [8], поэтому вредоносный код может быть замаскирован под безвредные входные данные. Многие новые процессоры имеют механизмы, усложняющие это, такие как бит невыполнения . [9] [10]
Сам по себе эксплойт выполнения произвольного кода предоставит злоумышленнику те же привилегии , что и уязвимому целевому процессу. [11] Например, при эксплуатации уязвимости в веб-браузере злоумышленник может действовать как пользователь, выполняя такие действия, как изменение файлов персонального компьютера или доступ к банковской информации, но не сможет выполнять действия на системном уровне (если только у пользователя также не будет такого доступа).
Чтобы обойти это, как только злоумышленник может выполнить произвольный код на цели, часто предпринимается попытка эксплойта повышения привилегий , чтобы получить дополнительный контроль. Это может касаться самого ядра или учетной записи, такой как Administrator, SYSTEM или root. С этим расширенным контролем или без него эксплойты имеют потенциал нанести серьезный ущерб или превратить компьютер в зомби — но повышение привилегий помогает скрыть атаку от законного администратора системы.
Любители ретрогейминга сумели найти уязвимости в классических видеоиграх, которые позволяют им выполнять произвольный код, обычно используя точную последовательность нажатий кнопок в суперигре с помощью инструмента, чтобы вызвать переполнение буфера , что позволяет им записывать в защищенную память . На Awesome Games Done Quick 2014 группе энтузиастов скоростного прохождения удалось закодировать и запустить версии игр Pong и Snake в копии Super Mario World [12], используя чтение за пределами буфера указателя функции, который указывает на контролируемый пользователем буфер, для выполнения произвольного кода.
12 июня 2018 года боснийский исследователь безопасности Жан-Ив Авенар из Mozilla обнаружил уязвимость ACE в Windows 10. [ 13]
1 мая 2018 года исследователь безопасности обнаружил уязвимость ACE в архиваторе файлов 7-Zip . [14]
PHP был объектом многочисленных уязвимостей ACE. [15] [16] [17]
9 декабря 2021 года в популярном фреймворке для ведения журналов Log4j была обнаружена уязвимость RCE под названием « Log4Shell » , которая затрагивает многие сервисы, включая iCloud , Minecraft: Java Edition и Steam , и характеризуется как «самая большая и критическая уязвимость последнего десятилетия». [18] [19]
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )