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

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

Подпишитесь на новости

5G на iPhone с российскими симками снова можно включить на iOS 27.2

Владельцы iPhone в России получили новый способ включить 5G на iOS 27.2 и бета-версии iOS 27.3. Прежний метод через утилиту CarrierSIM на этих версиях перестал работать: он опирался на уязвимость AirLift, которую Apple закрыла. Новая утилита CarrierSelector обходится без нее.

Программу выложил пользователь форума 4PDA. CarrierSelector использует штатный механизм iOS, через который iPhone принимает от доверенного компьютера пакет IPCC с настройками оператора.

Утилита считывает идентификаторы сим-карты, собирает пакет из подписанных Apple файлов и передает его на телефон по USB.

После перезагрузки iOS привязывает пакет к симке и применяет профиль другого оператора. Пользователь выбирает одну или обе сим-карты и нужный профиль, программа один раз перезагружает iPhone. Версии есть для Windows и macOS, на Windows понадобится Apple Devices или iTunes.

Редакция «Код.ру» проверила утилиту и подтвердила, что она работает: в ее тесте подошел профиль датского оператора Telia. На форуме сообщают об успешной установке в сетях билайна и МТС.

 

Лучше всего способ срабатывает на сим-картах, которым раньше не назначали другие профили. В остальных случаях iOS может принять пакет, но оставить старые настройки. Тогда, по словам автора утилиты, первая установка сбрасывает профиль до заводского, а повторная ставит нужный. У тех, кто уже настроил 5G через CarrierSIM, после обновления iOS профиль сохраняется.

 

Способ неофициальный, и Apple может закрыть его в одном из следующих обновлений.

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