---
# System prepended metadata

title: Модуль №9
tags: [MOE]

---

## Ошибки контроля доступа

## Описание уязвимостей этого типа

Контроль доступа это одно из самых важный мест в алгоритме приложения. Именно эта часть отвечает за разграничение доступа.

Так как особенности клиент-серверного взаимодействия не всегда могут давать возможность приложению понять кто отправляет запрос, для этого контроль доступа базируется на следующих компонентах:

- аутентификаци
- управление сессией
- авторизация

![](https://hackmd.io/_uploads/Syr3vW1j2.png)



### Основные типы и примеры уязвимостей

При обнаружении уязвимости могут быть:

- эскалация привилегий горизонтально
- эскалация привилегий вертикально
- эскалация привилегий в зависимости от контекста действия



## Небезопасный доступ по идентификатору

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

Пользователь угадав номер ресурса другого пользователя может получить к ним доступ.

Проблема здесь состоит:

- предсказуемый идентификатор
- отсутствие контроля доступа по идентификатору


### Последствия эксплуатации

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

Так же может стать доступен интерфейс настройки приложения и тогда система вся перейдет под контроль аткующего.

### Практическое задание

Access control раздел - https://portswigger.net/web-security/all-labs

### Способы защиты


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

Так же должны быть приняты политики запрета доступа к ресурсам приложения, если только это необхоимо работой алгоритма.

Необходимо проводить аудит прав в системе с помощью автотестирования функционала.

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