Повышение привилегий

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Повышение привилегий - это использование компьютерного бага, ошибки в конфигурации операционной системы или программного обеспечения с целью повышения доступа к вычислительным ресурсам, которые обычно защищены от пользователя. В итоге приложение, обладающее большими полномочиями чем предполагалось системным администратором, может совершать неавторизированные действия. «Повышением привилегий» называют ситуацию, когда пользователь компьютерной системы каким-либо образом повышает свои полномочия в этой системе (другими словами: получил возможность делать то, чего прежде делать не мог).

Такая ошибка в программе, как внедрение кода через переполнение буфера, всегда нежелательна. Но серьёзной эту ошибку можно считать лишь в том случае, если она повышает привилегии пользователя. В частности, если внедрение кода происходит на локальной машине, это привилегий не повышает: пользователь и без этого может выполнять исполняемые файлы. Если же удаётся внедрить код через сеть, это уже повышение привилегий: у пользователя появилась возможность выполнять машинный код.[1]

Описание[править | править вики-текст]

Большинство компьютерных систем разрабатываются для использования несколькими пользователями. Полномочия пользователя означают те действия, которые пользователь в праве совершать. Обычно в такие действия входят просмотр и редактирование файлов или модификация системных файлов.

Повышение привилегий означает, что пользователь получил привилегии, правами на которые он не обладает. Подобные привилегии могут быть использованы для удаления файлов, просмотра частной информации или для установки нежелательных программ (например, вирусов). Как правило это происходит, когда в системе присутствует некая ошибка, которая позволяет обойти средства защиты компьютера. Выделяют две формы повышения привилегий:

  • Вертикальное повышение привилегий

Пользователь с низкими привилегиями или приложение имеет доступ к функциям, относящихся к более привилегированным пользователям или приложениям (например, когда пользователи Интерент-Банкинга имеют доступ к административным функциям или знают способ обхода пароля по СМС)

  • Горизонтальное повышение привилегий

Обычный пользователь имеет доступ к личным данным или функциям других пользователей (например, пользователь А имеет доступ к Интернет-Банкингу пользователя Б)

Вертикальное повышение привилегий[править | править вики-текст]

Кольца привилегий архитектуры x86 в защищённом режиме

Данный тип повышения привилегий описывает ситуацию, когда пользователь имеет более высокий уровень доступа, чем должен, например из-за операций с ядром.

Примеры вертикального повышения привилегий[править | править вики-текст]

В некоторых случаях приложение с высоким уровнем доступа полагает, что на вход будут поступать данные, подходящие исключительно для ее интерфейса, и не верифицирует их. В этом случае кто угодно может подменить входящие данные так, что любой вредоносный код может быть запущен с привилегиями этого приложения:

  • В некоторых версиях Microsoft Windows все пользовательские скринсейверы работают из-под локальных пользователей. Таким образом любой пользователь, который может заменить текущий скринсейвер программно в файловой системе или в реестре может получить привилегии.
  • Существуют ситуации, когда приложение может использовать более привилегированные источники и иметь неверное представление как пользователь будет использовать эти источники. Например, приложения, которые могут вызывать командную строку, могут иметь уязвимость, если они используют непроверенные данные на входе как часть выполняемой команды. Злоумышленник в этом случае сможет использовать системные команды с привилегиями данного приложения.
  • Некоторые версии iPhone позволяют не авторизованным пользователям иметь доступ к телефону, пока он заблокирован.[2]

Горизонтальное повышение привилегий[править | править вики-текст]

Горизонтальное повышение привилегий описывает ситуацию, когда приложение позволяет злоумышленнику получить ресурсы, доступ к которым обычно защищен от приложений и других пользователей. Результатом является то, что приложение совершает таки же действия, но с другим уровнем доступа, чем предполагалось разработчиком или системным администратором (злоумышленник получает доступ к личным данным других пользователей).

Примеры горизонтального повышения привилегий[править | править вики-текст]

Данная проблема часто возникает в веб-приложениях. Рассмотрим следующую ситуацию:

  • Пользователь А имеет доступ к его/её счету в Интернет-банкинге.
  • Пользователь Б имеет доступ к его/её счету в том же самом Интернет-банкинге.
  • Уязвимость возникает, когда пользователь А может получить доступ к аккаунту пользователя Б с помощью разного рода злонамеренных действий.

Данные действия возможны благодаря общим слабостям и уязвимости веб-приложений.

Потенциальные слабые места веб-приложений и ситуации, которые могут привести к горизонтальному повышению привилегий:

Способы защиты[править | править вики-текст]

Операционные системы и пользователи могут использовать следующие способы снижения риска повышения привилегий:

Примечания[править | править вики-текст]

См. также[править | править вики-текст]