Cada vez mais serviços estão sendo direcionados para plataforma web, sendo assim acabamos ficando dependentes ainda mais destas aplicações. Estes sistemas tem que ser cada vez mais onipresentes (quero acessá-los de qualquer lugar – cloud) confiáveis (quero que ele faça o que ele precisa fazer) e ágeis (quero que façam isso rápido!).
Qual a consequência disto? A consequência imediata é: sistemas cada vez mais complexos. Quando digo complexo não me refiro tão somente a complexidade do código fonte ou o seu desenvolvimento, mas também a complexidade inerente ao serviço em si. Cada vez mais APIs, cada vez mais plugins, cada vez mais sistemas interconectados e interdependentes.
Uma vez que a complexidade entrou na equação ela traz o seu efeito colateral: situações inesperadas. Quando temos um ciclo de vida em nossa aplicação que não contempla o devido cuidado com segurança, temos implicações de diversos níveis. A maior delas é que em geral problemas que a primeira vista são simples e pequenos, acabam se tornando verdadeiros pesadelos.
Análise Estática do Código consiste basicamente em antever problemas de segurança efetuando uma auditoria no código, sem executá-lo. Isso pode se tornar uma tarefa muito trabalhosa, especialmente quando o desenvolvedor não tem experiência com segurança e se não existe um framework de desenvolvimento seguro em uso no projeto.
As aplicações web são alvos constantes de ataques, quase que 24 horas por dia. Temos estatiscas de que muitas vezes, 60% do tráfego diário que chega a um website é gerado por bots que em sua grande maioria estão procurando por scripts vulneráveis para efetuar ataques, comprometer o servidor e a aplicação e fazê-la parte de sua rede de zumbis. Não seria nada legal ter seu e-Commerce em uma lista de hosts que estão disseminando Malwares para os usuários. Isto pode comprometer gravemente seus negócios.
Para auxiliar desenvolvedores neste árduo processo de análise estática, temos algumas aplicações muito interessantes e que podem realmente trazer a tona, muitas vezes problemas de segurança que não eram imaginados durante o desenvolvimento. Talvez aquele “warning” que seu compilador cuspiu na tela e você pensou “ah mas é apenas um warning, não tem nada de grave ai..” esconda muito mais do que imagina J
RIPS – Analisador Estático de vulnerabilidades em código fonte de Scripts PHP
RIPS é uma ferramenta escrita em PHP para encontrar vulnerabilidades em aplicações PHP utilizando o conceito de análise estática do código. Utilizando tokenização e parseando todos os arquivos de código PHP, ele consegue transformar seu código fonte PHP em program model e detectar sinks sensíveis (pontecialmente funções vulneráveis) que poderiam ser manipuladas por um userinput (influenciada por um usuário malicioso) durante o fluxo do programa. Além disto, baseado na estrutura de output de uma vulnerabilidade encontrada, RIPS também oferece um framework integrado de code audit para que você possa fazer uma análise manual.
Entre algumas das features apresentas pelo RIPS temos:
RIPS consegue identificar por padrão diversas vulnerabilidades em sua aplicação, em sua grande maioria as listadas no OWASP Top 10 são identificadas. Segue abaixo uma pequena lista das principais vulnerabilidades identificadas pela aplicação:
- Code Execution
- Command Execution
- Cross-Site Scripting
- Header Injection
- File Disclosure
- File Inclusion
- File Manipulation
- LDAP Injection
- SQL Injection
- XPath Injection
A interface de auditoria de código do RIPS consiste de algumas funcionalidades muito interessantes, entre elas podemos citar:
- Estatísticas referentes ao Scans e as vulnerabilidades da aplicação
- Linhas de código vulneraveis são agrupadas
- Descrição das Vulnerabilidades com exemplo de código, PoC e patch
- Engine que permite a criação do Exploit para explorer a vulnerabilidade encontrada
- Exibição gráfica de arquivos (conectada pelos includes)
- Exibição gráfica de funções (conectadas pelas calls)
- userinput list (parámetros da aplicação)
- visualização do código fonte com destaque em funções e parametros
Entre muitas outras que permitem que você faça o debug da aplicação utilizando inclusive expressões regulares. Efetuando a análise estática do código com RIPs, você consegue rapidez ao executar a análise (executar uma análise estática manualmente pode ser dolorosamente demorado). Você consegue identificar blind/non-blind SQL exploitation, detectar backdoors em seu código entre outras vantagens.
Aplicação sendo analisada – Temos os resultados Preliminares com o número de funções vulneráveis.
Visualização gráfica dos Arquivos – Interligação ocorre através dos Includes.
Engine permite criar Exploits para gerar PoC da vulnerabilidade.
Download + Instalação
O Download pode ser feito a partir do site http://rips-scanner.sourceforge.net
Para utilizar o RIPs você precisa primeiramente de um webserver local com suporte a PHP (tendo em vista que você é um desenvolvedor PHP, você já deve ter um J ).
Feito isto basta baixar a ultima versão estável , extrair os arquivos em seu Document Root do servidor web e acessar a interface, disponível em: <http://ip_servidor/rips>, e iniciar as análises.
Fonte:y2h4ck