TMAegis
More rules for postgres

TMA-POSTGRES-1.6

Verify That 'PGPASSWORD' is Not Set in Users' Profiles

MediumLevel 1Automatedpostgres

Description

PostgreSQL can read a default database password from an environment variable called PGPASSWORD. Run as root; counts Bash login scripts in /home/*, /root and /etc/environment that mention PGPASSWORD (other shells need manual review).

How it is checked

Audit method: Shell command

shell
[ "$(id -u)" -eq 0 ] || exit 1; n=$(grep -ls PGPASSWORD /home/*/.bashrc /home/*/.profile /home/*/.bash_profile /root/.bashrc /root/.profile /root/.bash_profile /etc/environment 2>/dev/null | wc -l); echo "$n"
Expected output
0

How it is fixed

Fix method: Guidance or infrastructure patch

Remove PGPASSWORD from the listed login scripts and use ~/.pgpass (mode 0600), a service file without passwords, or certificate/peer authentication instead.

Properties

Operating systems
Any
Tags
postgresdatabasecredentials
Reference
CIS PostgreSQL 18 Benchmark v1.0.0 - 1.6 Verify That 'PGPASSWORD' is Not Set in Users' Profiles

Check this host

Run this on a machine you are allowed to audit. The scan is read-only.

shell
tmaegis scan --target postgres