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 ?...
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请求来触发这个漏洞,导致受影响的服务崩溃。 MySQL AB MySQL 5.0.83 厂商补丁: MySQL AB -------- 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: http://www.mysql.com/