OWASP Top 10: A5 Нарушенный контроль доступа
Этичный Хакер
Что такое контроль доступа?
Контроль доступа, как следует из названия, предназначен для предоставления или ограничения прав определенным пользователям в приложении. Если управление доступом реализовано правильно, обычный пользователь не должен иметь возможности запрашивать и просматривать документы, которые видны только администраторам. Если злоумышленник находит способ сделать это, то он успешно обходит контроль доступа. Однако контроль доступа распространяется не только на пользователей. Его также можно найти, когда речь заходит о процессах или устройствах.
3 основных типа контроля доступа
- Административный контроль доступа
В данном случае мы говорим о введенных в действие средствах контроля доступа, которые определены для обеспечения соблюдения общей политики безопасности. Основное внимание уделяется двум темам: персоналу и деловой практике. В качестве нескольких примеров можно привести политику, процедуры найма или проверку биографических данных.
- Технический контроль доступа
Технические, также называемые логическими средствами контроля доступа, - это аппаратные и программные средства контроля доступа, которые используются для создания дополнительного уровня защиты систем контроля доступа или ресурсов от несанкционированного использования. Типичные способы реализации включают такие вещи, как пароли, ключи yubi, смарт-карты, протоколы или брандмауэры. Это очень помогает повысить безопасность API.
- Контроль физического доступа
Это те типы контроля доступа, которые ориентированы на нетехническую сторону вещей. Например, видеокамеры, охранники или замки, которые ограничивают доступ в определенные помещения.

Как осуществляется контроль доступа
Обычно существует три разных типа контроля доступа к файлам -> только для чтения, для чтения и записи и / или для исполнения. Однако они могут варьироваться в зависимости от типа файла, с которым вы имеете дело. Они должны выполняться с помощью системы и стандартной операционной процедуры. Правоприменение должно следовать определенному многоступенчатому протоколу:
- Прежде всего, будет идентификатор субъекта, который определяет, кто запрашивает доступ.
- Следующим шагом будет проверка личности лица, отправляющего запрос, которая выполняется с помощью какой-либо аутентификации.
- После успешной аутентификации запрос необходимо сверить со списком контроля доступа, чтобы убедиться, что у пользователя есть права на доступ ко всему, что он запрашивает, и определить уровень доступа, который ему будет предоставлен.
- Наконец, всегда должны проводиться аудиты для проверки недостатков и / или слабых мест в системе, чтобы никто не мог обойти контроль доступа.
Понимание нарушенного контроля доступа
Чтобы должным образом воспользоваться этой уязвимостью, нам нужно сначала понять, что значит иметь контроль доступа в первую очередь. В конце концов, нам нужно было бы знать, как что-то работает, прежде чем мы сможем его взломать, и то же самое касается контроля доступа. Существуют различные возможности для сервера предоставлять или запрещать права на запрос определенного ресурса. Например, это может быть файл cookie сеанса или токен JWT. Когда пользователь запрашивает доступ к ресурсу, сервер сначала проверяет, может ли пользователь получить доступ к этому ресурсу, прежде чем выполнить его. Это может быть сделано с помощью вызова GET, но также возможны другие HTTP-методы, такие как POST / PUT / DELETE. Проблема возникает, когда мы начинаем понимать, что разработчики должны защищать каждую конечную точку всеми возможными HTTP-методами. Итак, чтобы возникла проблема с неработающим контролем доступа, нам сначала нужно иметь контроль доступа и хорошо его реализовать. Важно понимать, что существуют и другие способы контроля доступа, такие как предоставление контента пользователю только в том случае, если он находится во внутренней сети.

Когда контроль доступа становится уязвимым
Уязвимости появляются, когда пользователь может успешно запросить доступ к чему-то, к чему он обычно не должен иметь доступа. Часто это происходит, когда авторизация не реализована должным образом. Типичным примером может быть определенная конечная точка на веб-сайте, которая выдает ошибку 403 forbidden, которая затем обходится путем добавления заголовка X-Forwarded-For: “127.0.0.1”. Другим примером могут быть старые каталоги с этапа разработки, которые не были удалены или должным образом защищены. Иногда пользователи также хранят свои пароли в виде обычного текста на своем компьютере, теперь, если компьютер будет взломан, злоумышленник сможет получить доступ к другим системам, порталам и т.д. Однако иногда пароли просто слишком слабые и могут быть угаданы, что также приводит к нарушению контроля доступа. Из этой и предыдущей главы мы можем сделать вывод, что возникает проблема с нарушением контроля доступа - OWASP top 10 уязвимостей:
- Для любого метода HTTP, поэтому нам нужно либо запретить нежелательные методы HTTP, либо защитить их
- Либо по идентификатору объекта, либо по идентификатору пользователя
- Либо напрямую связавшись с сервером самостоятельно, либо попросив сервер выполнить действие с нашей стороны, например, нарушить контроль доступа с помощью функции импорта
- Элементы, которые обслуживаются только во внутренней сети, используют заголовок x-forwarded-for только в качестве проверки и ничего больше
- Даже когда UUID используются вместо идентификаторов, если вы предоставляете конечные точки, в которых перечислены эти UUID
Как обнаружить нарушенный контроль доступа
Для их обнаружения следует пересмотреть политики доступа. Если их вообще не существует, то компания, скорее всего, будет уязвима. Эти политики должны обеспечивать контроль доступа вместе с документацией, в которой изложены руководящие принципы и лучшие практики. Анализ кода и проникновение помогают в обнаружении возможных недостатков контроля доступа и должны регулярно проводиться, чтобы обнаружить эти недостатки до того, как это сделает злоумышленник. Также следует провести тщательные аудиты с целью проверки соблюдения действующих политик и мер контроля.
Примеры нарушенного контроля доступа
- CVE-2019-15511
Программное обеспечение GOG Galaxy ниже версии 1.2.60 имеет недостаток BAC, который допускает локальное повышение привилегий. Программное обеспечение работает с системными привилегиями и не ограничивает команды, отправляемые по локальному TCP-соединению. Однако это само по себе не приводит к выполнению команды. Но у приложения есть заранее определенный набор привилегированных команд, которые оно может выполнить, что позволит злоумышленнику завладеть любым файлом. Таким образом, таким образом, злоумышленник может увеличить свои привилегии.
https://nvd.nist.gov/vuln/detail/CVE-2019-15511
- CVE-2019-14273
Если файл с ограниченным доступом встроен в какой-либо контент с помощью ссылок или изображений, то пользователи, которые обычно не имеют к ним доступа, могут сразу просмотреть эти файлы. Это может привести к утечке конфиденциальной информации.