漏洞简介
2022年12月22日,Apache 官方公告发布 ShardingSphere-Proxy 5.3.0 之前版本存在身份绕过漏洞(CVE-2022-45347) 。当 ShardingSphere-Proxy 使用 MySQL 作为后端数据库时,由于 ShardingSphere-Proxy 在客户端认证失败后没有完全清理数据库会话信息,攻击者可利用未关闭的会话信息绕过 ShardingSphere-Proxy 的 MySQL 身份验证,执行任意 sql 命令 。
漏洞分析Apache ShardingSphere 是一个可将任意数据库转换为分布式数据库的生态系统,ShardingSphere-Proxy 是一个支持 MySQL 和 PostgreSQL 的数据库代理,提供了一个数据库服务器,并封装了数据库二进制协议来支持异构语言 。
以 Apache ShardingSphere 5.2.1 版本为例,用户可通过配置连接 ShardingSphere-Proxy 操作后端 MySQL 数据库:
文章插图
(ShardingSphere-Proxy 应用场景示意图)
在该漏洞中存在的交互过程如下:
文章插图
(MySQL client 与 ShardingSphere-Proxy 交互图)
以Python/ target=_blank class=infotextkey>Python为例,当使用错误的账号密码通过 MySQL连接库(如pymysql)连接 ShardingSphere-Proxy:
import pymysql
# MySQL client 连接 ShardingSphere-Proxy
db = pymysql.connect(host='localhost',
port=3307,
user='root',
password='Wrong password',
database='sharding_db')
cursor = db.cursor()
cursor.execute("show tables")
results = cursor.fetchall()
print(results)
db.close()
此时pymysql将根据返回的报文抛出异常,程序终止:
文章插图
(ShardingSphere-Proxy 身份认证失败抛出异常)
但这时ShardingSphere-Proxy 的 MySQL 身份认证模块并未关闭 MySQL 客户端连接会话:
文章插图
(MySQLAuthenticationEngine#authenticate 源码)
攻击者如果构造一个忽略身份验证失败消息的MySQL客户端,则可以通过ShardingSphere-Proxy继续操作后端数据库 。例如可以将pymysql中抛出异常的代码注释掉:
文章插图
(删除 pymysql#connections.py 中的错误处理逻辑)
再次尝试可以发现在使用错误的账号密码连接后,仍然能够正常使用SQL语句,获得相应的数据返回结果:
文章插图
(绕过 ShardingSphere-Proxy 身份验证并操作后端数据库)
文章插图
(ShardingSphere-Proxy 后端数据库信息)
ShardingSphere-Proxy v5.3.0 commits 中在 MySQL 客户端认证失败后清理 context 修复此漏洞:
文章插图
(漏洞修复代码)
给开发者的建议
- 对失效的会话信息及时清理关闭,防止会话重用的风险 。此类风险较为普遍,例如 LibreNMS 在22.10.0之前的版本也出现过类似的问题,由于未对失效的 cookie 进行清理,导致攻击者可利用旧的 cookie 进行登录 。
- 对临时文件或文件流及时关闭,防止内存泄露或过多的资源消耗导致拒绝服务 。
- https://www.oscs1024.com/hd/MPS-2022-64480
- https://lists.apache.org/thread/l5rz7j4rg10o7ywtgknh2f5hxnv6yw3l
- https://github.com/apache/shardingsphere/commit/f3cc852dcbba89244ffcaef15a03ebf29693a14d
旗下的安全研究团队墨菲安全实验室,专注于软件供应链安全相关领域的技术研究,关注的方向包括:开源软件安全、程序分析、威胁情报分析、企业安全治理等 。公司核心团队来自百度、华为等企业,拥有超过十年的企业安全建设、安全产品研发及安全攻防经验 。
https://www.murphysec.com/
【【漏洞分析】Apache ShardingSphere-Proxy <5.3.0 身份认证绕过】
推荐阅读
- 杨九郎|德云社张云雷迎来30岁生日,杨九郎发文祝福,大家被二爷回复抢镜
- 戚薇|戚薇生二孩后首次露面,两小时喂一次母乳,脚踝仍未痊愈
- dnf加速器哪个最好用?用wg登陆器dnf要开加速吗?
- 魔兽世界调钱密码 魔兽调钱密码
- 中国交通建设集团|达人履约差,员工难激励,MCN出海东南亚还有哪些坑?
- 王一博|王一博跨年夜机场路透,从头到脚包裹温暖,打造满分出街装扮
- 超算有什么用处 超算有什么用
- 贡茶和奶茶的区别
- 常喝酸奶有什么好处
- CVE-2022-0847 DirtyPipe漏洞分析