Mitigando ataques contra o php5-cgi

O pesquisador Kingcope publicou um exploit para explorar uma falha de manipulação de strings sem o caracter ‘=’ que possibilita a execução de código remoto, presente no arquivo sapi/cgi/cgi_main.c do PHP5 de sistemas Debian e Ubuntu usando o php5-cgi.

As seguintes versões do PHP estão vulneráveis:

PHP 5.3.10
PHP 5.3.8-1
PHP 5.3.6-13
PHP 5.3.3
PHP 5.2.17
PHP 5.2.11
PHP 5.2.6-3
PHP 5.2.6+lenny16 with Suhosin-Patch

Para verificar a versão instalada no seu servidor basta digitar o comando dpkg -l php5

[email protected]:~$ dpkg -l php5

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  php5       5.5.3+dfsg-1 all        server-side, HTML-embedded script

Proteção

Os times de segurança das distribuições afetadas disponibilizaram informações sobre a vulnerabilidade e os pacotes corrigidos.

Debian Security

Ubuntu Security

Como proteção extra criei uma regra para o Ossec HIDS que identifica e bloqueia as tentativas de ataque, basta adicionar as linhas abaixo no arquivo /var/ossec/rules/local_rules.xml, ela foi encaminhada para a equipe de desenvolvimento do Ossec para aprovação.

<group name="web,appsec,attack">
   <rule id="160001" level="6">
     <if_sid>31100</if_sid>
    <url>/cgi-bin/php</url>
     <regex>"POST /cgi-bin/php</regex>
     <description>php5-cgi exploit
(http://www.exploit-db.com/exploits/29290/).</description>
 </rule>
</group>

Referências
Apache / PHP 5.x Remote Code Execution Exploit
CVE-2012-1823

Sucuri Security

Author: alexos