В компьютерной безопасности выполнение произвольного кода (ACE) — это возможность злоумышленника запускать любые команды или код по выбору злоумышленника на целевой машине или в целевом процессе . [1] Уязвимость , связанная с выполнением произвольного кода, — это недостаток безопасности в программном или аппаратном обеспечении, позволяющий выполнять произвольный код. Программа, предназначенная для эксплуатации такой уязвимости, называется эксплойтом выполнения произвольного кода . Возможность инициировать выполнение произвольного кода по сети (особенно через глобальную сеть, такую как Интернет) часто называют удаленным выполнением кода (RCE или RCX).
Выполнение произвольного кода означает, что если кто-то отправит на компьютер специально разработанный набор данных, он сможет заставить его делать все, что захочет. Несмотря на то, что эта конкретная слабость может не вызывать реальных проблем в реальном мире, исследователи обсуждали, предполагает ли она естественную тенденцию компьютеров иметь уязвимости, которые делают возможным несанкционированное выполнение кода. [2]
Существует ряд классов уязвимостей, которые могут привести к тому, что злоумышленник сможет выполнить произвольные команды или код. Например:
Выполнение произвольного кода обычно достигается за счет управления указателем инструкции (например, переходом или ветвью ) работающего процесса . Указатель инструкции указывает на следующую инструкцию в процессе, которая будет выполнена. Таким образом, контроль над значением указателя инструкции дает контроль над тем, какая инструкция будет выполнена следующей. Чтобы выполнить произвольный код, многие эксплойты внедряют код в процесс (например, отправляя в него входные данные, которые сохраняются во входном буфере в оперативной памяти ) и используют уязвимость для изменения указателя инструкции, чтобы он указывал на внедренный код. Внедренный код будет автоматически выполнен. Этот тип атаки использует тот факт, что большинство компьютеров (которые используют архитектуру фон Неймана ) не делают общего различия между кодом и данными , [7] [8] , поэтому вредоносный код может быть замаскирован под безвредные входные данные. Многие новые процессоры имеют механизмы, усложняющие эту задачу, например, бит запрета выполнения . [9] [10]
Сам по себе эксплойт выполнения произвольного кода предоставит злоумышленнику те же привилегии , что и целевой процесс, который является уязвимым. [11] Например, при использовании уязвимости в веб-браузере злоумышленник может действовать от имени пользователя, выполняя такие действия, как изменение файлов персонального компьютера или доступ к банковской информации, но не сможет выполнять действия на уровне системы (если только рассматриваемый пользователь также имел такой доступ).
Чтобы обойти эту проблему, как только злоумышленник может выполнить произвольный код на цели, он часто пытается использовать эксплойт повышения привилегий , чтобы получить дополнительный контроль. Это может включать в себя само ядро или учетную запись, такую как администратор, система или 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=
( помощь )