位置:首页 > 电脑资讯 > 数个 MySQL 的安全漏洞 请用户尽快升级系统

数个 MySQL 的安全漏洞 请用户尽快升级系统

时间:2005-12-07  |  作者:e-matters  |  阅读:236
  服务器: COM_TABLE_DUMP - 正整数 (Signed Integer) 的漏洞

  MySQL 4.x 之前的版本在处理 COM_TABLE_DUMP 时,会从封包中抽取两国字符 (chars),将它直接转换成不带符号 (unsigned integers) 的整数和利用它作为 memcpy 长度参数。若利用字符去表达负数,明显地会转化成一个 非常大的不带符号的整数。由于是以堆阵至堆阵 (heap to heap) 的复制模式操作,并且在 SIGSEGV 处理器内 没有分配记忆的功能,这个漏洞相信只可被用作阻断服务 (denial of service) 攻击。根据不同的封包,mysqld 会直接被瘫痪或进入循环的分割错误 (segmentation faults) 当机状态。这项漏洞已在 Windows,Linux, FreeBSD 系统上测试证实。

  服务器: COM_CHANGE_USER - 密码长度的漏洞

  在 2000 年 2月,Robert van der Meulen 发现了一项 MySQL 系统内主要核实密码的缺憾:MySQL 安全响应机制 (challenge response algorithm) 会建立一个预算的响应,而响应的长度会和客户端所提供的一样。若客户端只传送一个字符长到度的响应 ,MySSQL 只会检查一个位。换言之,它能尝试 32 次去给与正确的响应 (因为字符集最大只是 32 个字符)。作者在 2000 年修补这项漏洞时,在服务器上只加入了一个检查响应长度必须是 8 个字符的规则。但是,他们忘记了将这个检查新增到 COM_CHANGE_USER 指令,所以仍然有可能让拥有合法的 MySQL 帐户的攻击者控制在相同主机上允许登入的其它帐户。对于本机使用者,他可以进入 MySQL 的超级使用者帐户,继而控制所有数据库。若这个问题发生在共享资源的情况下,或超级使用者可以从本机以外的主机登入系统都会十分危险。当攻击者从可以提供长度为一个位的响应去入侵其它帐户,它亦可以传送一个超过长度限制的响应。如果响应的长度超过 16 字符,内部所建立的预算答案会令堆栈满溢。如果有足够长度的响应,有可能会导致由密码核对原理所使用的随机数字生产器 (random number generator) 所产生的字符覆写已储存的指令指示器 (instruction pointer) 。这种攻击模式虽然有一定的难度,但 e-matters 已经证实在他们的 linux 系统下 成功利用这项漏洞。由于 MySQL 程序在瘫痪时会重新激活,人们便可以无限地进行尝试。由于随机数字生产器所产生的字母组合是有限的,并且要在指令指示器上覆写可控制的正确地址是不可能的,所以相信要在 Windows 平台上攻击这项漏洞相信是不可能的。

  客户: libmysqlclient read_row 的满溢漏洞当 MySQL 客户函式库接收由服务器传送来的答案行时,它想将答案复制到另一个缓冲区,所以它会循环地去接收回传的字段和复制到其它位置。这个过程当中,程序并不检查储存的字段大小是否在目的地缓冲区的大小范围之内。此外,一般会在所有字段的结尾部份加入一个 ‘\0‘ 作为终断符号,却没有检查目的地缓冲区是否有足够的空间。由于这项漏洞只需一个简单 SELECT 指令便可经有问题的libmysql 查询与它有动态连结的任何东西。基于这个漏洞的性质,它很容易被用来对客户端应用程序进行阻断服务攻击。(一个负数值的字段长度已可达到这个目的)。如果可以利用这个满溢的漏洞在客户端系统去执行程序代码,是有别与程序与程序之间的执行。实际上,主要视乎 malloc() 能否在特定系统上成功造成满溢,而应用程序能否透过激活不同的执行路径足以控制整个堆阵结构。

  客户: libmysqlclient read__one_row 的字符集覆写漏洞

  当 MySQL 客户函式库传送一行由 MySQL 服务器所获得的记录,它会循环经过所有字段记录字段数值的指示器位置。这是一个可信赖的字段大小,所以不需检查是否存在超出界限的情况。当记录完指示器的位置后,之前的字段会以零作为终结符号。一个诡造的封包可以提供任何字段的大小,所以可以令任意的记忆地址被覆写为 ‘\0‘。一个非法的地址绝对会令客户端瘫痪。由于任意写入的地址,最大可能利用这项漏洞对所有利用遂行方式传送的客户端,执行任意的程序代码。

  影响

  数个 MySQL (lib) 内的漏洞可能允许控制客户端或服务器。

  受影响之系统

  MySQL 3.23.53a 之前的版本

  MySQL 4.0.5a 之前的版本

  解决方案

  请于安装修补程序前浏览软件供货商之网页,以获得更详尽资料。

   请在这里下载修补程序:

   供货商已发放修补这些漏洞的 MySQL 3.23.54 ( http://www.mysql.com/downloads/mysql-3.23.html ) 版本。

福利游戏

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多