{"id":"CVE-2025-2291","aliases":["AZL-60437","AZL-60438","BIT-pgbouncer-2025-2291","DEBIAN-CVE-2025-2291","DLA-4180-1","EUVD-2025-11379","GHSA-qj9w-64mv-p2fw","UBUNTU-CVE-2025-2291"],"status":"published","title":"PgBouncer default auth_query does not take Postgres password expiry into account","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","severity":{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00376,"percentile":0.3183,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-324"],"published":"2025-04-16T18:00:05Z","modified":"2026-09-08T08:48:24Z","fixes":[{"ecosystem":"Azure Linux:3","package":"pgbouncer","fixed_in":["1.24.1-1"],"sources":["osv"]},{"ecosystem":"Azure Linux:2","package":"pgbouncer","fixed_in":["1.24.1-1"],"sources":["osv"]},{"ecosystem":"Bitnami","package":"pgbouncer","fixed_in":["1.24.1"],"sources":["osv"]},{"ecosystem":"Debian:12","package":"pgbouncer","fixed_in":["1.18.0-1+deb12u1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"pgbouncer","fixed_in":["1.24.1-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"pgbouncer","fixed_in":["1.24.1-1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Azure Linux:3","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.24.1-1"}]}]},{"source":"osv","ecosystem":"Azure Linux:2","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.24.1-1"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"pgbouncer","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.24.1"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.18.0-1+deb12u1"}]}],"versions":["1.18.0-1"]},{"source":"osv","ecosystem":"Debian:13","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.24.1-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.24.1-1"}]}]},{"source":"osv","ecosystem":"Debian:11","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0-1+deb11u1"}]}],"versions":["1.15.0-1"],"bundled":2},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.5-1","1.6.1-1","1.7-1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.7.2-3build1","1.7.2-65-g2b8e6cf-1","1.8.1-1","1.8.1-1build1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.10.0-1","1.10.0-1build1","1.11.0-1","1.12.0-2","1.12.0-3"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.15.0-1","1.16.1-1ubuntu1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.20.0-1","1.21.0-1","1.22.0-1","1.22.0-1build1","1.22.0-1build3","1.22.0-1build4"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"pgbouncer","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.24.0-3","1.24.1-1"]}],"products":[{"vendor":"debian","product":"debian_linux"},{"vendor":"pgbouncer","product":"pgbouncer"}],"references":[{"url":"https://www.pgbouncer.org/changelog.html#pgbouncer-124x","tags":["Release Notes","article","advisory","report"]},{"url":"https://lists.debian.org/debian-lts-announce/2025/05/msg00032.html","tags":["Mailing List","Third Party Advisory","advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-2291","tags":["web"]},{"url":"https://github.com/advisories/GHSA-qj9w-64mv-p2fw"},{"url":"https://security-tracker.debian.org/tracker/CVE-2025-2291","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2025-2291","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-2291","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2025-2291","title":"PgBouncer default auth_query does not take Postgres password expiry into account","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:00:05.413Z","modified":"2025-11-03T19:42:15.907Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-324"],"updated_at":"2026-11-02T14:32:38.70481Z"}],"euvd":[{"id":"EUVD-2025-11379","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:00:05Z","modified":"2025-11-03T19:42:15Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"updated_at":"2026-11-02T19:49:33.639996Z"}],"ghsa":[{"id":"GHSA-qj9w-64mv-p2fw","title":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres...","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:31:54Z","modified":"2025-11-03T21:33:40Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"}],"cwes":["CWE-324"],"updated_at":"2026-11-02T15:04:23.26783Z"}],"nvd":[{"id":"CVE-2025-2291","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:16:04.977Z","modified":"2026-06-17T09:06:42.01Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"}],"cwes":["CWE-324"],"updated_at":"2026-11-02T14:11:00.810682Z"}],"osv":[{"id":"CVE-2025-2291","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:16:04.977Z","modified":"2026-03-15T22:50:31.010107Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:47.009967Z"},{"id":"DEBIAN-CVE-2025-2291","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:16:04.977Z","modified":"2026-09-01T20:05:44.291497603Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:45:45.524682Z"},{"id":"UBUNTU-CVE-2025-2291","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:16:00Z","modified":"2026-01-20T19:15:29.494415Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"high"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T16:55:26.330196Z"},{"id":"AZL-60437","title":"CVE-2025-2291 affecting package pgbouncer for versions less than 1.24.1-1","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:16:04Z","modified":"2026-04-21T04:49:00.398673Z","updated_at":"2026-11-02T15:28:07.517393Z"},{"id":"AZL-60438","title":"CVE-2025-2291 affecting package pgbouncer for versions less than 1.24.1-1","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-16T18:16:04Z","modified":"2026-04-21T04:37:25.531478Z","updated_at":"2026-11-02T15:28:07.517393Z"},{"id":"BIT-pgbouncer-2025-2291","title":"PgBouncer default auth_query does not take Postgres password expiry into account","description":"Password can be used past expiry in PgBouncer due to auth_query not taking into account Postgres its VALID UNTIL value, which allows an attacker to log in with an already expired password","status":"published","published":"2025-04-18T19:19:16.416Z","modified":"2026-09-08T08:48:24.630007545Z","updated_at":"2026-11-02T15:28:34.343258Z"},{"id":"DLA-4180-1","title":"pgbouncer - security update","status":"published","published":"2025-05-27T00:00:00Z","modified":"2026-03-09T01:23:03.268857Z","updated_at":"2026-11-02T15:46:12.7027Z"}]}}
