Ir para o conteúdo.

Início » Segurança » Falha no MySQL permite acesso mesmo com senha incorreta

Uma falha de segurança recém-descoberta no MySQL permite que usuários mal-intencionados obtenham acesso a um servidor de banco de dados, inclusive como root, mesmo utilizando uma senha inválida. O problema afeta servidores com várias distribuições Linux e a vulnerabilidade também pode ser explorada no MariaDB, uma variante desenvolvida pela comunidade.

Além de armazenar apenas o hash das senhas dos usuários, o MySQL também adiciona uma sequência de caracteres aleatórios para dificultar ataques de dicionário ou por força bruta. A senha que o usuário digitou para se conectar ao banco é criptografada e então comparada com o código secreto armazenado no banco de dados. Em determinadas situações, a senha digitada e o valor esperado são considerados iguais mesmo quando não são, permitindo o acesso.

Alguém está acessando um banco de dados sem autorização neste exato momento.

Com a falha na autenticação, qualquer pessoa que saiba algum nome de usuário registrado no servidor pode obter acesso, inclusive como root, com privilégios de exclusão dos bancos de dados. A probabilidade do acesso ser concedido sem autorização é de uma entre 256 tentativas, uma porcentagem relativamente baixa, graças ao sistema de caracteres aleatórios do MySQL. O problema é que centenas de tentativas de acesso podem ser feitas numa fração de segundo com um código simples em Shell Script, então o bug pode trazer grandes dores de cabeça para administradores de sistema.

A vulnerabilidade está presente nas versões 5.1.61, 5.2.11, 5.3.5, 5.5.22 e anteriores do MySQL e do MariaDB. Servidores de 64 bits com as distribuições Ubuntu, Arch Linux, openSUSE 12.1 e Fedora 16 contêm versões vulneráveis. A falha de segurança já foi corrigida em versões mais novas. Um desenvolvedor da Accuvant Labs desenvolveu um pequeno script para testar se o seu servidor é vulnerável, disponível neste link.

Com informações: Softpedia.

TB Respostas
Publicidade

22 Comentários (Deixe o seu!)

  • Gaba
    1848c

    Eita fail…

  • Isso só pode ser brincadeira.

  • @mos_axz
    1061c

    Como eu disse no twitter quando vi essa falha, depois que o site do Mysql foi invadido via Sql Injection, não duvido de mais nada…

  • @Cobalto
    466c

    Que lindo.
    (só que não)

  • Marcelo

    Que coisa heim..
    Duvida, como que testo esse script em meu site?

    • @lamas
      28c

      Você precisa ter acesso SSH e permissão para utilizar os compiladores.

      Se tiver, salve o código (http://pastie.org/pastes/4064638/download) e compile com o comando:
      gcc pastie-4064638.cpp -o pastie-4064638

      Depois é só executar com o comando ./pastie-4064638

  • Vinicius Kinas
    1055c

    A falha está na função memcmp() que tem uma especificação meio vaga, e algumas implementações diferem na faixa de valores que podem ser retornados. O erro foi dos programadores que usaram um detalhe de implementação (algo implementado, mas não especificado pelo ‘contrato’ da função).

    Só estão afetado os que compilarem versões próprias, e usarem a função memcmp() da glibc (que tem o problema).

    Meus servidores estão seguros :D

    • Diego Rocha
      131c

      No meu caso, instalei pelo apt-get Ubuntu Server e está vunerável, vou analisar os logs para ver se foi explorada no meu servidor.

  • No meu PC e notebook eu uso a versão 6.0.11 do mysql, mas depois que eu sair da cama vou testar…

    O foda é que o server da maioria das hospedagem é 5.5 ou inferior, o que fica comprometido.

    Ainda bem que eu não tenho dados intrisicos nos bancos.

  • Complementando:
    =============

    Don’t worry!!

    Se você usa cpanel execute no terminal: /scripts/mysqlup ou ainda no whm siga o caminho: WHM: Main >> Software >> MySQL Upgrade

    Obs: isso serve apenas para root!

    Ao executar /scripts/mysqlup você atualizará para a versão MySQL-server-5.1.63-0.cloud (não vulnerável segundo a http://seclists.org)

    http://seclists.org/oss-sec/2012/q2/493

  • Andre

    MySQL e segurança nunca se entenderam.

    • @xrenan
      273c

      Baseado em?

      • Jose

        Fatos reais!

        • Exemplos?

  • Os DBA pira!

  • paulorazia
    566c

    Como dizem no facebook: TENSO !

  • jardileno

    vish

  • Pra conseguir rodar o script de teste tive que adicionar três includes, pois tava dando erro na compilação:

    pastie-4064638.cpp:14: error: ‘time’ was not declared in this scope
    pastie-4064638.cpp:17: error: ‘getpid’ was not declared in this scope
    pastie-4064638.cpp:21: error: ‘memcmp’ was not declared in this scope

    Adicionei as três linhas:

    #include
    #include
    #include

    E foi necessário mudar a extensão do arquivo de .cpp para .c:

    mv pastie-4064638.cpp pastie-4064638.c

    Depois compilar conforme o @lamas disse:

    gcc pastie-4064638.c -o pastie-4064638

    • Opa, falhou ali os caracteres:

      #include time.h
      #include string.h
      #include unistd.h

    • Ou pode executar pelo g++, que ai não precisa mudar a extensão. A extensão cpp é de C++, por isso dá galho no gcc.
      Mas os três includes precisam sim! Valeu ae pela dica.

  • Jiraya-sama

    Usem o mongodb

  • Pois é, meus servidores são CentOS 6.2 e estão sempre atualizados. Também uso as regras abaixo nos meus projetos.

    http://informatica.com.br/profiles/blogs/usando-o-htaccess-parte-2-seguranca

Deixar comentário:

Leia | Política de Comentários.