久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

首頁站長新聞MySQL身份認證漏洞 升級到5.5.24可修正

MySQL身份認證漏洞 升級到5.5.24可修正

2012-06-12 135

      我今天早上打開電腦,在seclists中看到一個很驚人的thread:http://seclists.org/osssec/-2012/q2/493MySQL爆出了一個很大的安全漏洞,幾乎影響5.1至5.5的所有版本。出問題的模塊是登錄時密碼校驗的部分(password.c),在知道用戶名的情況下(如root),直接反復重試(平均大約256次)即可登入。不過,MySQL身份認證的時候是采用3元組,username,ip,password。如果client的IP在mysql.user表中找不到對應的,也無法登陸。

      這個BUG實際上早在4月份就被發(fā)現(xiàn)了,今年5月7號,MySQL發(fā)布5.5.24的時候,修正了這個BUG。

      漏洞分析:

      出問題的代碼如下

1.my_bool check_scramble(const uchar *scramble_arg, const char *message,
2. const uint8 *hash_stage2)
3.{
4. SHA1_CONTEXT sha1_context;
5. uint8 buf[SHA1_HASH_SIZE];
6. uint8 hash_stage2_reassured[SHA1_HASH_SIZE];
7.
8. mysql_sha1_reset(&sha1_context);
9. /* create key to encrypt scramble */ mysql_sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH);
10. mysql_sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE);
11. mysql_sha1_result(&sha1_context, buf);
12. /* encrypt scramble */ my_crypt((char *) buf, buf, scramble_arg, SCRAMBLE_LENGTH);
13. /* now buf supposedly contains hash_stage1: so we can get hash_stage2 */ mysql_sha1_reset(&sha1_context);
14. mysql_sha1_input(&sha1_context, buf, SHA1_HASH_SIZE);
15. mysql_sha1_result(&sha1_context, hash_stage2_reassured);
16. return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE);
17.}

      memcmp的返回值實際上是int,而my_bool實際上是char。那么在把int轉換成char的時候,就有可能發(fā)生截斷。比如,memcmp返回0×200,截斷后變成了0,調用check_scramble函數(shù)的就誤以為“password is correct“。

      但是一般來說,memcmp的返回值都在[127,-128]之內。glibc的經SSE優(yōu)化后的代碼,不是如此。所以這個BUG只在特定的編譯環(huán)境下才會觸發(fā):即編譯MySQL的時候加了-fno-builtin,并且所使用的glibc是經SSE優(yōu)化后的(一般系統(tǒng)自帶的都是如此)。這里所說的glibc是指Linux的glibc,F(xiàn)reeBSD的libc不受影響。

      總的來說這個BUG還是比較嚴重的,上次MySQL出現(xiàn)這樣的BUG還是在3.23/4.0時代。

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內容未經允許不得轉裁,轉載請注明出處“站長百科”和原文地址。

相關文章