Privilege Escalation (повышение привилегий)
Получение пользователем прав выше положенных — например обычным юзером прав администратора.
Сигнатура
Privilege EscalationПовышение привилегий — это получение прав, которые пользователю не положены. Горизонтальное — доступ к данным равного пользователя; вертикальное — получение прав администратора. Часто возникает из-за доверия к полям запроса, задающим роль.
Как защититься: никогда не принимайте роль или флаг прав от клиента, храните и проверяйте права только на сервере, применяйте принцип наименьших привилегий, ведите аудит изменений ролей.
# Опасно: роль приходит из запроса
def update_profile(data):
user.role = data.get("role") # клиент пришлёт role=admin
# Безопасно: роль меняется только проверенным админом
def set_role(actor, target, role):
if not actor.is_admin:
raise Forbidden("Только администратор")
target.role = role