# V5617. OWASP. Assigning potentially negative or large value as timeout of HTTP session can lead to excessive session expiration time.

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

Ошибки, связанные с установкой некорректного срока действительности сессии, относятся к следующим категориям OWASP Top 10 Application Security Risks:

- A2:2017-Broken Authentication в списке 2017 года;
- A7:2021-Identification and Authentication Failures в списке 2021 года.

Первый пример:

    public void ConfigureSession(HttpContext current, ....)
    {
      HttpSessionState session = current.Session;
      session.Timeout = -1;
      ....
    }

Значение, присваиваемое свойству 'HttpSessionState.Timeout', указывает срок действительности сессии в минутах.

Присваивание свойству 'Timeout' отрицательного значения приводит к установке потенциально бесконечного срока действительности сессии. Если пользователь не выполнил корректный выход из системы, то его данные будут в опасности. К примеру, следующий пользователь этой системы может получить доступ к данным предыдущего, потому что сессия последней аутентификации на сервере ещё активна.

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

Второй пример:

    public void ConfigureSession(HttpContext current, ....)
    {
      HttpSessionState session = current.Session;
      session.Timeout = 120;
      ....
    }

Опасность и эксплуатация уязвимости второго примера аналогична первому.

Пороговым значением, когда анализатор считает код корректным, является срок действия менее двух часов:

    public void ConfigureSession(HttpContext current, ....)
    {
      HttpSessionState session = current.Session;
      session.Timeout = 30;
      ....
    }

Большинство библиотек и фреймворков по умолчанию предлагают срок не более чем 30 минут.

Предупреждение для слишком большого присваиваемого значения имеет уровень Medium, а предупреждение о бесконечном сроке – уровень High.

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.).

Данная диагностика классифицируется как:

CWE-613 OWASP-3.3.2