2

Click here to load reader

Sobre as limitações do fuzzing black-box de aplicações Web

Embed Size (px)

DESCRIPTION

O fuzzing é um dos métodos mais usados para a descoberta de vulnerabilidades em aplicações, tendo como principais características sua eficiência e bom custo-benefício em relação à outros métodos. Apesar disso, os fuzzers geralmente têm dificuldades para encontrar vulnerabilidades que não estão localizadas na “superfície” da aplicação.Atualmente existem vários fuzzers para aplicações Web, tanto comerciais quanto Open Source. Eles podem ser do tipo white-box, quando requerem acesso ao código fonte da aplicação para guiar o teste, ou black-box, quando o código fonte da aplicação não é utilizado. Os fuzzers black-box para aplicações Web, além de sofrerem das mesmas limitações inerentes a qualquer um deste tipo, têm que lidar com um ambiente mais restrito que, entre outras coisas, não fornece acesso nem ao código nativo ou bytecode da aplicação.Quando contratadas para realizar um teste de penetração em uma aplicação Web, dificilmente as empresas de segurança recebem o código fonte da aplicação que será testada. Isso mostra a importância do desenvolvimento de ferramentas para auxiliar na descoberta de vulnerabilidades em testes do tipo black-box.Este artigo descreve algumas limitações do fuzzing black-box de aplicações Web e busca provocar uma reflexão sobre formas de melhorar esse tipo de teste.

Citation preview

Page 1: Sobre as limitações do fuzzing black-box de aplicações Web

O fuzzing eacute um dos meacutetodos mais usados para a descoberta de vulnerabilidades em aplicaccedilotildees tendo como principais caracteriacutesticas sua eficiecircncia e bom custo-benefiacutecio em relaccedilatildeo agrave outros meacutetodos Apesar disso os fuzzers geralmente tecircm dificuldades para encontrar vulnerabilidades que natildeo estatildeo localizadas na ldquosuperfiacutecierdquo da aplicaccedilatildeo

Atualmente existem vaacuterios fuzzers para aplicaccedilotildees Web tanto comerciais quanto Open Source Eles podem ser do tipo white-box quando requerem acesso ao coacutedigo fonte da aplicaccedilatildeo para guiar o teste [3] ou black-box quando o coacutedigo fonte da aplicaccedilatildeo natildeo eacute utilizado [4-8] Os fuzzers black-box para aplicaccedilotildees Web aleacutem de sofrerem das mesmas limitaccedilotildees inerentes a qualquer um deste tipo tecircm que lidar com um ambiente mais restrito que entre outras coisas natildeo fornece acesso nem ao coacutedigo nativo ou bytecode da aplicaccedilatildeo

Quando contratadas para realizar um teste de penetraccedilatildeo em uma aplicaccedilatildeo Web dificilmente as empresas de seguranccedila recebem o coacutedigo fonte da aplicaccedilatildeo que seraacute testada Isso mostra a importacircncia do desenvolvimento de ferramentas para auxiliar na descoberta de vulnerabilidades em testes do tipo black-box

Este artigo descreve algumas limitaccedilotildees do fuzzing black-box de aplicaccedilotildees Web e busca provocar uma reflexatildeo sobre formas de melhorar esse tipo de teste

Como funcionam as ferramentas que fazem esse tipo de fuzzingOs fuzzers black-box de aplicaccedilotildees Web operam sobre requisiccedilotildees HTTP Cada elemento de uma requisiccedilatildeo GET POST etc pode ser modificado na tentativa de descobrir alguma vulnerabilidade na aplicaccedilatildeo-alvo [1] A anaacutelise dos resultados eacute feita em cima das respostas retornadas pelo servidor onde geralmente eacute usado um conjunto de expressotildees regulares para identificar a ocorrecircncia de palavras-chave que caracterizam a vulnerabilidade sendo testada ou alguma funccedilatildeo hash para comparar essas respostas

Diferenccedilas entre o fuzzing black-box de aplicaccedilotildees Web e DesktopO fuzzing black-box de aplicaccedilotildees Web tem uma grande desvantagem em relaccedilatildeo ao de aplicaccedilotildees Desktop que eacute a impossibilidade de acesso ao coacutedigo server-side da aplicaccedilatildeo Esse coacutedigo nunca eacute disponibilizado para os usuaacuterios exceto quando alguma vulnerabilidade descoberta na aplicaccedilatildeo permite o download de qualquer arquivo do servidor O acesso ao coacutedigo da aplicaccedilatildeo

