mysql身份认证漏洞修复

mysql身份认证漏洞修复

ID:8814281

大小:19.76 KB

页数:4页

时间:2018-04-08

mysql身份认证漏洞修复_第1页
mysql身份认证漏洞修复_第2页
mysql身份认证漏洞修复_第3页
mysql身份认证漏洞修复_第4页
资源描述:

《mysql身份认证漏洞修复》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、MySQL身份认证漏洞升级到5.5.24可修正MySQL爆出了一个很大的安全漏洞,几乎影响5.1至5.5的所有版本。出问题的模块是登录时密码校验的部分(password.c),在知道用户名的情况下(如root),直接反复重试(平均大约256次)即可登入。MySQL发布5.5.24的时候,修正了这个BUG。我今天早上打开电脑,在seclists中看到一个很惊人的thread:http://seclists.org/oss-sec/2012/q2/493MySQL爆出了一个很大的安全漏洞,几乎影响5.1至5.5的所有版本。出问题的模块是登录时密码校验的部分(password.c)

2、,在知道用户名的情况下(如root),直接反复重试(平均大约256次)即可登入。不过,MySQL身份认证的时候是采用3元组,username,ip,password。如果client的IP在mysql.user表中找不到对应的,也无法登陆。这个BUG实际上早在4月份就被发现了,今年5月7号,MySQL发布5.5.24的时候,修正了这个BUG。漏洞分析:出问题的代码如下/*Checkthatscrambledmessagecorrespondstothepassword;thefunctionisusedbyservertocheckthatrecievedreplyisaut

3、hentic.Thisfunctiondoesnotchecklengthsofgivenstrings:messagemustbenull-terminated,replyandhash_stage2mustbeatleastSHA1_HASH_SIZElong(ifnot,somethingfishyisgoingon).SYNOPSIScheck_scramble()scrambleclients'reply,presumablyproducedbyscramble()messageoriginalrandomstring,previouslysenttoclient(

4、presumablysecondargumentofscramble()),mustbeexactlySCRAMBLE_LENGTHlongandNULL-terminated.hash_stage2hex2octet-decodeddatabaseentryAllparamsareIN.RETURNVALUE0passwordiscorrect!0passwordisinvalid*/my_boolcheck_scramble(constuchar*scramble_arg,constchar*message,constuint8*hash_stage2){SHA1_CON

5、TEXTsha1_context;uint8buf[SHA1_HASH_SIZE];uint8hash_stage2_reassured[SHA1_HASH_SIZE];mysql_sha1_reset(&sha1_context);/*createkeytoencryptscramble*/mysql_sha1_input(&sha1_context,(constuint8*)message,SCRAMBLE_LENGTH);mysql_sha1_input(&sha1_context,hash_stage2,SHA1_HASH_SIZE);mysql_sha1_resul

6、t(&sha1_context,buf);/*encryptscramble*/my_crypt((char*)buf,buf,scramble_arg,SCRAMBLE_LENGTH);/*nowbufsupposedlycontainshash_stage1:sowecangethash_stage2*/mysql_sha1_reset(&sha1_context);mysql_sha1_input(&sha1_context,buf,SHA1_HASH_SIZE);mysql_sha1_result(&sha1_context,hash_stage2_reassured

7、);returnmemcmp(hash_stage2,hash_stage2_reassured,SHA1_HASH_SIZE);}memcmp的返回值实际上是int,而my_bool实际上是char。那么在把int转换成char的时候,就有可能发生截断。比如,memcmp返回0×200,截断后变成了0,调用check_scramble函数的就误以为“passwordiscorrect“。但是一般来说,memcmp的返回值都在[127,-128]之内。glibc的经SSE优化后的代码,不是如此。所以这个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。