自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

系統(tǒng) Linux
MySQL爆出了一個很大的安全漏洞,幾乎影響5.1至5.5的所有版本。出問題的模塊是登錄時密碼校驗的部分(password.c),在知道用戶名的情況下(如root),直接反復重試(平均大約256次)即可登入。MySQL發(fā)布5.5.24的時候,修正了這個BUG。

我今天早上打開電腦,在seclists中看到一個很驚人的thread:http://seclists.org/oss-sec/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。

漏洞分析:

出問題的代碼如下

/*
    Check that scrambled message corresponds to the password; the function
    is used by server to check that recieved reply is authentic.
    This function does not check lengths of given strings: message must be
    null-terminated, reply and hash_stage2 must be at least SHA1_HASH_SIZE
    long (if not, something fishy is going on).
  SYNOPSIS
    check_scramble()
    scramble     clients' reply, presumably produced by scramble()
    message      original random string, previously sent to client
                 (presumably second argument of scramble()), must be
                 exactly SCRAMBLE_LENGTH long and NULL-terminated.
    hash_stage2  hex2octet-decoded database entry
    All params are IN.

  RETURN VALUE
    0  password is correct
    !0  password is invalid
*/

my_bool
check_scramble(const uchar *scramble_arg, const char *message,
               const uint8 *hash_stage2)
{
  SHA1_CONTEXT sha1_context;
  uint8 buf[SHA1_HASH_SIZE];
  uint8 hash_stage2_reassured[SHA1_HASH_SIZE];

  mysql_sha1_reset(&sha1_context);
  /* create key to encrypt scramble */
  mysql_sha1_input(&sha1_context, (const uint8 *) message, SCRAMBLE_LENGTH);
  mysql_sha1_input(&sha1_context, hash_stage2, SHA1_HASH_SIZE);
  mysql_sha1_result(&sha1_context, buf);
  /* encrypt scramble */
    my_crypt((char *) buf, buf, scramble_arg, SCRAMBLE_LENGTH);
  /* now buf supposedly contains hash_stage1: so we can get hash_stage2 */
  mysql_sha1_reset(&sha1_context);
  mysql_sha1_input(&sha1_context, buf, SHA1_HASH_SIZE);
  mysql_sha1_result(&sha1_context, hash_stage2_reassured);
  return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE);
}

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

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

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

原文鏈接: http://www.udpwork.com/redirect/7463

 

責任編輯:yangsai 來源: udpwork
相關推薦

2012-03-13 16:38:55

GalaxyAndroid 4.0

2013-09-18 09:56:47

WindowsWindows 8.1

2011-02-18 09:06:15

ChromeChrome DevLinux

2020-01-13 10:00:32

升級Windows 10Windows

2011-09-27 09:13:16

Ubuntu 11.0

2010-05-24 17:33:43

MySQL數(shù)據(jù)庫

2009-08-02 08:54:46

Windows 7 R系統(tǒng)升級

2023-08-04 19:41:53

UbuntuLinux

2023-01-31 11:33:36

2022-08-28 20:34:42

LinuxLinux Mint

2012-10-11 09:43:34

2021-10-20 12:47:06

UbuntuUbuntu 21.1Linux

2013-11-27 09:38:11

OpenSUSE 13OpenSUSE 12

2013-12-26 14:54:58

Windows 8.1微軟

2017-09-06 17:30:41

網(wǎng)站升級HTTPS

2022-09-12 21:10:42

LinkerdKubernetes

2015-07-29 10:21:03

微軟Windows 10升級

2023-06-13 10:44:51

Debian 11Debian 12

2013-05-20 10:39:55

MariaDB

2011-03-31 13:39:14

mysql3mysql5亂碼
點贊
收藏

51CTO技術棧公眾號