写点什么

【漏洞分析】Apache ShardingSphere-Proxy <5.3.0 身份认证绕过

作者:墨菲安全
  • 2022-12-27
    北京
  • 本文字数:1421 字

    阅读完需:约 5 分钟

【漏洞分析】Apache ShardingSphere-Proxy <5.3.0 身份认证绕过

漏洞简介

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 为例,当使用错误的账号密码通过 MySQL 连接库(如 pymysql)连接 ShardingSphere-Proxy:


import pymysql
# MySQL client 连接 ShardingSphere-Proxydb = 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 修复此漏洞:



(漏洞修复代码)

给开发者的建议

  1. 对失效的会话信息及时清理关闭,防止会话重用的风险。此类风险较为普遍,例如 LibreNMS 在 22.10.0 之前的版本也出现过类似的问题,由于未对失效的 cookie 进行清理,导致攻击者可利用旧的 cookie 进行登录。

  2. 对临时文件或文件流及时关闭,防止内存泄露或过多的资源消耗导致拒绝服务。

参考链接

关于墨菲安全

墨菲安全是一家为您提供专业的软件供应链安全管理的科技公司,能力包括代码安全检测、开源组件许可证合规管理、云原生容器安全检测、软件成分分析(SCA)等,丰富的安全工具助您打造完备的软件开发安全能力(DevSecOps)。


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


发布于: 刚刚阅读数: 3
用户头像

墨菲安全

关注

还未添加个人签名 2022-03-23 加入

还未添加个人简介

评论

发布
暂无评论
【漏洞分析】Apache ShardingSphere-Proxy <5.3.0 身份认证绕过_开源_墨菲安全_InfoQ写作社区