favoreceria a utilizaccedilatildeo de vaacuterias teacutecnicas de teste de software que vatildeo da anaacutelise da cobertura do coacutedigo obtida com a execuccedilatildeo de um caso de teste ateacute algoritmos para a geraccedilatildeo de casos de teste com maior probabilidade de detectar vulnerabilidades

Jaacute no fuzzing black-box de aplicaccedilotildees Desktop eacute sempre possiacutevel analisar o coacutedigo nativo ou bytecode do executaacutevel o que permite uma conversatildeo para o fuzzing white-box dada a capacidade de se realizar anaacutelises sobre esse tipo de coacutedigo Com isso consegue-se aplicar vaacuterias teacutecnicas para obter uma melhor cobertura do coacutedigo da aplicaccedilatildeo como a Execuccedilatildeo Simboacutelica que tecircm sido bastante utilizada em pesquisas acadecircmicas [11-13] e em algumas ferramentas comerciais ou Open Source [2]

Outra grande desvantagem estaacute relacionada com a forma como os casos de teste bem-sucedidos satildeo detectados Nas aplicaccedilotildees Desktop isso geralmente eacute feito com o monitoramento da aplicaccedilatildeo-alvo por meio de depuradores para identificar a ocorrecircncia de exceccedilotildees tais como violaccedilotildees de acesso ao ler ou escrever dados em uma certa posiccedilatildeo na memoacuteria Algumas ferramentas mais sofisticadas tambeacutem satildeo usadas como o plugin exploitable [9] do WinDBG e soluccedilotildees que usam Taint Analysis para detectar se dados oriundos do usuaacuterio satildeo usados nas instruccedilotildees que causaram a exceccedilatildeo [10]

No fuzzing de aplicaccedilotildees Web essa detecccedilatildeo eacute feita com base nas respostas para as requisiccedilotildees retornadas pelo servidor [1] Os cabeccedilalhos HTTP o conteuacutedo da resposta e ateacute mesmo outros paracircmetros como o tempo decorrido entre o envio da requisiccedilatildeo e o recebimento da resposta satildeo analisados na procura por indiacutecios que revelem a presenccedila de alguma vulnerabilidade

Outra diferenccedila eacute que a entrada que seraacute enviada para a aplicaccedilatildeo Web geralmente precisa trafegar pela Internet e isso aumenta o tempo necessaacuterio para se realizar o fuzzing Jaacute no fuzzing de aplicaccedilotildees Desktop o teste eacute feito localmente em geral

ConclusotildeesApesar do fuzzing ser uma teacutecnica eficiente para a identificaccedilatildeo de vulnerabilidades natildeo eacute difiacutecil perceber que as teacutecnicas utilizadas pela maioria das ferramentas hoje deixam passar uma grande quantidade de vulnerabilidades Precisamos de ferramentas que tragam melhores

White Papers

Sobre as limitaccedilotildees do fuzzing black-box em Aplicaccedilotildees Webpor Gabriel Quadros | Conviso Security Labs

resultados Assim a grande questatildeo eacute ldquoComo melhorar as ferramentas existentes para o fuzzing black-box de aplicaccedilotildees Webrdquo

Levando em consideraccedilatildeo os resultados das pesquisas acadecircmicas e as ferramentas disponiacuteveis para o puacuteblico em geral a resposta para essa pergunta pode natildeo ser faacutecil O que sabemos eacute que eacute preciso melhorar a forma como geramos os casos de teste e analisamos as respostas para as requisiccedilotildees

Aleacutem disso muito do que era feito com coacutedigo server-side haacute algum tempo atraacutes hoje estaacute sendo feito atraveacutes de coacutedigo client-side como JavaScript e Flash Essa mudanccedila provocada pela Web 20 possibilita que agora uma parte significativa do coacutedigo fonte total da aplicaccedilatildeo esteja disponiacutevel para a execuccedilatildeo de fuzzing white-box

Sobre o AutorGabriel Quadros comeccedilou a estudar seguranccedila da informaccedilatildeo em 2003 com interesse principal em engenharia reversa pesquisa de vulnerabilidades e desenvolvimento de exploits Atualmente cursa o uacuteltimo ano do Bacharelado em Ciecircncia da Computaccedilatildeo na Universidade Estadual do Sudoeste da Bahia - UESB e atua na Conviso IT Security como pesquisador do Conviso Security Labs Pode ser contatado pelo e-mail gquadrosconvisocombr

