СреднийВеб-рискНужна ручная проверкаРиски веб-приложенийВсе материалы о Веб-приложения

Service Worker и приватный кеш: данные кабинета после выхода

Как не оставить ответы личного кабинета в офлайн-кеше PWA после выхода пользователя или смены аккаунта.

Коротко о главном

Чем опасно
Просмотр данных предыдущего аккаунта на общем устройстве.
С чего начать защиту
Используйте явный список публичных ресурсов для офлайн-кеша; исключите кабинет, токены и приватные API.
Как подтвердить
Нужны ручной аудит и проверка реализации. Отсутствие находок во внешнем скане не подтверждает безопасность.
Посмотреть условия проверки
В этой статье
  1. Что это за уязвимость
  2. Когда возникает риск
  3. Возможные последствия
  4. Как защитить приложение
  5. Как безопасно проверить исправление
  6. Оценка риска и границы сканирования
Продукт
Веб-приложения
Оценка риска
Уровень зависит от конфигурации

Как проверить и что учитывать

Нужна ручная проверка

Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Не делайте вывод о наличии уязвимости только по одному внешнему признаку: подтвердите результат в настройках и версии компонента.

Что нужно для подтверждения

На стенде войдите под тестовым аккаунтом A, откройте документ с синтетическими данными, выйдите и переключитесь на B в том же профиле браузера. Проверьте офлайн-режим, возврат назад и другие вкладки. В DevTools изучите CacheStorage: приватный ответ не должен сохраняться или возвращаться после завершения сессии. Повторите проверку после обновления Service Worker.

Ограничения вывода

  • Внешний ответ не раскрывает все роли, обработчики и настройки внутренних компонентов.
  • Используйте только свои системы или письменное разрешение владельца; нагрузочные проверки согласуйте отдельно.

Что это за уязвимость

Service Worker может перехватывать запросы и возвращать сохранённые ответы без обращения к серверу. Серверная проверка сессии не защищает уже сохранённую копию. Если обработчик кеширует все успешные ответы, документы кабинета могут остаться доступными в том же профиле браузера после выхода.

Когда возникает риск

Риск возникает при кешировании персональных API-ответов по одному URL без учёта жизненного цикла сессии. Особенно важны общие устройства и переход между аккаунтами. Само наличие Service Worker не является уязвимостью: публичные ассеты можно кешировать, а приватные данные требуют отдельной модели хранения.

Возможные последствия

Как не оставить ответы личного кабинета в офлайн-кеше PWA после выхода пользователя или смены аккаунта.

  • Просмотр данных предыдущего аккаунта на общем устройстве.
  • Отображение устаревших прав и персональных документов офлайн.

Как защитить приложение

Исправляйте причину в обработчике, а не только внешний симптом.

  • Используйте явный список публичных ресурсов для офлайн-кеша; исключите кабинет, токены и приватные API.
  • Очищайте пользовательские кеши при выходе и смене аккаунта, учитывая открытые вкладки.
  • Не считайте Cache-Control достаточной защитой: программная запись в CacheStorage должна проверяться отдельно.
  • При обновлении обработчика удаляйте устаревшие кеши и проверяйте поведение уже контролируемых вкладок.

Как безопасно проверить исправление

На стенде войдите под тестовым аккаунтом A, откройте документ с синтетическими данными, выйдите и переключитесь на B в том же профиле браузера. Проверьте офлайн-режим, возврат назад и другие вкладки. В DevTools изучите CacheStorage: приватный ответ не должен сохраняться или возвращаться после завершения сессии. Повторите проверку после обновления Service Worker.

Оценка риска и границы сканирования

Средний уровень — ориентировочная редакционная оценка, не CVSS подтверждённой находки. Для конкретной системы приоритет зависит от доступных данных, полномочий и компенсирующих мер; последствия могут быть значительно серьёзнее.

Отсутствие находки во внешнем скане не доказывает безопасность реализации. Проверяйте сценарии после входа, альтернативные маршруты и внутренние сервисы.

Как проходит проверка

Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Автоматический результат показывает внешний признак риска и требует проверки специалистом с учётом конкретной конфигурации.

Проверить другие внешние риски

Что делать после обнаружения

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

Частые вопросы

Что означает риск «Service Worker и приватный кеш»?

Как не оставить ответы личного кабинета в офлайн-кеше PWA после выхода пользователя или смены аккаунта.

Можно ли подтвердить проблему только внешней проверкой?

Для подтверждения нужны анализ реализации и проверки на согласованном тестовом контуре. Публикация не означает автоматическое обнаружение этого сценария FindRisk. Итог нужно сопоставить с конфигурацией, версиями и правами доступа на вашем сайте.

Что сделать в первую очередь?

Используйте явный список публичных ресурсов для офлайн-кеша; исключите кабинет, токены и приватные API.

Источники

Больше материалов о рисках и защите сайтов — в каталоге уязвимостей.