В компьютерной безопасности , выполнение произвольного кода (ACE) является способность атакующего выполнить произвольные команды или код на целевой машине или в целевом процессе . [ Править ] выполнение произвольного кода уязвимость является недостаток безопасности в программном обеспечении или аппаратное обеспечение позволяет выполнить произвольный код. Программа, предназначенная для использования такой уязвимости, называется эксплойтом с выполнением произвольного кода . Возможность инициировать выполнение произвольного кода по сети (особенно через глобальную сеть, такую как Интернет) часто называют удаленным выполнением кода (RCE).
Типы уязвимостей
Существует ряд классов уязвимостей, которые могут привести к тому, что злоумышленник сможет выполнять произвольные команды или код. Например:
- Уязвимости безопасности памяти, такие как переполнение буфера или чтение .
- Уязвимости десериализации [1]
- Уязвимости, связанные с путаницей типов [2] [3]
- Выполнение произвольного кода GNU LDD [4]
Методы
Выполнение произвольного кода обычно достигается за счет управления указателем инструкции (например, переходом или ветвью ) запущенного процесса . Указатель инструкции указывает на следующую инструкцию в процессе, которая будет выполнена. Таким образом, контроль над значением указателя инструкции дает контроль над тем, какая инструкция будет выполняться следующей. Чтобы выполнить произвольный код, многие эксплойты внедряют код в процесс (например, отправляя ему ввод, который сохраняется во входном буфере в ОЗУ ) и используют уязвимость, чтобы изменить указатель инструкции, чтобы он указывал на внедренный код. Внедренный код будет автоматически выполнен. Этот тип атаки использует тот факт , что большинство компьютеров (которые используют архитектуру фон Неймана ) не делают общее различие между кодом и данными , [5] [6] , так что вредоносный код может быть замаскирован , как безвредные входных данных. Многие новые процессоры имеют механизмы, которые усложняют эту задачу, например бит запрета на выполнение . [7] [8]
В сочетании с повышением привилегий
Сам по себе эксплойт с выполнением произвольного кода предоставит злоумышленнику те же привилегии, что и уязвимый целевой процесс. [ необходима цитата ] Например, при использовании уязвимости в веб-браузере злоумышленник может действовать как пользователь, выполняя такие действия, как изменение файлов персонального компьютера или доступ к банковской информации, но не сможет выполнять действия на уровне системы (если только соответствующий пользователь также имел этот доступ).
Чтобы обойти это, как только злоумышленник может выполнить произвольный код на цели, часто предпринимается попытка использовать эксплойт повышения привилегий , чтобы получить дополнительный контроль. Это может включать само ядро или учетную запись, такую как Administrator, SYSTEM или root. С этим расширенным контролем или без него эксплойты могут нанести серьезный ущерб или превратить компьютер в зомби, но повышение привилегий помогает скрыть атаку от законного администратора системы.
Примеры
Любителям ретрогейминга удалось найти уязвимости в классических видеоиграх, которые позволяют им выполнять произвольный код, обычно используя точную последовательность нажатия кнопок, чтобы вызвать переполнение буфера , позволяя им выполнять запись в защищенную память . На Awesome Games Done Quick 2014 группе энтузиастов скоростного прохождения удалось создать код и запустить версии игр Pong и Snake в копии Super Mario World [9] , используя переполнение буфера для записи произвольного кода в память .
12 июня 2018 г. исследователь безопасности Жан-Ив Авенар из Mozilla обнаружил уязвимость ACE в Windows 10 . [10]
1 мая 2018 г. исследователь безопасности обнаружил уязвимость ACE в архиваторе файлов 7-Zip . [11]
PHP был предметом многочисленных уязвимостей ACE. [12] [13] [14]
14 июля 2020 года компания Oversecured, занимающаяся безопасностью мобильных приложений, сообщила об ACE в основной библиотеке Google Play, которая приводит к выполнению произвольного кода в нескольких приложениях Android, включая Google Chrome . [15]
Смотрите также
- BlueKeep (уязвимость в системе безопасности)
Рекомендации
- ^ «Десериализация ненадежных данных» . owasp.org .
- ^ «Общие сведения об уязвимостях, связанных с путаницей типов: CVE-2015-0336» . microsoft.com .
- ^ «Использование CVE-2018-19134: удаленное выполнение кода из-за путаницы типов в Ghostscript» . lgtm.com .
- ^ https://catonmat.net/ldd-arbitrary-code-execution
- ^ Гилрет, Уильям Ф .; Лапланте, Филипп А. (31 марта 2003 г.). Компьютерная архитектура: минималистская перспектива . Springer Science & Business Media. ISBN 9781402074165.
- ^ Рейли, Эдвин Д. (2003). Основные этапы развития компьютерных наук и информационных технологий . Издательская группа "Гринвуд". п. 245 . ISBN 9781573565219.
- ^ «Tech Insight: Execute Disable Bit (XD-Bit)» (PDF) . toshiba.pl . 2005 г.
- ^ «AMD поможет вам» (PDF) . amd.com . 2012 г.
- ^ Орланд, Кайл (14 января 2014 г.). «Как робот, работающий на эмуляторе, перепрограммировал Super Mario World на лету» . arstechnica.com . Проверено 27 июля 2016 года .
- ^ «Уязвимость Microsoft Windows CVE-2018-8213, связанная с выполнением произвольного кода | Symantec» . www.symantec.com . Проверено 31 октября 2018 .
- ^ «Уязвимость в 7-Zip делает возможным выполнение произвольного кода» . Управление информационных технологий штата Нью-Йорк . Проверено 31 октября 2018 .
- ^ «NVD - CVE-2017-12934» . nvd.nist.gov . Проверено 31 октября 2018 .
- ^ «Десериализация, вызванная операцией с файлом через« phar: // »Stream Wrapper» (PDF) . Secarma Labs . 2018.
- ^ «NVD - CVE-2017-12933» . nvd.nist.gov . Проверено 31 октября 2018 .
- ^ «Android: выполнение произвольного кода через контексты сторонних пакетов» . Новости, методы и руководства . Проверено 27 января 2021 .