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

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

Cloud.ru открыл код фильтра, который не отдаст пароли и ПДн нейросети

Cloud.ru открыл исходный код Guardrails Filter — инструмента, который не даёт пользователям случайно скормить языковой модели персональные данные, пароли, API-ключи и другие корпоративные секреты. Компании смогут бесплатно развернуть сервис в собственной инфраструктуре и подключить его к моделям любых провайдеров.

Guardrails Filter встаёт между корпоративным приложением и нейросетью. Перед отправкой запроса он ищет конфиденциальную информацию и заменяет её синтетическими значениями.

Когда модель формирует ответ, сервис возвращает исходные данные на место. В итоге пользователь получает нормальный результат, а условный «пароль_от_прода» не отправляется неизвестно куда вместе с просьбой составить отчёт.

Инструмент уже применяется в среде AI Factory для защиты запросов к сервису Foundation Models, а также в клиентских и внутренних проектах Cloud.ru. Открытая версия не привязана к облачной платформе компании и может работать внутри закрытого ИТ-контура.

Пользователям доступны готовые правила обнаружения конфиденциальной информации. Можно создавать и собственные — например, для номеров договоров, идентификаторов клиентов или кодовых названий проектов. Управление осуществляется через личный кабинет: там разрешается настраивать и тестировать правила, просматривать журналы и отслеживать предупреждения.

В Guardrails Filter также есть Ghost Mode. Он позволяет проверить, какие данные сервис стал бы блокировать, но пока не вмешиваться в реальный трафик. Удобный режим для тех, кто не хочет включать защиту рубильником и затем выяснять, почему половина запросов внезапно исчезла.

На публичном бенчмарке pii-bench инструмент получил 93,1 балла по метрике F1. Заявленная точность срабатываний достигла 99,9% — примерно 999 из 1000 обнаружений должны быть верными.

Исходный код версий Standalone и ExtProc опубликован на GitHub и GitVerse. Теперь защищать корпоративные данные от слишком любознательных нейросетей можно собственными силами и заодно проверить, что именно происходит под капотом.

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