Выполнение произвольного кода
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2019 г. ) |
В компьютерной безопасности выполнение произвольного кода ( ACE ) — это возможность злоумышленника запускать любые команды или код по выбору злоумышленника на целевой машине или в целевом процессе . [ 1 ] Уязвимость выполнения произвольного кода — это недостаток безопасности в программном или аппаратном обеспечении, позволяющий выполнять произвольный код. Программа, предназначенная для эксплуатации такой уязвимости, называется выполнения произвольного кода эксплойтом . Возможность инициировать выполнение произвольного кода по сети (особенно через глобальную сеть, такую как Интернет) часто называется удаленным выполнением кода ( RCE или RCX ).
Выполнение произвольного кода означает, что если кто-то отправит на компьютер специально разработанный набор данных, он сможет заставить его делать все, что захочет. Несмотря на то, что эта конкретная уязвимость может не вызывать реальных проблем в реальном мире, исследователи обсуждали, предполагает ли она естественную тенденцию компьютеров иметь уязвимости, которые делают возможным несанкционированное выполнение кода. [ 2 ]
Типы уязвимостей
[ редактировать ]Существует ряд классов уязвимостей, которые могут привести к тому, что злоумышленник сможет выполнить произвольные команды или код. Например:
- Уязвимости безопасности памяти , такие как переполнение буфера или чрезмерное чтение .
- Уязвимости десериализации [ 3 ]
- Уязвимости, связанные с путаницей типов [ 4 ] [ 5 ]
- ГНУ ldd выполнение произвольного кода [ 6 ]
Методы
[ редактировать ]Выполнение произвольного кода обычно достигается посредством управления указателем инструкции (например, переходом или ветвью ) работающего процесса . Указатель инструкции указывает на следующую инструкцию в процессе, которая будет выполнена. Таким образом, контроль над значением указателя инструкции дает контроль над тем, какая инструкция будет выполнена следующей. Чтобы выполнить произвольный код, многие эксплойты внедряют код в процесс (например, отправляя в него входные данные, которые сохраняются во входном буфере в оперативной памяти ) и используют уязвимость для изменения указателя инструкции, чтобы он указывал на внедренный код. Внедренный код будет автоматически выполнен. Этот тип атаки использует тот факт, что большинство компьютеров (которые используют архитектуру фон Неймана ) не делают общего различия между кодом и данными . [ 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 ]
RCE-уязвимость под названием « Log4Shell была обнаружена ведения журналов 9 декабря 2021 года в популярной платформе Log4j » , затрагивающая многие сервисы, включая iCloud , Minecraft: Java Edition и Steam , и охарактеризованная как «самая большая и самая критическая уязвимость за последнее десятилетие». . [ 18 ] [ 19 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Команда KernelCare (25 января 2021 г.). «Атака с удаленным выполнением кода: что это такое, как защитить ваши системы» . blog.kernelcare.com . Проверено 22 сентября 2021 г.
- ^ Джонсон, Понтус (2021). «Внутренняя склонность к уязвимостям компьютеров? Выполнение произвольного кода в универсальной машине Тьюринга». arXiv : 2105.02124 .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «Десериализация недоверенных данных» . owasp.org .
- ^ «Понимание уязвимостей, связанных с путаницей типов: CVE-2015-0336» . microsoft.com . 18 июня 2015 г.
- ^ «Использование CVE-2018-19134: удаленное выполнение кода из-за путаницы типов в Ghostscript» . lgtm.com . 5 февраля 2019 г.
- ^ «Выполнение произвольного кода LDD» .
- ^ Гилрит, Уильям Ф.; Лапланте, Филип А. (31 марта 2003 г.). Компьютерная архитектура: минималистский взгляд . Springer Science & Business Media. ISBN 9781402074165 .
- ^ Рейли, Эдвин Д. (2003). Вехи в области компьютерных наук и информационных технологий . Издательская группа Гринвуд. п. 245 . ISBN 9781573565219 .
- ^ «Tech Insight: выполнить бит отключения (XD-Bit)» (PDF) . Тошиба Польша . 2005. Архивировано из оригинала (PDF) 31 октября 2018 г. Проверено 31 октября 2018 г.
- ^ «AMD поможет вам» (PDF) . АМД . 2012. Архивировано из оригинала (PDF) 5 марта 2019 года.
- ^ «Удаленное выполнение кода — обзор» . Темы ScienceDirect . Проверено 5 декабря 2021 г.
- ^ Орланд, Кайл (14 января 2014 г.). «Как робот на эмуляторе перепрограммировал Super Mario World на лету» . Арс Техника . Проверено 27 июля 2016 г.
- ^ «Уязвимость Microsoft Windows CVE-2018-8213, связанная с выполнением произвольного кода» . Симантек . Архивировано из оригинала 31 октября 2018 года . Проверено 31 октября 2018 г.
- ^ «Уязвимость в 7-Zip делает возможным выполнение произвольного кода» . Управление информационных технологий штата Нью-Йорк . Архивировано из оригинала 15 августа 2021 г. Проверено 31 октября 2018 г.
- ^ «ПНВ-CVE-2017-12934» . nvd.nist.gov . Проверено 31 октября 2018 г.
- ^ «Операция с файлом вызвала десериализацию через оболочку потока «phar://»» (PDF) . Секарма Лаборатория . 2018.
- ^ «ПНВ-CVE-2017-12933» . nvd.nist.gov . Проверено 31 октября 2018 г.
- ^ «Zeroday в вездесущем инструменте Log4j представляет серьезную угрозу для Интернета» . Арс Техника . 9 декабря 2021 . Проверено 11 декабря 2021 г.
- ^ «Недавно обнаруженная ошибка в программном обеспечении — «самая критическая уязвимость последнего десятилетия» » . Хранитель . 11 декабря 2021 г. Проверено 11 декабря 2021 г.