MySQL sql_parse.cc远程格式串漏洞

来源:岁月联盟 编辑:zhuzhu 时间:2009-07-18
MySQL sql_parse.cc远程格式串漏洞 发布日期:2009-07-08 
更新日期:2009-07-10 

受影响系统: 
MySQL AB MySQL 5.0.83 
描述: 
-------------------------------------------------------------------------------- 
BUGTRAQ  ID: 35609 

MySQL是一款使用非常广泛的开放源代码关系数据库系统,拥有各种平台的运行版本。 

MySQL的sql_parse.cc文件中的dispatch_command()函数存在格式串错误: 

2084行: 

  case COM_CREATE_DB:                // QQ: To be removed 
    { 
      char *db=thd->strdup(packet), *alias; 
      HA_CREATE_INFO create_info; 

      statistic_increment(thd->status_var.com_stat[SQLCOM_CREATE_DB], 
              &LOCK_status); 
      // null test to handle EOM 
      if (!db || !(alias= thd->strdup(db)) || check_db_name(db)) 
      { 
    my_error(ER_WRONG_DB_NAME, MYF(0), db ? db : "NULL"); 
    break; 
      } 
      if (check_access(thd,CREATE_ACL,db,0,1,0,is_schema_db(db))) 
    break; 
      [1] mysql_log.write(thd,command,packet); 
      bzero(&create_info, sizeof(create_info)); 
      mysql_create_db(thd, (lower_case_table_names == 2 ? alias : db), 
                      &create_info, 0); 
      break; 
    } 

2105行: 

  case COM_DROP_DB:                // QQ: To be removed 
    { 
      statistic_increment(thd->status_var.com_stat[SQLCOM_DROP_DB], 
              &LOCK_status); 
      char *db=thd->strdup(packet); 
      /*  null test to handle EOM */ 
      if (!db || check_db_name(db)) 
      { 
    my_error(ER_WRONG_DB_NAME, MYF(0), db ? db : "NULL"); 
    break; 
      } 
      if (check_access(thd,DROP_ACL,db,0,1,0,is_schema_db(db))) 
    break; 
      if (thd->locked_tables || thd->active_transaction()) 
      { 
    my_message(ER_LOCK_OR_ACTIVE_TRANSACTION, 
                   ER(ER_LOCK_OR_ACTIVE_TRANSACTION), MYF(0)); 
    break; 
      } 
      [2] mysql_log.write(thd,command,db); 
      mysql_rm_db(thd, db, 0, 0); 
      break; 
    } 

在[1]和[2]处对mysql_log.write()的调用导致了这个格式串错误。通过认证的远程安全者可以通过提交特制的COM_CREATE_DB或COM_DROP_DB请求来触发这个漏洞,导致受影响的服务崩溃。 

<*来源:Kingcope (kingcope@gmx.net) 
  
  链接:http://secunia.com/advisories/35767/ 
        http://marc.info/?l=bugtraq&m=124715058728774&w=2 
*> 

测试方法: 
-------------------------------------------------------------------------------- 

警 告 

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

http://milw0rm.com/exploits/9085 

建议: 
-------------------------------------------------------------------------------- 
厂商补丁: 

MySQL AB 
-------- 
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: 

http://www.mysql.com/