安全顾问Willem de Groot披露MySQL数据库含有一设置漏洞,将允许恶意的MySQL服务器访问位于MySQL客户端的任何文件。
Groot先前便指出,用来管理MySQL及PostgreSQL数据库的PHP工具Adminer可窃取任何文件,诸如数据库客户端所存放的Magento或Wordpress凭证,几天之后Groot才发现,原来症结在于MySQL的协议漏洞。
MySQL客户端有个LOAD DATA描述,如果在客户端指定了LOCAL关键字,即会允许服务器端加载客户端的文件,而MySQL团队也知道这可能会带来安全问题,还在操作手册中提出了警告 。
根据手册上的说明,将文件从客户端转移到服务器端是由MySQL服务器所发起的,理论上用户可构建一个定制化的服务器,要求客户端程序转移服务器所指定的文件而非客户端于LOAD DATA描述中所宣称的文件名称,该修改过的服务器能够访问任何客户端用户可读取的文件。
因此,MySQL团队建议客户端不应连至任何不可靠的服务器上。
Groot则说,MySQL团队所说的理论已然成为事实,因为Github上就存放了一个恶意的MySQL服务器,能够用来自这些被黑的网站上汲取密码,或是窃取SSH密钥与加密货币钱包。
尽管该服务器还必须知道所欲访问之客户端文件的完整路径,但只要先提出/proc/self/environ的请求,就能得知客户端的文件夹结构,提高攻击的成功机率。
Groot提醒,即使诸如Golang、Python与PHP-PDO等许多的客户端或函数库都已关闭了该功能或内置针对该功能的保护机制,但并非全部,Adminer即是其中一例,也不会是最后一个例子。