Введение
Эскалация привилегий – это получение контроля над компьютерными привилегиями, превышающими обычные права доступа.
Эскалация привилегий – это использование уязвимости, недостатка в проектировании или ошибки конфигурации в операционной системе или программном приложении для получения расширенного доступа к ресурсам, которые обычно защищены от приложения или пользователя. В результате приложение, обладающее большими привилегиями, чем предполагалось разработчиком приложения или системным администратором, может выполнять несанкционированные действия.
Предыстория
Большинство компьютерных систем разработаны для работы с несколькими учетными записями пользователей, каждая из которых обладает правами, известными как привилегии. Типичные привилегии включают просмотр и редактирование файлов или изменение системных файлов. Эскалация привилегий означает получение пользователями прав, на которые они не имеют доступа. Эти права могут быть использованы для удаления файлов, просмотра конфиденциальной информации или установки нежелательных программ, таких как вирусы. Обычно это происходит из-за ошибки в системе, позволяющей обойти меры безопасности, или из-за ошибочных предположений в конструкции системы относительно способов её использования. Эскалация привилегий бывает двух видов:
Вертикальная эскалация привилегий, также известная как повышение привилегий, когда пользователь или приложение с более низким уровнем привилегий получает доступ к функциям или данным, предназначенным для пользователей или приложений с более высоким уровнем привилегий (например, пользователь интернет-банкинга получает доступ к административным функциям сайта или обходит пароль на смартфоне). Горизонтальная эскалация привилегий, когда обычный пользователь получает доступ к функциям или данным, предназначенным для других обычных пользователей (например, пользователь интернет-банкинга А получает доступ к интернет-банковскому счету пользователя Б).
Вертикальный
Этот тип повышения привилегий происходит, когда пользователь или процесс получает более высокий уровень доступа, чем предполагалось администратором или разработчиком системы, возможно, за счет выполнения операций на уровне ядра.
Примеры
В некоторых случаях приложения с высокими привилегиями предполагают, что им будет предоставлен только ввод, соответствующий спецификации интерфейса, и поэтому не проверяют этот ввод. Затем злоумышленник может использовать это предположение для запуска несанкционированного кода с привилегиями приложения: некоторые службы Windows настроены на запуск под учетной записью пользователя локальной системы. Уязвимость, такая как переполнение буфера, может быть использована для выполнения произвольного кода с привилегиями, повышенными до локальной системы. В качестве альтернативы, системная служба, которая выдает себя за пользователя с меньшими правами, может повысить привилегии этого пользователя, если ошибки не обрабатываются должным образом во время выдачи себя за другого пользователя (например, если пользователь внедрил вредоносный обработчик ошибок). В некоторых устаревших версиях операционной системы Microsoft Windows заставка "All Users" запускается под учетной записью локальной системы – любая учетная запись, которая может заменить текущий двоичный файл заставки в файловой системе или реестре, может повысить свои привилегии. В некоторых версиях ядра Linux можно было создать программу, которая устанавливала бы свой текущий каталог в /etc/cron.d, запрашивала создание дампа памяти в случае сбоя и затем завершала работу под действием другого процесса. Файл дампа памяти был бы помещен в текущий каталог программы, то есть /etc/cron.d, и cron интерпретировал бы его как текстовый файл с инструкциями по запуску программ по расписанию. Поскольку содержимое файла находилось бы под контролем злоумышленника, он мог бы выполнять любые программы с правами root. Cross Zone Scripting – это тип атаки, направленной на повышение привилегий, при которой веб-сайт обходит модель безопасности веб-браузеров, позволяя ему запускать вредоносный код на клиентских компьютерах. Существуют также ситуации, когда приложение может использовать другие высокопривилегированные службы и делает неверные предположения о том, как клиент может манипулировать их использованием. Приложение, которое может выполнять команды командной строки или команды оболочки, может быть уязвимо для Shell Injection, если оно использует непроверенные данные в качестве части выполняемой команды. В этом случае злоумышленник сможет запускать системные команды с привилегиями приложения. Калькуляторы Texas Instruments (особенно TI 85 и TI 82) изначально были разработаны для использования только интерпретируемых программ, написанных на диалектах TI BASIC; однако, после того как пользователи обнаружили ошибки, которые можно было использовать для запуска нативного кода Z 80 на аппаратном обеспечении калькулятора, TI предоставила данные для программирования, чтобы поддержать разработку сторонними разработчиками. (Это не относится к TI Nspire на базе ARM, для которого были найдены джейлбрейки с использованием Ndless, но Texas Instruments продолжает активно бороться с ними.) Некоторые версии iPhone позволяют неавторизованному пользователю получить доступ к телефону, когда он заблокирован.
Some Windows services are configured to run under the Local System user account. A vulnerability such as a buffer overflow may be used to execute arbitrary code with privilege elevated to Local System. Alternatively, a system service that is impersonating a lesser user can elevate that user's privileges if errors are not handled correctly while the user is being impersonated (e. g. if the user has introduced a malicious error handler)
Under some legacy versions of the Microsoft Windows operating system, the All Users screensaver runs under the Local System account – any account that can replace the current screensaver binary in the file system or Registry can therefore elevate privileges. In certain versions of the Linux kernel it was possible to write a program that would set its current directory to /etc/cron. d, request that a core dump be performed in case it crashes and then have itself killed by another process. The core dump file would have been placed at the program's current directory, that is, /etc/cron. d, and cron would have treated it as a text file instructing it to run programs on schedule. Because the contents of the file would be under attacker's control, the attacker would be able to execute any program with root privileges. Cross Zone Scripting is a type of privilege escalation attack in which a website subverts the security model of web browsers, thus allowing it to run malicious code on client computers. There are also situations where an application can use other high privilege services and has incorrect assumptions about how a client could manipulate its use of these services. An application that can execute Command line or shell commands could have a Shell Injection vulnerability if it uses unvalidated input as part of an executed command. An attacker would then be able to run system commands using the application's privileges. Texas Instruments calculators (particularly the TI 85 and TI 82) were originally designed to use only interpreted programs written in dialects of TI BASIC; however, after users discovered bugs that could be exploited to allow native Z 80 code to run on the calculator hardware, TI released programming data to support third party development. (This did not carry on to the ARM based TI Nspire, for which jailbreaks using Ndless have been found but are still actively fought against by Texas Instruments.) Some versions of the iPhone allow an unauthorised user to access the phone while it is locked.
Android
Телефоны Android можно официально получить root-права, пройдя контролируемый производителем процесс, используя уязвимость для получения root-доступа или установив кастомное рекавери. Производители предоставляют возможность получить root-права через процесс, который они контролируют, в то время как некоторые позволяют получить root-доступ, просто нажав определенные комбинации клавиш при загрузке или другими способами самостоятельной настройки. Использование метода производителя почти всегда приводит к сбросу устройства к заводским настройкам, что делает получение root-прав бесполезным для тех, кто хочет просмотреть данные, а также навсегда аннулирует гарантию, даже если устройство было лишено root-прав и перепрошито. Программные уязвимости обычно нацелены либо на процесс с правами root, доступный пользователю, используя уязвимость, специфичную для ядра телефона, либо на известную уязвимость Android, которая была устранена в более новых версиях, путем отказа от обновления телефона или намеренного понижения его версии.
Горизонтальный
Горизонтальная эскалация привилегий происходит, когда приложение предоставляет злоумышленнику доступ к ресурсам, которые в обычном режиме были бы защищены от данного приложения или пользователя. В результате приложение выполняет действия от имени того же пользователя, но в ином контексте безопасности, чем предполагалось разработчиком приложения или системным администратором; это, по сути, ограниченная форма повышения привилегий (в частности, несанкционированное присвоение возможности выдавать себя за других пользователей). В отличие от вертикальной эскалации привилегий, горизонтальная не требует повышения привилегий учетных записей. Она часто основана на ошибках в системе.