揭晓日期: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
--------
现在厂商还没有提供补丁或许晋级顺序,我们建议运用此软件的用户随时注重厂商的主页以获取最新版本:
读库教程网文章由网络收集后整理发布,文章发布人拥有该内容的所有权力及责任!
如果你喜欢这页,可以按Ctrl+D收藏起来。







