Как оценить необходимые привилегии?

Вопрос или проблема

Как оценить необходимые привилегии?

Я рассчитываю балл CVSS для проблемы и сомневаюсь по поводу необходимого уровня привилегий (PR).

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

Каков в этом случае будет значение PR? Я считаю его низким, так как любой, кто может получить доступ к рабочей станции, сможет взять токен. Кто-то сказал мне, что он должен быть высоким, потому что пользователь должен быть авторизован. Так какой из вариантов правильный?

None (N)    Нападающий не авторизован до атаки и, следовательно, не требует доступа к настройкам или файлам уязвимой системы для выполнения атаки.
Low (L)     Нападающий требует привилегий, которые предоставляют базовые возможности пользователя, которые обычно могут затрагивать только настройки и файлы, принадлежащие пользователю. В качестве альтернативы, нападающий с низкими привилегиями имеет возможность доступа только к незащищенным ресурсам.
High (H)    Нападающий требует привилегий, которые предоставляют значительный (например, административный) контроль над уязвимым компонентом, позволяя доступ к компонентным настройкам и файлам.

Согласно спецификации CVSS, метрика необходимых привилегий определяется следующим образом:

  • None: Нападающий не авторизован до атаки и, следовательно, не требует доступа к настройкам или файлам уязвимой системы для выполнения атаки.
  • Low: Нападающий требует привилегий, которые предоставляют базовые возможности пользователя, которые обычно могут затрагивать только настройки и файлы, принадлежащие пользователю. В качестве альтернативы, нападающий с низкими привилегиями имеет возможность доступа только к незащищенным ресурсам.
  • High: Нападающий требует привилегий, которые предоставляют значительный (например, административный) контроль над уязвимым компонентом, позволяя доступ к компонентным настройкам и файлам.

Что нужно уточнить, так это какая именно уязвимость у вас обнаружена и в каком ее объеме. Не очень ясно, относится ли рабочая станция к вашей уязвимости или нет.

Является ли уязвимость только проблемой экспозиции функции отладки, которая позволяет экспортировать JWT? Или она касается потенциального доступа к конфиденциальной информации, находящейся на рабочей станции?

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

Таким образом, ваше обоснование становится неуместным, потому что вы упоминаете рабочую станцию. Доступ к рабочей станции не имеет значения в этом случае.

Метрика PR интересуется только привилегиями, необходимыми нападающему.

В вашем случае нападающему нужно быть залогиненным как пользователь вашего приложения. Так что мы можем исключить уровень None.

Единственный вопрос — это низкий или высокий уровень. Исходя из вашего контекста, кажется, что любой аутентифицированный пользователь может экспортировать токен, так что уровень метрики будет низким (с аргументацией, что не нужно быть администратором приложения для получения токена).

И просто для полноты, следующее обоснование:

Кто-то сказал мне, что он должен быть высоким, потому что пользователь должен быть залогинен.

является неверным. Снова же, в спецификации различие между низким и высоким уровнями связано с разницей в привилегиях. Наличие авторизации просто повышает уровень с None до Low, но не до High.

Ответ или решение

Чтобы оценить уровень необходимых привилегий (PR) в контексте CVSS (Common Vulnerability Scoring System), важно четко понимать, какие права требуются злоумышленнику для того, чтобы воспользоваться уязвимостью.

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

Давайте разберем конкретные категории уровня привилегий:

  1. None (N) – Злоумышленник неавторизован до атаки и не требует доступа к настройкам или файлам уязвимой системы. В вашем случае это не подходит, поскольку злоумышленник должен быть авторизован в приложении, чтобы получить токен.

  2. Low (L) – Злоумышленник требует привилегий, которые предоставляют базовые пользовательские возможности, позволяющие воздействовать только на настройки и файлы, принадлежащие пользователю, или имеющий доступ к незащищенным ресурсам. Это целиком соответствует вашей ситуации, так как любой авторизованный пользователь приложения может получить доступ к токену без необходимости быть администратором.

  3. High (H) – Злоумышленник требует привилегий, которые дают значительный контроль (например, административные) над уязвимым компонентом, позволяющие доступ к всем компонентам, настройкам и файлам. В вашем случае, чтобы получить токен, полномочия администратора не требуются, достаточно быть просто авторизованным пользователем.

Таким образом, правильный уровень привилегий в вашем сценарии будет:

  • Low (L), поскольку любой аутентифицированный пользователь имеет возможность извлечь токен, но ему не нужно иметь продвинутые права или администраторский доступ.

Оппонентская точка зрения, сообщающая о том, что это должно быть высокие привилегии только потому, что пользователь должен быть авторизован, является неверной. В соответствии с CVSS уровни привилегий подразумевают, что если требуется авторизация, это поднимает уровень с None до Low, но не до High, так как нет необходимости в дополнительных привилегиях для выполнения атаки.

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

Оцените материал
Добавить комментарий

Капча загружается...