DevSecOps

4 mai, 2012

Falha crítica de segurança é encontrada no PHP

Publicidade

Uma falha recente encontrada no PHP e liberada para o público por engano pode deixar qualquer página no servidor aberta para inserção de código malicioso. A vulnerabilidade, que afeta apenas servidores rodando o PHP em modo CGI, foi descoberta por um time de hackers durante uma competição.

A essência da falha é que hoje é possível chamar parâmetros do PHP direto pela URL. Por exemplo, ao acessar o endereço http://localhost/index.php?-s, o servidor executaria o PHP com o parâmetro -s, que exibe o código-fonte do arquivo, e não o HTML gerado por ele. Só isso já seria problema suficiente (afinal, é comum inserir dados como senhas do banco de dados no código fonte), mas o time que descobriu a falha também percebeu que ela também permite inserir código malicioso no arquivo e executá-lo.

Descobertas desse tipo normalmente são enviadas para os desenvolvedores que primeiro resolvem o problema e lançam uma atualização para só então os veículos anunciarem a falha e a correção, mas por uma falha humana o bug foi acidentalmente enviado como “público” no sistema de bugs do PHP.

Embora o time de desenvolvedores já tenha liberado uma correção, há informações de que elas não resolvem totalmente o problema. O ideal é usar o PHP de outra forma que não em modo CGI (em modo FastCGI essa falha não acontece) ou incluir uma regra para que o Apache bloqueie URLs com “-” no arquivo .htaccess, evitando assim o uso de parâmetros do PHP. A regra é esta abaixo:

RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteRule ^(.*) $1? [L]

Uma nova atualização deve sair em breve, já com uma correção mais eficiente. Até lá, todo cuidado é pouco.

Por Paulo Graveheart