针对 MySQL 5.5 和 5.6 版本的 Riddle 漏洞会经由中间人攻击泄露用户名密码信息。请尽快更新到 5.7 版本。
Riddle 漏洞存在于 DBMS Oracle MySQL 中,攻击者可以利用漏洞和中间人身份窃取用户名和密码。
"Riddle 是一个在 Oracle MySQL 5.5 和 5.6 客户端数据库中发现的高危安全漏洞。允许攻击者在中间人位置使用 Riddle 漏洞破坏 MySQL 客户端和服务器之间的 SSL 配置连接。" 漏洞描述写道。"此漏洞是一个非常危险的漏洞,因为首先它会影响 MySQL – 非常流行的 SQL 数据库 – 其次会影响 SSL 连接,根据 SSL 的定义,它理应是安全的。"
Riddle 漏洞的编号为 CVE-2017-3305 ,当 MySQL 5.5 和 5.6 向服务器发送数据,包括用户名密码时,攻击者可以捕获它们。
针对 5.5.49、5.6.30 版本的安全更新并没有完全修复漏洞。专家注意到,5.7 版本之后以及 MariaDB 系统没有受到漏洞影响。
安全研究员 Pali Rohár 称,导致 Riddle 漏洞的原因是之前存在于 MySQL 数据库中的 BACKRONYM 漏洞没有被修复。Backronym 漏洞能在中间人攻击时用来泄露密码,即使流量经过加密。
"针对稳定版本的 MySQL 5.5.49 和 5.6.30 的安全更新中添加了在验证过程完成后对安全参数的验证。"" 由于动作是验证完成后做出的,因此利用 Riddle 进行中间攻击再与 SSL 降级配合,攻击者就可以窃取登录数据进行身份验证并登录到 MySQL 服务器,"Rohár 写道。
"有趣的是,当 MySQL 服务器拒绝验证用户时,MySQL 客户端不会报告任何与 SSL 相关的错误,而是会报告服务器发送的未加密的错误消息。而这些错误消息由中间人攻击者控制的。"
专家建议将客户端软件更新为 MySQL 5.7 或 MariaDB,因为这些应用程序的安全更新是能够正常工作的。
作者给出了用 Perl 写的 PoC 脚本 。它会在本地 3307 端口开启 riddle,MySQL 服务器运行在 localhost:3306。
在中间人服务器运行 riddle:
- $ perl riddle.pl
将 MySQL 客户端与 riddle 连接:
- $ mysql --ssl-mode=REQUIRED -h 127.0.0.1 -P 3307 -u user -p password
如果你提供了正确的用户名密码,riddle 就会连接到服务器,执行 SQL 语句并输出:
- SELECT COUNT(*) FROM information_schema.TABLES --> 121
MySQL 客户端会收到一条由 riddle 发送的错误信息:
- ERROR 1045 (28000): Access denied: MITM attack
Riddle 漏洞在二月份被发现,但是这个漏洞仍然能够影响到 Oracle MySql 软件。
"如果你不是 Oracle 客户的话,向他们报告漏洞是没有用的(即使是与安全相关的漏洞)。他们可以完全忽视任何报告,如果没人知道的话,他们会很高兴,因此不用修复漏洞了,"Rohár 解释说。
"立即公开披露似乎是对用户最负责的解决方案,这是保护用户的唯一方法,能立即让他们知道应该做什么。"
来源: http://www.tuicool.com/articles/VVzEjeM