6.1 KiB
Access control (ограничение доступа) - приложение, накладывающее ограничения на то, кто или что авторизовано для выбранных действий или запрашиваемых рессурсов. В контексте веб-приложений, ограничение доступа зависит от аутентификации и менеджменте сессий.
- Аутентификация позволяет определить, что пользователь является тем, кем он представляется.
- Менеджер сессий - идентифицирует какие последующие HTTP запросы были сделаны одним и тем же пользователем.
- Ограничение доступа определяет, может ли юзер выполнить действие, которое он захотел выполнить.
Сломанное ограничение доступа часто встречается и представляют из себя критические уязвимости. Разработка и управление системой ограничения доступа это комплексная проблема.
Вертикальный контроль доступа
Вертикальный контроль доступа - механизмы, которые ограничивают доступ к конфиденциальным функциям определенным типам пользователей.
Благодаря вертикальному контролю, разные типы пользователей имеют доступ к различным функциям приложения. К примеру, админ может модифицировать или удалять любой пользовательский аккаунт, в отличие от простого пользователя, который не имеет доступа к этим функциям.
Горизонтальный контроль доступа
Горизонтальный контроль доступа - механизм, ограничивающий доступ к ресурсам конкретным пользователям.
При горизонтальном контроле доступа, разные пользователи имеют доступ к подмножеству рессрсов одного типа. К примеру - приложение банка позволяет пользователю видеть транзакции и оплачивать с помощью их собственного аккаунта, но не с помощью аккаунта других пользователей.
Контексто-зависимый контроль доступа
Контексто-зависимый контроль доступа - механизм, ограничивающий доступ к функционалу и ресурсам, основывающийся состоянии приложения или взаимодействия пользователя с ним.
Контексто-зависимый контроль доступа запрещает пользователю выполнять действия в неправильном порядке. К примеру - пользователь не может менять состав заказа после его оплаты.
Примеры сломанного контроля доступа
Эскалация вертикального контроля доступа
Если пользователь может повысить доступ к функционалу, к которому у него не должно быть доступа, то это эскалация вертикального контроля доступа. К примеру, если обычный пользователь может получить доступ к странице администратора, где он может удалять аккаунты других пользователей, это и есть эскалация.
Незащищенный функционал
В большинстве случаев, эскалация привелегий вертикального контроля доступа происходит, когда сервис не обеспечивает соблюдение какой-либо защиты для чуствительного функционала. например, ссылки могут быть связаны со страницей приветствия администратора, но не со страницы приветствия пользователя.
Суть в том, что не защищают админскую панель, а просто прячат robots.txt Или напрямую в тексте скрипта приложения.
Горизонтальная эскалация привеленгий
Горизонтальная эскалация происходит, если пользователь получает доступ к ресурсам, которые предназначенны для другого пользователя, вместо собственных ресурсов такого же типа.
Пример: если атакующий может получить доступ к записям других пользователей, словно это его записи - это горизонтальная эсказация.
https://insecure-website.com/myaccount?id=123
если такующий изменяет id и получает доступ к аккаунту другого пользователя - это и есть эскалация. (В моем техникуме, на платформе procolledge была горизонтальная эскалация привелегий.)