Referecircncias[1] Playing Web Fuzzing httpwwwslidesharenetconvisoplaying-web-fuzzing-h2hc-2009

[2] Fuzzgrind an automatic fuzzing tool httpseclabsorgfuzzgrind

[3] Tarantula Easy Fuzz Testing for Rails Apps httpvimeocom7967069

[4] Webslayer httpwwwowasporgindexphpCategoryOWASP_Webslayer_Project

[5] RFuzz The Web Destroyer httprfuzzrubyforgeorg

[6] Powerfuzzer httpwwwpowerfuzzercom

[7] Burp Intruder httpwwwportswiggernetintruder

[8] SPIKE Proxy httpwwwimmunityseccomresources-freesoftwareshtml

[9] exploitable Crash Analyzer httpmsecdbgcodeplexcom

[10] Crash Analysis with BitBlaze httpsecurityevaluatorscomfilespapersCrashAnalysispdf

[11] Automated Whitebox Fuzz Testing httpresearchmicrosoftcomen-usprojectsatgndss2008pdf

[12] Klee Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs httpwwwstanfordedu~englerklee-osdi-2008pdf

[13] EXE A System for Automatically Generating Inputs of Death Using Symbolic Execution httphcistanfordeducstrreports2006-01pdf

BRASIacuteLIA | SAtildeO PAULO | CURITIBA

Rua Marechal Hermes 678 CJ 32 CEP 80530-230 Curitiba PR

T (41) 30955736 | (41) 30953986 | wwwconvisocombr

White Papers

Page 2: Sobre as limitações do fuzzing black-box de aplicações Web

resultados Assim a grande questatildeo eacute ldquoComo melhorar as ferramentas existentes para o fuzzing black-box de aplicaccedilotildees Webrdquo

Levando em consideraccedilatildeo os resultados das pesquisas acadecircmicas e as ferramentas disponiacuteveis para o puacuteblico em geral a resposta para essa pergunta pode natildeo ser faacutecil O que sabemos eacute que eacute preciso melhorar a forma como geramos os casos de teste e analisamos as respostas para as requisiccedilotildees

Aleacutem disso muito do que era feito com coacutedigo server-side haacute algum tempo atraacutes hoje estaacute sendo feito atraveacutes de coacutedigo client-side como JavaScript e Flash Essa mudanccedila provocada pela Web 20 possibilita que agora uma parte significativa do coacutedigo fonte total da aplicaccedilatildeo esteja disponiacutevel para a execuccedilatildeo de fuzzing white-box

Sobre o AutorGabriel Quadros comeccedilou a estudar seguranccedila da informaccedilatildeo em 2003 com interesse principal em engenharia reversa pesquisa de vulnerabilidades e desenvolvimento de exploits Atualmente cursa o uacuteltimo ano do Bacharelado em Ciecircncia da Computaccedilatildeo na Universidade Estadual do Sudoeste da Bahia - UESB e atua na Conviso IT Security como pesquisador do Conviso Security Labs Pode ser contatado pelo e-mail gquadrosconvisocombr

Referecircncias[1] Playing Web Fuzzing httpwwwslidesharenetconvisoplaying-web-fuzzing-h2hc-2009

[2] Fuzzgrind an automatic fuzzing tool httpseclabsorgfuzzgrind

[3] Tarantula Easy Fuzz Testing for Rails Apps httpvimeocom7967069

[4] Webslayer httpwwwowasporgindexphpCategoryOWASP_Webslayer_Project

[5] RFuzz The Web Destroyer httprfuzzrubyforgeorg

[6] Powerfuzzer httpwwwpowerfuzzercom

[7] Burp Intruder httpwwwportswiggernetintruder

[8] SPIKE Proxy httpwwwimmunityseccomresources-freesoftwareshtml

[9] exploitable Crash Analyzer httpmsecdbgcodeplexcom

[10] Crash Analysis with BitBlaze httpsecurityevaluatorscomfilespapersCrashAnalysispdf

[11] Automated Whitebox Fuzz Testing httpresearchmicrosoftcomen-usprojectsatgndss2008pdf

[12] Klee Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs httpwwwstanfordedu~englerklee-osdi-2008pdf

[13] EXE A System for Automatically Generating Inputs of Death Using Symbolic Execution httphcistanfordeducstrreports2006-01pdf

BRASIacuteLIA | SAtildeO PAULO | CURITIBA

Rua Marechal Hermes 678 CJ 32 CEP 80530-230 Curitiba PR

T (41) 30955736 | (41) 30953986 | wwwconvisocombr

White Papers