mysql parsename_MySQL sql_parse.cc远程格式串漏洞

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请求来触发这个漏洞,导致受影响的服务崩溃。

解决方法

厂商补丁:

RedHat

------

RedHat已经为此发布了一个安全公告(RHSA-2009:1289-2)以及相应补丁:

RHSA-2009:1289-2:Moderate: mysql security and bug fix update

链接:https://rhn.redhat.com/errata/RHSA-2009-1289.html

其它发行版

Ubuntu

http://www.ubuntu.com/usn/usn-897-1/

Debian

https://security-tracker.debian.org/tracker/CVE-2009-2446

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值