ОБНОВЛЕНИЕ
В конце концов мы встретились с некоторыми программистами из команды Acunetix, и они поняли, что в их коде может быть несколько ошибок, которые вызывают это отображаться при сканировании как более серьезная проблема, чем она может быть на самом деле. По общему мнению, пересмотрите результаты сканирования и используйте готовую генерацию идентификатора сеанса ASP.NET, так как это должно быть достаточно безопасно для нашего сайта.
@Vasile Bujac, поскольку ваш ответ был единственным и упомянул об использовании стандартного решения ASP.NET, я воспринял это как ответ, но спасибо всем за вашу помощь.
Мы используем сканер Retina от Acunetix на работе для сканирования безопасности наших приложений. Это говорит нам о том, что наши идентификаторы сеанса недостаточно случайны и слишком предсказуемы. Я не совсем уверен, как ASP.NET генерирует идентификатор сеанса по умолчанию (я все равно думал, что это GUID?), Но я пошел дальше и реализовал метод расширения класса SessionIDManager и переопределения методов CreateSessionID и Validate для использования Guid как объясняется в этой статье MSDN .
Хотя это делает его немного более случайным, он все же не дает «желаемого» эффекта, согласно Acunetix. Я даже добавил свойство refreshrateExpiredSessionId = "true"
в web.config, и это не повлияло. У меня такое чувство, что мне может потребоваться преднамеренно вызвать Session.Abandon ()
, чтобы полностью очистить сеанс и получить новый идентификатор. Проблема в том, что я должен вызвать его прямо перед тем, как пользователь войдет в систему, поскольку это единственный надежный способ узнать, что пользователь начинает новый сеанс. Таким образом, я не мог ничего установить в сеансе, пока следующая страница не будет загружена так, как работает метод Abandon
, и это будет означать промежуточную страницу, которая не очень идеальна, но поможет.
Кто-нибудь когда-нибудь сталкивался с этим или успешно реализовывал исправление?
Кроме того, просто для справки, мы не используем аутентификацию членства / форм, мы просто создаем новый пользовательский класс, когда кто-то входит в систему и сохраняет его в сеансе для дальнейшего использования.
Отчет Acunetix:
Описание: Токены сеанса, которые демонстрируют низкую энтропию («случайность»), часто подвержены атакам прогнозирования. . Небезопасные токены могут быть вызваны неадекватным генератором псевдослучайных чисел, значениями на основе времени, статическими значениями или значениями, основанными на атрибутах пользователя (имя пользователя или идентификатор пользователя). Это означает, что злоумышленник сможет угадать действительный токен сеанса после наблюдения за приложением в течение короткого периода времени и сбора созданных им токенов сеанса. Если злоумышленник определит допустимый токен сеанса для другого пользователя, то можно будет просмотреть, изменить или удалить данные произвольного пользователя без необходимости угадывать имя пользователя или пароль жертвы. Следовательно, возможность вывести действительные токены сеанса позволяет злоумышленнику обходить страницы входа в систему и устранять необходимость подбора учетных записей. Кроме того, статические токены могут позволить злоумышленнику нацеливаться на пользователей, даже если жертва в настоящее время не вошла в приложение. Это увеличивает пул жертв, на которые может нацеливаться злоумышленник.
Токены сеанса должны создаваться с помощью надежного генератора случайных чисел и собираться из большого пула чисел. Например, функции rand () операционной системы обычно бывает достаточно, если она может выдавать 32-битные значения, которые являются статистически однородным распределением. Плохие токены сеанса являются инкрементными, зависят от идентификатора учетной записи пользователя, используют только временные метки или имеют другую сильно детерминированную информацию. Другие методы защиты токенов сеанса - всегда передавать их через SSL, автоматически истекать токен через определенный период времени и явно истекать токен всякий раз, когда пользователь выходит из приложения.
Рекомендации : Если значения сеанса демонстрируют сильную случайность, но выбираются из небольшого пула значений, тогда у злоумышленника больше шансов просто угадать действительный токен. Управление сеансом веб-приложения можно улучшить, реализовав несколько дополнительных методов: