Identy Spoofing
Суть:
Кража ключей доступа какой-либо сущности и возможность представится её перед сервером.
Атакующий получает все права и возможность указанной сущности, доступ ко всем данным.
Что делать:
Нужно максимально ограничить права каждой из сущности строго той областью, что ей необходимы.
Так, что даже при получении полного доступа к правам устройства злоумышленником, последствия были минимальны.
Вариант1:
Запретить передачу ключей авторизации по ненадежно зашифрованным каналам, например HTTPs с проверкой сертификатов.
Достоинства: крайне просто поддержать такой способ со стороны клиента и сервера.
Недостатки: больше возможностей что бы исполнить такую атаку.
Вариант2:
Минимизировать количество передачи ключей авторизации:
Можно реализовать собственный вариант ключами авторизации, при котором ключ доставляется на устройство всего один раз и дальше вообще не передается на сервер.
Например через клиентские HTTPs сертификаты либо собственный способ:
Устройство будет подписывать свои запросы своим ключем авторизации.
Отправляющий делает подпись запроса как функцию от (url+заголовки+тело+время отправки+еще нужные данные) или вообще шифрует сообщение своим ключем, сервер расшифровывает его соответствующим указанному устройству ключем и убеждается в отправителе, затем исполняет запрос.
Достоинства: В таком случае для проворачивания атаки нужно будет либо перехватить ключ на начальном этапе, либо иметь доступ к памяти устройства физически или через RCE уязвимости.
Недостатки: сложнее реализация со устройство и сервера, больше нагрузка на сервер и устройство.
Устройства
Возможно читать/изменять данные из KV.
Возможность писать данные в очереди (например показания датчиков).
Невозможность читать старые из очередей (истории показаний датчиков).
Пользователя
Полный доступ ко всем данным пользователя и его устройств и гейтвеев в пределах сервиса, в котором выполнена аутентификация.
Если аутентификация выполнена в личном кабинете платформы - права доступа к данным всех сервисов пользователя.
Некоторые критические операции требуют только "свежего" ключа доступа.
Сервиса
Доступ ко всем данным сервиса, всех его устройств, мониторингу статистики и прочему.
Что нужно сделать:
Аутентификация сервиса должна так же проходить по сертификату или ассиметричному ключу (цифровая подпись или шифрование), который не передается в запросе. Выбор способа аутентификации должен быть в настройках разработчика.
-