Перейти к содержимому

PostgreSQL

Проба на сыром wire-протоколе, не HTTP — address это host или host:port, без схемы. Порт по умолчанию — 5432, если не указан. product: postgres тоже принимается как алиас postgresql.

Версия берётся из сообщения ParameterStatus, которое любой backend PostgreSQL отправляет автоматически сразу после успешной аутентификации — явный запрос SHOW server_version не нужен.

targets:
- id: pg-main
product: postgresql
address: db.example.com:5432
credentials: pg-app

Требуется, только если сервер сам её запрашивает — trust-аутентификация вообще обходится без credential. Когда сервер её запрашивает, поддерживаются и автоматически согласуются trust, cleartext, MD5 и SCRAM-SHA-256 — включая SCRAM-SHA-256, метод по умолчанию на PostgreSQL 14+ и часто встречающийся на 10-13, без которого большинство реальных установок были бы недостижимы.

credentials:
pg-app:
kind: password
username: enodia_ro # опционально — по умолчанию "postgres"
password: "${PG_PASSWORD}"

Проба запрашивает базу postgres, которая есть на любом сервере и даёт CONNECT всем — так что роль, у которой нет ничего, кроме LOGIN, раскрывает версию без собственной базы. Для сервера без базы postgres укажите другую в options.database:

targets:
- id: pg-main
product: postgresql
address: db.example.com:5432
credentials: pg-app
options:
database: inventory

Сверяется с NVD и БДУ ФСТЭК, если настроен блок cve:. Начиная с 2.2, cve.postgresql.path добавляет собственные страницы безопасности проекта, в которых исправление указано для каждой мажорной версии: для мажорной версии, названной на сохранённых страницах, их вердикт заменяет диапазоны БДУ без привязки к ветке, которые иначе помечают последний релиз каждой более старой мажорной версии. См. Собственные данные вендоров → PostgreSQL.

endoflife:postgresql.