Найдена уязвимость удаленного выполнения кода в CouchDB

Найдена уязвимость удаленного выполнения кода в CouchDB

Найдена уязвимость удаленного выполнения кода в CouchDB

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

CouchDB написана на языке Erlang, но позволяет указывать сценарии проверки документов в Javascript. Эти сценарии автоматически оцениваются при создании или обновлении документа. CouchDB управляет учетными записями пользователей через специальную базу данных — _users.

Когда вы создаете или изменяете пользователя в базе данных CouchDB, сервер проверяет изменение с помощью функции Javascript validate_doc_update, чтобы удостовериться, что это не попытка сделать себя администратором, например.

«Проблема в том, что существует расхождение между JSON-парсером Javascript (используемым в скриптах проверки) и тем, что используется внутри CouchDB, называемым jiffy», — пишет эксперт, обнаруживший брешь.

Далее специалист привод куски кода для демонстрации этой разницы:

Erlang:

> jiffy:decode("{\"foo\":\"bar\", \"foo\":\"baz\"}"). 
{[{<<"foo">>,<<"bar">>},{<<"foo">>,<<"baz">>}]}

Javascript:

> JSON.parse("{\"foo\":\"bar\", \"foo\": \"baz\"}")
{foo: "baz"}

Для данного ключа парсер Erlang сохранит оба значения, а вот Javascript-парсер сохранит только последнее, что позволит обойти все соответствующие проверки ввода и создать пользователя с правами администратора.

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

Сотни бесплатных VPN для Chrome сливали трафик в один прокси

Исследователи из Socket обнаружили в Chrome Web Store масштабную сеть из 737 расширений, выдававших себя за бесплатные VPN. За операцией стояли как минимум 40 аккаунтов разработчиков, а 274 дополнения копировали названия 66 известных сервисов и брендов.

В списке чужих масок оказались Proton VPN, NordVPN, Surfshark, ExpressVPN, AmneziaVPN, AntiZapret и даже Cloudflare 1.1.1.1.

Кампания была ориентирована преимущественно на русскоязычных пользователей, желающих открыть Instagram (принадлежит Meta, признанной экстремистской и запрещённой в России), ChatGPT, YouTube и другие заблокированные ресурсы.

После нажатия кнопки Connect расширения направляли практически весь браузерный трафик через фиксированный SOCKS5-прокси на порте 1082. Исключение делалось только для локальных адресов. Никакого раздельного туннелирования: оператор получал положение посредника между пользователем и интернетом.

Такая схема позволяет видеть IP-адреса, посещаемые узлы и метаданные TLS SNI, а незашифрованный HTTP-трафик — читать полностью, включая отправленные пароли.

 

При этом Socket не утверждает, что оператор действительно сохранял, изменял или похищал данные. Доказан другой неприятный факт: люди искали приватность, а незаметно передавали свои сеансы неизвестному посреднику.

Следы в коде и инфраструктуре связывают расширения с сервисом Myxa VPN, или «Муха VPN». Общих операторов выдали домены, идентификаторы аналитики, строки поставщика и даже пути сборки с названием myxa-work.

 

Некоторые дополнения получали удалённые конфигурации уже после проверки магазина. Другие маскировали обращения к инфраструктуре через DNS-over-HTTPS. Платные серверы тоже оказались с приветом: все 200 проверенных адресов в пяти странах не разрешались через DNS.

На момент сбора данных 516 расширений ещё оставались в магазине, хотя Google уже удалила 221. Пользователям советуют снести подозрительные VPN-дополнения, проверить настройки прокси и сменить пароли, вводившиеся на HTTP-страницах.

RSS: Новости на портале Anti-Malware.ru