Обнаруженная еще 18 лет назад уязвимость, получившая название 0.0.0.0 Day, позволяет вредоносным сайтам обходить защиту браузеров Google Chrome, Mozilla Firefox и Apple Safari и взаимодействовать с сервисами в локальной сети. Проблема затрагивает только устройства под управлением Linux и macOS, но не работает в Windows.
Несмотря на то, что изначальная уязвимость была обнаружена в далеком 2008 году, она до сих пор не устранена в браузерах Chrome, Firefox и Safari, хотя разработчики всех трех компаний уже признали наличие проблем и заверили, что работают над их устранением.
Внимание к 0.0.0.0 Day привлекли исследователи из компании Oligo Security. Они подчеркивают, что риск в данном случае вовсе не теоретический, и несколько хак-групп уже используют проблему в своих цепочках атак.
0.0.0.0 Day связана с несогласованностью механизмов безопасности в разных браузерах и отсутствием стандартизации, что позволяет сайтам взаимодействовать со службами в локальной сети, используя «wildcard» IP-адрес 0.0.0.0.
Как правило, 0.0.0.0 олицетворяет все IP-адреса на локальной машине или все сетевые интерфейсы на хосте. Он может использоваться в качестве адреса-заменителя в запросах DHCP или интерпретироваться как localhost (127.0.0.1) при работе в локальной сети.
Вредоносные сайты могут отправлять HTTP-запросы на 0.0.0.0, нацеленные на службу, работающую на локальной машине жертвы. Из-за отсутствия комплексной защиты эти запросы часто действительно передаются службе и обрабатываются. Как поясняют эксперты, существующие механизмы защиты, включая Cross-Origin Resource Sharing (CORS) и Private Network Access (PNA), не способны остановить такую атаку.
По умолчанию браузеры не позволяют сайтам отправлять запросы на другие сайты и использовать полученную в ответ информацию. Это сделано для того, чтобы вредоносные ресурсы не могли получить доступ к другим URL-адресам в браузере пользователя, на которых тот может быть аутентифицирован (например, к порталу онлайн-банкинга, почтовым серверам и так далее).
Однако в браузерах существует технология Cross-Origin Resource Sharing (CORS), позволяющая сайтам получать доступ к данным с других сайтов, если это явно разрешено.
«CORS — это замечательно, это делает интернет намного безопаснее. CORS предотвращает попадание ответов к злоумышленникам, поэтому злоумышленники не могут прочитать данные при отправке недействительных запросов. При отправке запроса, если в ответе отсутствуют заголовки CORS, Javascript-код атакующих не сможет прочитать содержимое ответа. Но непрозрачные запросы могут быть отправлены в режиме no-cors и успешно дойдут до сервера, особенно если нас не интересуют ответы», — пишут специалисты Oligo Security.
То есть когда цель угрожающего злоумышленника заключается в том, чтобы просто добраться до HTTP-эндпоинта, запущенного на локальном устройстве и подходящего для изменения настроек или выполнения какой-то задачи, то output вообще не нужен.
Исследователи объясняют, что защита Private Network Access (PNA) работает немного иначе, чем CORS, блокируя любые запросы, которые пытаются подключиться к IP-адресам, считающимся локальными и приватными. Однако анализ показал, что IP-адрес 0.0.0.0 не включен в список запрещенных адресов PNA (как, например, 127.0.0.1). То есть когда запрос в режиме no-cors отправляется на этот специальный адрес, он может обойти защиту PNA и подключиться к URL веб-сервера, запущенного на 127.0.0.1.
В своем отчете специалисты рассказывают сразу о нескольких случаях эксплуатации проблемы 0.0.0.0 Day. В первом случае речь идет о кампании ShadowRay, о которой аналитики Oligo Security уже писали в марте прошлого года, Эта кампания нацелена уязвимость в опенсорсном ИИ-фреймворке Ray.
Атака начинается с того, что жертва переходит по ссылке, полученной по почте или найденной на вредоносном сайте. По ссылке запускается JavaScript для отправки HTTP-запроса на http://0.0.0.0[.]0:8265, обычно используемого Ray. В итоге эти запросы достигают локального кластера Ray и могут привести к выполнению произвольного кода, развертыванию реверс-шеллов и изменению конфигурации.
Во втором случае 0.0.0.0 Day используется в кампании, нацеленной на Selenium Grid и обнаруженной специалистами Wiz в прошлом месяце. В этом случае злоумышленники используют JavaScript на публичном домене для отправки запросов на http://0.0.0[ .]0:4444. Эти запросы направляются на серверы Selenium Grid, что позволяет хакерам выполнить код или произвести разведку.
Кроме того, в октябре 2023 года Oligo Security сообщала об уязвимости ShellTorch, связанной с тем, что веб-панель TorchServe по умолчанию привязана к IP-адресу 0.0.0.0 вместо localhost, что открывало ее для вредоносных запросов.
Исследователи предупреждают, что в последнее время наблюдается стремительный рост числа сайтов, взаимодействующих с 0.0.0.0: недавно их количество превысило 100 000.
Разработчики браузеров уже отреагировали на публикацию отчета исследователей.
В Google Chrome сообщили, что заблокируют доступ к 0.0.0.0, но развертывание исправления будет постепенным, начиная с версии 128 и заканчивая версией 133.
В Mozilla Firefox PNA не применяется, но это один из приоритетов разработчиков. Пока PNA не будет реализована, запущена работа над временным исправлением, но дата его выпуска неизвестна.
Apple внедрила дополнительные проверки для IP-адресов в Safari с помощью изменений в WebKit, и доступ к 0.0.0.0 будет заблокирован в грядущей версии 18, которую представят вместе с macOS Sequoia.
До момента выхода исправлений в Oligo Security рекомендуют разработчикам приложений использовать следующие меры безопасности:
- внедрять заголовки PNA;
- проверять заголовки HOST для защиты от атак типа DNS rebinding.
- не доверять даже localhost и всегда использовать авторизацию;
- по возможности использовать HTTPS;
- внедрять CSRF-токены, даже для локальных приложений.