Защита данных, Кибербезопасность

Уязвимости REST API. Ст.1 «Broken User uthentication»

Время прочтения: 3 мин.

В современном мире подавляющее большинство онлайн систем передают конфиденциальную информацию пользователей (например: медицинскую, финансовую и персональную), используя API. Согласно Comnews, на май 2020 года, подавляющее большинство систем имеют критические уязвимости, позволяющие злоумышленникам получить несанкционированный доступ к конфиденциальной информации компаний, пользователе и клиентов и совершать различные действия под видом аутентифицированного пользователя. Исходя из вышесказанного, всем сотрудникам, участвующим в проверках информационных систем, требуется знать о существующих брешах в организации доступа к API различных сервисов и систем, а также знать как с ними можно и нужно бороться.

По данным сообщества OWASP (открытый проект обеспечения безопасности веб-приложений), существует несколько «особо опасных» уязвимостей, которые могут быть допущены при проектировании и разработке REST API. Одна из таких уязвимостей это нарушенная аутентификация пользователей (Broken User Authentication). Далее разберем данную уязвимость более подробно, а также рассмотрим самые распространенные методы борьбы с ней.

Broken User Authentication — уязвимость, при которой злоумышленник, не проходя процедуру проверки подлинности, либо «обойдя» ее, может получить доступ к информации передаваемой через API. Далее перечислим основное методы борьбы с данной уязвимостью.

API key — уникальный ключ, который передается клиентом в теле самого запроса к серверу. На сервере этот ключ проверяется на валидность и в случае успеха отправляет ответ клиенту. Данный метод позволяет легко защититься от неправомерного доступа к API, а также отслеживать лимиты активности.

Пример API key:

https://api-maps.yandex.ru/2.1/?lang=ru_RU HYPERLINK "https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=df78s6dfsdgs8d7f87sdf68sdfsdf"& HYPERLINK "https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=df78s6dfsdgs8d7f87sdf68sdfsdf"apikey= HYPERLINK "https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=df78s6dfsdgs8d7f87sdf68sdfsdf"df78s6dfsdgs8d7f87sdf68sdfsdf

Basic Authentication – данный метод используется для аутентификации пользователя, по двум параметрам, например: логину и паролю. Данные при этом методе передаются не так явно, как в предыдущем методе. Они передаются в закодированном виде (Base64) в параметре Authorization, в заголовке HTTP запроса.

Пример Basic Authentication:

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

Cookie-Based Authentication — в этом методе для аутентификации пользователя используются cookie. При успешной авторизации в системе сервер направляет клиенту, в заголовке параметр Set-Cookie, имя и значение cookie.

Пример параметра Set-Cookie отправляемого сервером:

Set-Cookie: sessionid=38afes7a8; HttpOnly; Path=/

Далее, при обращении к API, клиент автоматически передает и Cookie в заголовке HTTP запроса.

Пример Cookie-Based Authentication:

Cookie: sessionid=38afes7a8

Token-Based Authentication — этот метод использует, выданный сервером токен, для предоставления доступа аутентифицированному пользователю. В дальнейшем, обращаясь к API, клиент передает данный токен в заголовках самого запроса, по аналогии с методом Basic Authentication. Сервер же, в свою очередь проверяет, полученный от клиента токен, на соответствие определенным требованиям. На данный момент, этот метод считается наиболее надежным.

Схема работы метода Token-Based Authentication:

Пример Token-Based Authentication:

Authorization: Bearer df78s6dfsdgs8d7f87sdf68sdfsdf

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

Заключение

Мы разобрали одну из самых опасных уязвимостей REST API и несколько методов борьбы с ней

Как мы видим, не стоит пренебрегать безопасность REST API. Пускай этот мощный механизм взаимодействия человека и машины зачастую скрыт от обычного пользователя, но он может стать причиной многих проблем. Самая большая из которых, на мой взгляд это утечка данных по операциям и персональных данных пользователей, сотрудников и клиентов.

Ссылки:

Источник-1, источник-2

Советуем почитать