## Ошибки контроля доступа ## Описание уязвимостей этого типа Контроль доступа это одно из самых важный мест в алгоритме приложения. Именно эта часть отвечает за разграничение доступа. Так как особенности клиент-серверного взаимодействия не всегда могут давать возможность приложению понять кто отправляет запрос, для этого контроль доступа базируется на следующих компонентах: - аутентификаци - управление сессией - авторизация ![](https://hackmd.io/_uploads/Syr3vW1j2.png) ### Основные типы и примеры уязвимостей При обнаружении уязвимости могут быть: - эскалация привилегий горизонтально - эскалация привилегий вертикально - эскалация привилегий в зависимости от контекста действия ## Небезопасный доступ по идентификатору Чаще всего результатом использования предсказуемых идентификаторов в приложении приводит к горизонтальной эскалации привилегий. Пользователь угадав номер ресурса другого пользователя может получить к ним доступ. Проблема здесь состоит: - предсказуемый идентификатор - отсутствие контроля доступа по идентификатору ### Последствия эксплуатации Атакующий получает возможность изменять, обозревать и копировать информацию, которая будет принадлежать другим пользователям системы. Так же может стать доступен интерфейс настройки приложения и тогда система вся перейдет под контроль аткующего. ### Практическое задание Access control раздел - https://portswigger.net/web-security/all-labs ### Способы защиты Все уязвимости достаточно просто можно избежать. Самый главный принцип - постановка требований к программному обеспечению должна содержать пункты о необходимости реализации разграничения доступа ко всем объектами прилоежния. Так же должны быть приняты политики запрета доступа к ресурсам приложения, если только это необхоимо работой алгоритма. Необходимо проводить аудит прав в системе с помощью автотестирования функционала. Стоит ввести правило для разработки любого функционала - что бы не работало в приложении, нужно обязательно проверить кто запускает функцию.