LINUX.ORG.RU

Выпуск LibreDB Studio 0.16.2 с устранением уязвимости доступа к чужим соединениям

 , , , ,


4

3

Вышла версия 0.16.2 LibreDB Studio, клиента для SQL- и NoSQL-СУБД с веб-интерфейсом. Studio ставится на свой сервер, а пользователи работают с базами через браузер. Лицензия MIT.

В этой версии исправлена уязвимость GHSA-3wh2-8x78-jfw4 с оценкой 8.8 из 10 по CVSS. О ней сообщил сторонний исследователь NotAFlightRisk.

Сервер держит уже открытые подключения к базам в общем кэше. Ключом в этом кэше был идентификатор подключения, а его присылает браузер. Пользователь, подставивший в запрос чужой идентификатор, получал чужое открытое подключение с правами его владельца. Логин и пароль в запросе при этом можно было указать любые, они не проверялись.

Идентификаторы подключений, которые заранее задаёт администратор, обычно простые, например prod, и их легко угадать. Поэтому пользователь с ролью user мог выполнять любые запросы в базе, доступной только роли admin.

Уязвимость касается установок, где заведено больше одной учётной записи. Если Studio пользуется один человек, чужих подключений на сервере нет. Уязвимы все версии до 0.16.1 включительно.

Запуск:

docker run -p 3000:3000 ghcr.io/libredb/libredb-studio:0.16.2

Есть также Helm-чарт и npm-пакет @libredb/studio.

Подробности об исправленной уязвимости

>>> Репозиторий проекта



Проверено: hobbit ()
Последнее исправление: cetjs2 (всего исправлений: 3)

Приведу измерения, которые не в нашу пользу, потому что именно они полезны. Cassandra для таблицы в 500 строк оценила 143, поэтому браузер объектов показывает пустое поле вместо неверного числа. Citus и TimescaleDB сообщают размеры и счётчики строк, которые неверны, а не отсутствуют. YugabyteDB показывает 0 до ANALYZE. Vitess отклоняет KILL QUERY, так что запрос нельзя прервать.

Cassandra is the one that reports the least on purpose: it publishes no row count and no size that is true, so the object browser shows neither rather than showing a number that is wrong — the estimate it does publish counts partitions from flushed files, and it read 143 for a 500-row table. Trino is the other odd one: it is a query engine rather than a database, so it declares no keys and no indexes and reports the bytes as belonging to the systems behind its connectors. Prometheus is the newest, and like MongoDB and Redis it is not SQL at all: it speaks PromQL over the Prometheus HTTP API, browses metrics, rules and scrape targets, and is read-only because Studio calls none of the server’s write or admin endpoints.

на каких это языках? ридми точно надо причесать, пока это похоже больше на сохранение контекста для иишницы, а не понятное описание.

надо бы попробовать, но подобное описание заставляет сильно насторожиться

user_undefined ★★
()
Ответ на: комментарий от Rodegast

Это разные классы программ. DBeaver ставится на каждую машину, и у каждого свои подключения и пароли. Studio ставится один раз на сервер: подключения и учётные данные хранятся там, доступ по ролям (admin/user) и через OIDC, а пользователю нужен только браузер. Если вы работаете с базами один на своём ноутбуке, DBeaver зрелее и функциональнее, и менять его смысла нет. Studio нужен, когда к одним и тем же базам ходит команда.

kaya-abdullah
()
Ответ на: комментарий от user_undefined

Справедливо. README сейчас больше похож на журнал измерений по каждой СУБД, чем на описание проекта. Переделаем: короткое понятное описание наверху, а подробности по каждой СУБД уберём в docs/providers.

kaya-abdullah
()
Ответ на: комментарий от GPFault

Упрёк заслуженный. Уязвимость нашёл внешний исследователь, мы её исправили и опубликовали advisory с оценкой 8.8, ничего не занижая. Пароли по-прежнему хранятся на сервере, а ошибка была в кэше уже открытых подключений внутри сервера: он не проверял, чьё это подключение. Всем, у кого больше одного пользователя, нужно обновиться до 0.16.2.

kaya-abdullah
()
Ответ на: комментарий от kaya-abdullah

Studio ставится один раз на сервер ... Studio нужен, когда к одним и тем же базам ходит команда.

Т.е. смысл только в том что бы раздать доступ к нескольким СУБД? Но если я работаю в команде, то у меня всё равно будут свои тестовые креды (например для отладки приложения которому очень нужна БД) :)

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

простейший пример, когда такое понадобится - когда в принципе нет сетевого доступа до БД. А доступ до вебморды какого-нибудь pgadmin есть и ходишь ты по-прежнему со своими кредами

user_undefined ★★
()
Ответ на: комментарий от user_undefined

простейший пример, когда такое понадобится - когда в принципе нет сетевого доступа до БД. А доступ до вебморды какого-нибудь pgadmin есть и ходишь ты по-прежнему со своими кредами

Если есть доступ к серверу который «видет» СУБД, то подключиться бобром вообще не проблема. Просто надо правильно настроить ssh.

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

это если такой доступ дали и AllowTcpForwarding не отключили. Вот у нас у разрабов через vpn нет такого доступа, это принципиальная позиция безопасников, все базы в отдельном влане, в который есть доступ только у кубера. Доступа у разрабов к серверам кубера естественно нет. Все, что им доступно - только морда пгадмина.

user_undefined ★★
()
Ответ на: комментарий от user_undefined

Все, что им доступно - только морда пгадмина.

Если ты говоришь про прод, то я в это поверю. Но туда вообще редко лазают :D

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

На прод? пгадмин? разрабов? ты о чем сейчас? это все на тесте, до прода у разрабов никакого доступа нет, только определенные логи могут посмотреть и на этом всё. На проде доступ только для sre и девопсин, безопасники и это бы запретили, но кто-то поддерживать и решать инциденты же должен)

user_undefined ★★
()
Ответ на: комментарий от user_undefined

это все на тесте, до прода у разрабов никакого доступа нет, только определенные логи могут посмотреть и на этом всё

Какая то суровая у вас организация :) Но сути это не меняет, я не думаю что разработчикам нужен постоянный доступ к тесту, а к деву у них и так должен быть постоянный доступ.

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Не только. Свои подключения со своими учётными данными каждый добавляет сам, и на сервере они хранятся отдельно для каждой учётной записи. Общие подключения задаёт дминистратор и открывает их по ролям, так что свои тестовые креды остаются своими.

libredb
() автор топика
Ответ на: комментарий от kaya-abdullah

когда к одним и тем же базам ходит команда.

Вы не поверите, это фича DBMS. И это не учитывая того факта, что для описанного Вами кейса можно поставить Eclipse Theia, которая, внезапно, может все большие VSCode плагины, включая python с jupyter.

А прикольные кейсы с кредами можно вообще удивительной тулзой делать - ProxySQL

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 3)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.