{"id":"CVE-2024-10976","state":"PUBLISHED","title":"PostgreSQL row security below e.g. subqueries disregards user ID changes","description":"Incomplete tracking in PostgreSQL of tables with row security allows a reused query to view or change different rows from those intended.  CVE-2023-2455 and CVE-2016-2193 fixed most interaction between row security and user ID changes.  They missed cases where a subquery, WITH query, security invoker view, or SQL-language function references a table with a row-level security policy.  This has the same consequences as the two earlier CVEs.  That is to say, it leads to potentially incorrect policies being applied in cases where role-specific policies are used and a given query is planned under one role and then executed under other roles.  This scenario can happen under security definer functions or when a common user and query is planned initially and then re-used across multiple SET ROLEs.  Applying an incorrect policy may permit a user to complete otherwise-forbidden reads and modifications.  This affects only databases that have used CREATE POLICY to define a row security policy.  An attacker must tailor an attack to a particular application's pattern of query plan reuse, user ID changes, and role-specific row security policies.  Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.","publishedAt":"2024-11-14T13:00:01.930Z","updatedAt":"2025-11-03T21:51:36.955Z","severity":{"score":4.2,"label":"Medium","version":"3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N","source":"PostgreSQL"},"assigner":"PostgreSQL","products":["n/a PostgreSQL"],"affected":[{"vendor":"n/a","product":"PostgreSQL","defaultStatus":"unaffected","versions":[{"version":"17","status":"affected","lessThan":"17.1","versionType":"rpm"},{"version":"16","status":"affected","lessThan":"16.5","versionType":"rpm"},{"version":"15","status":"affected","lessThan":"15.9","versionType":"rpm"},{"version":"14","status":"affected","lessThan":"14.14","versionType":"rpm"},{"version":"13","status":"affected","lessThan":"13.17","versionType":"rpm"},{"version":"0","status":"affected","lessThan":"12.21","versionType":"rpm"}]}],"references":["https://www.postgresql.org/support/security/CVE-2024-10976/","https://security.netapp.com/advisory/ntap-20250509-0010/","https://lists.debian.org/debian-lts-announce/2024/11/msg00011.html"],"weaknesses":["CWE-1250"],"ingestedAt":"2026-10-29T20:06:50.777Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/10xxx/CVE-2024-10976.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-10976","state":"PUBLISHED","datePublished":"2024-11-14T13:00:01.930Z","dateUpdated":"2025-11-03T21:51:36.955Z","assignerShortName":"PostgreSQL","assignerOrgId":"f86ef6dc-4d3a-42ad-8f28-e6d5547a5007","dateReserved":"2024-11-07T19:27:02.623Z"},"containers":{"cna":{"title":"PostgreSQL row security below e.g. subqueries disregards user ID changes","descriptions":[{"lang":"en","value":"Incomplete tracking in PostgreSQL of tables with row security allows a reused query to view or change different rows from those intended.  CVE-2023-2455 and CVE-2016-2193 fixed most interaction between row security and user ID changes.  They missed cases where a subquery, WITH query, security invoker view, or SQL-language function references a table with a row-level security policy.  This has the same consequences as the two earlier CVEs.  That is to say, it leads to potentially incorrect policies being applied in cases where role-specific policies are used and a given query is planned under one role and then executed under other roles.  This scenario can happen under security definer functions or when a common user and query is planned initially and then re-used across multiple SET ROLEs.  Applying an incorrect policy may permit a user to complete otherwise-forbidden reads and modifications.  This affects only databases that have used CREATE POLICY to define a row security policy.  An attacker must tailor an attack to a particular application's pattern of query plan reuse, user ID changes, and role-specific row security policies.  Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected."}],"affected":[{"vendor":"n/a","product":"PostgreSQL","defaultStatus":"unaffected","versions":[{"version":"17","status":"affected","lessThan":"17.1","versionType":"rpm"},{"version":"16","status":"affected","lessThan":"16.5","versionType":"rpm"},{"version":"15","status":"affected","lessThan":"15.9","versionType":"rpm"},{"version":"14","status":"affected","lessThan":"14.14","versionType":"rpm"},{"version":"13","status":"affected","lessThan":"13.17","versionType":"rpm"},{"version":"0","status":"affected","lessThan":"12.21","versionType":"rpm"}]}],"references":[{"url":"https://www.postgresql.org/support/security/CVE-2024-10976/"}],"metrics":[{"format":"CVSS","cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N","baseScore":4.2,"baseSeverity":"MEDIUM"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-1250","lang":"en","type":"CWE","description":"Improper Preservation of Consistency Between Independent Representations of Shared State"}]}],"providerMetadata":{"shortName":"PostgreSQL","orgId":"f86ef6dc-4d3a-42ad-8f28-e6d5547a5007","dateUpdated":"2024-11-14T13:00:01.930Z"},"configurations":[{"lang":"en","value":"application uses row security policies that react to the current role, and one database session reaches the same query via multiple roles"}],"credits":[{"lang":"en","value":"The PostgreSQL project thanks Wolfgang Walther for reporting this problem."}]},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-11-14T18:53:41.183245Z","id":"CVE-2024-10976","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-11-14T19:32:17.213Z"}},{"title":"CVE Program Container","references":[{"url":"https://security.netapp.com/advisory/ntap-20250509-0010/"},{"url":"https://lists.debian.org/debian-lts-announce/2024/11/msg00011.html"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2025-11-03T21:51:36.955Z"}}]}}}