缝隙简介

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 数据库:

【漏洞分析】Apache ShardingSphere-Proxy

(ShardingSphere-Proxy 运用场景示意图)

在该缝隙中存在的交互进程如下

【漏洞分析】Apache ShardingSphere-Proxy

(MySQL client 与 ShardingSphere-Proxy 交互图)

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将根据返回的报文抛出反常,程序终止:

【漏洞分析】Apache ShardingSphere-Proxy

(ShardingSphere-Proxy 身份认证失利抛出反常)

但这时ShardingSphere-Proxy 的 MySQL 身份认证模块并未封闭 MySQL 客户端衔接会话:

【漏洞分析】Apache ShardingSphere-Proxy

(MySQLAuthenticationEngine#authenticate 源码)

攻击者假如结构一个忽略身份验证失利消息的MySQL客户端,则能够通过ShardingSphere-Proxy继续操作后端数据库。例如能够将pymysql中抛出反常的代码注释掉:

【漏洞分析】Apache ShardingSphere-Proxy

(删除 pymysql#connections.py 中的过错处理逻辑)

再次测验能够发现在运用过错的账号密码衔接后,依然能够正常运用SQL句子,取得相应的数据返回成果:

【漏洞分析】Apache ShardingSphere-Proxy

(绕过 ShardingSphere-Proxy 身份验证并操作后端数据库)

【漏洞分析】Apache ShardingSphere-Proxy

(ShardingSphere-Proxy 后端数据库信息)

ShardingSphere-Proxy v5.3.0 commits 中在 MySQL 客户端认证失利后整理 context 修复此缝隙:

【漏洞分析】Apache ShardingSphere-Proxy

(缝隙修复代码)

给开发者的建议

  1. 对失效的会话信息及时整理封闭,避免会话重用的危险。此类危险较为遍及,例如 LibreNMS 在22.10.0之前的版别也呈现过相似的问题,因为未对失效的 cookie 进行整理,导致攻击者可利用旧的 cookie 进行登录。
  2. 对临时文件或文件流及时封闭,避免内存泄露或过多的资源耗费导致拒绝服务。

参阅链接

  • www.oscs1024.com/hd/MPS-2022…
  • lists.apache.org/thread/l5rz…
  • github.com/apache/shar…

关于墨菲安全

墨菲安全是一家为您供给专业的软件供应链安全办理的科技公司,才能包含代码安全检测、开源组件许可证合规办理、云原生容器安全检测、软件成分剖析(SCA)等,丰厚的安全东西助您打造完备的软件开发安全才能(DevSecOps)。

旗下的安全研究团队墨菲安全实验室,专心于软件供应链安全相关范畴的技术研究,关注的方向包含:开源软件安全、程序剖析、威胁情报剖析、企业安全治理等。公司中心团队来自百度、华为等企业,具有超越十年的企业安全建设、安全产品研制及安全攻防经验。