Повышение привилегий
Повышение привилегий — это использование компьютерного бага, уязвимостей, ошибки в конфигурации операционной системы или программного обеспечения с целью повышения уровня доступа к вычислительным ресурсам, которые обычно защищены от пользователя. В итоге, приложение, обладающее бо́льшими полномочиями, чем предполагалось системным администратором, может совершать неавторизированные действия. «Повышением привилегий» называют ситуацию, когда пользователь компьютерной системы каким-либо образом повышает свои полномочия в этой системе (другими словами: получил возможность делать то, чего прежде делать не мог).
Такая ошибка в программе, как внедрение кода через переполнение буфера, всегда нежелательна. Но, серьёзной эту ошибку можно считать лишь в том случае, если она повышает привилегии пользователя. В частности, если внедрение кода происходит на локальной машине, это привилегий не повышает: пользователь и без этого может выполнять исполняемые файлы. Если же удаётся внедрить код через сеть, это уже повышение привилегий: у пользователя появилась возможность выполнять машинный код.[1]
Описание
Большинство компьютерных систем разрабатываются для использования несколькими пользователями. Полномочия пользователя означают те действия, которые пользователь в праве совершать. Обычно в такие действия входят просмотр и редактирование файлов или модификация системных файлов.
Повышение привилегий означает, что пользователь получил привилегии, правами на которые он не обладает. Подобные привилегии могут быть использованы для удаления файлов, просмотра частной информации или для установки нежелательных программ (например, вредоносного ПО). Как правило это происходит, когда в системе присутствует определённая ошибка, которая позволяет обойти средства защиты компьютера. Выделяют две формы повышения привилегий:
- Вертикальное повышение привилегий
Пользователь с низкими привилегиями или приложение имеет доступ к функциям, относящихся к более привилегированным пользователям или приложениям (например, когда пользователи Интернет-банкинга имеют доступ к административным функциям или знают способ обхода пароля по SMS)
- Горизонтальное повышение привилегий
Обычный пользователь имеет доступ к личным данным или функциям других пользователей (например, пользователь А имеет доступ к Интернет-Банкингу пользователя Б)
Вертикальное повышение привилегий
Данный тип повышения привилегий описывает ситуацию, когда пользователь имеет более высокий уровень доступа, чем должен, например из-за операций с ядром.
Примеры вертикального повышения привилегий
В некоторых случаях, приложение с высоким уровнем доступа полагает, что на вход будут поступать данные, подходящие исключительно для её интерфейса, и не верифицирует их. В данном случае, кто угодно может подменить входящие данные так, что любой вредоносный код может быть запущен с привилегиями этого приложения:
- В некоторых версиях Microsoft Windows все пользовательские скринсейверы работают из-под локальных пользователей. Таким образом любой пользователь, который может заменить текущий скринсейвер программно в файловой системе или в реестре может получить привилегии.
- Существуют ситуации, когда приложение может использовать более привилегированные источники и иметь неверное представление, как пользователь будет использовать эти источники. Например, приложения, которые могут вызывать командную строку, могут иметь уязвимость, если они используют непроверенные данные на входе, как часть выполняемой команды. Злоумышленник, в этом случае, сможет использовать системные команды с привилегиями данного приложения.
- Некоторые версии iPhone позволяют неавторизованным пользователям иметь доступ к телефону, пока он заблокирован.[2]
Горизонтальное повышение привилегий
Горизонтальное повышение привилегий описывает ситуацию, когда приложение позволяет злоумышленнику получить ресурсы, доступ к которым обычно защищен от приложений и других пользователей. Результатом является то, что приложение совершает такие же действия, но с другим уровнем доступа, чем предполагалось разработчиком или системным администратором (злоумышленник получает доступ к личным данным других пользователей).
Примеры горизонтального повышения привилегий
Данная проблема часто возникает в веб-приложениях. Рассмотрим следующую ситуацию:
- Пользователь А имеет доступ к его/её счету в Интернет-банкинге.
- Пользователь Б имеет доступ к его/её счету в том же самом Интернет-банкинге.
- Уязвимость возникает, когда пользователь А может получить доступ к аккаунту пользователя Б с помощью разного рода злонамеренных действий.
Данные действия возможны благодаря общим слабостям и уязвимости веб-приложений.
Потенциальные слабые места веб-приложений и ситуации, которые могут привести к горизонтальному повышению привилегий:
- Предсказуемый идентификационный номер сессии в пользовательских файлах cookie
- Межсайтовый скриптинг (XSS)
- Межсайтовая подделка запроса (CSRF)
- Лёгкий пароль
- Кража файлов cookie
- Кейлогер
- Эксплойт
- Бэкдор
- Другое вредоносное ПО
Способы защиты
Операционные системы и пользователи могут использовать следующие способы снижения риска повышения привилегий:
- Предотвращение выполнения данных
- ASLR технология
- Запускать приложения с минимальными привилегиями (например, Internet Explorer с отключенным SID) с целью предотвратить переполнение буфера
- Использование самых последних версий антивирусных программ
- Использование компиляторов, которые предотвращают переполнение буфера[3]
- Кодирование программного обеспечения и/или его компонентов.
Примечания
- Скорее я нахожусь с другой стороны этого герметичного люка
- Taimur Asad. Apple Acknowledges iOS 4.1 Security Flaw. Will Fix it in November with iOS 4.2 . RedmondPie (27 октября 2010). Дата обращения: 15 апреля 2013. Архивировано 17 апреля 2013 года.
- Microsoft Minimizes Threat of Buffer Overruns, Builds Trustworthy Applications (недоступная ссылка — история ). Microsoft (September 2005). Дата обращения: 4 августа 2008.