Найдена уязвимость удаленного выполнения кода в 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-парсер сохранит только последнее, что позволит обойти все соответствующие проверки ввода и создать пользователя с правами администратора.

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

В популярном WordPress-плагине для редиректов пять лет скрывался бэкдор

В плагине Quick Page/Post Redirect для WordPress обнаружили скрытый бэкдор. Плагин установлен более чем на 70 тыс. сайтов и используется для настройки редиректов на страницах, записях и пользовательских URL.

Проблему нашёл основатель хостинг-провайдера Anchor Остин Гиндер после того, как на его инфраструктуре сработали предупреждения сразу на 12 заражённых сайтах. WordPress.org временно убрал плагин из каталога на время проверки.

По данным исследователя, в официальных версиях 5.2.1 и 5.2.2, выпущенных в 2020-2021 годах, был скрытый механизм самообновления. Он обращался к стороннему домену anadnet[.]com и позволял подгружать код в обход контроля WordPress.org.

Позже этот механизм убрали из следующих версий, но часть сайтов успела получить подменённую сборку 5.2.3 с внешнего сервера. Именно она добавляла пассивный бэкдор. Он срабатывал только для пользователей, которые не вошли в админку, чтобы владельцы сайтов не замечали подозрительную активность.

По оценке Гиндера, механизм использовали для скрытого SEO-спама: заражённые сайты фактически сдавали свои позиции в поисковой выдаче тем, кто управлял этой инфраструктурой.

Главная опасность при этом не только в самом SEO-спаме. Встроенный механизм обновления теоретически позволял выполнить произвольный код на сайте по команде. Сейчас он, по словам исследователя, неактивен, потому что управляющий поддомен не резолвится, но сам домен остаётся действующим.

Пользователям Quick Page/Post Redirect рекомендуют удалить плагин и заменить его чистой версией 5.2.4 из каталога WordPress.org, когда она снова станет доступна после проверки. Владельцам сайтов также стоит проверить следы подозрительных обновлений и сравнить хеши установленных файлов с официальными версиями.

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