Fuzzing Para Pruebas de Seguridad en Software

Embed Size (px)

Citation preview

  • FuzzingparapruebasdeseguridadensoftwareA. Alejandro Hernndez Hernndez

    [email protected]

    Muchasdelascompaassabenqueproduciryentregarparchesparacorregirerroresensusproductosesmscaroqueagregarmscalidadalaetapadedesarrollodesdeelprincipio,yanasmuchos(sinoesquelamayora)delosproductossonlanzadosconfallosdeseguridadcausandoasungrannmerodeintrusionesinformticas.Unodelosmtodosusadosparaencontrarfallosdeseguridadeselfuzzing,elcualesunprocesosemiautomticoquecombinatcnicasdepruebascomofuncional, decajanegra,exploratoria,seguridadyresistenciaparadescubrirfallosdeseguridad.Elfuzzing es usadopor compaas de software y proyectos de cdigo abierto paramejorarlacalidaddesusoftware;poranalistasdevulnerabilidadesparadescubriryreportarnuevosfallos;porhackersparaencontrarysecretamenteexplotarsoftware.Sinembargo,cuandosecomparanlastcnicastradicionalesdeprubasdesoftware,anauditoriasdecdigofuentee ingeniera inversa,el fuzzingseencuentramsefectivo y eficiente en costos. En esta revisin tambin se presentan resultadosobtenidosdeestudiosanterioresasoftwaredediferentessistemasoperativos.

    Palabrasclave:pruebasdesoftware,pruebasdeseguridad,pruebasderesistencia,pruebasdifusas,pruebasdesoftware,ingenieradesoftware.

    Las pruebas de software son una parte esencial en el proceso de desarrollo desoftware, yaqueenestaparteesdondesedetectanfallosantesdequeel softwaresealanzadoalmercado.Existendiferentesmetodologasparaprobarsoftware,entrelasquedestacanlaspruebasdecajablancaycajanegra.Laprimeradeellassecaracterizaporelhechodequesetieneconocimientodelcomportamientodelsoftwareensi,yaseaatravsde cdigo fuente o informacin extra. En la segunda (caja negra) no se tiene ningnconocimientodelaestructurainternadeunprograma,simplementeseconocensusentradasysussalidas.

    Engeneral, laetapadepruebasdesoftwarepuedeserdefinidacomoelprocesousadoparaayudaraidentificarfallas,nivelderobustez,seguridadycalidadenelsoftware.Entrminosmuygenerales,laetapadepruebasnospermiteconocerlabrechaentrelacalidaddelsoftwaredeseadoconlacalidadactual.

    Muchas de las compaas saben que producir y entregar parches para corregirerroresensusproductosesmscaroqueagregarmscalidadalaetapadedesarrollodesdeelprincipio,yanasmuchos(sinoesquelamayora)delosproductossonlanzadosconfallosdeseguridad.

  • La mayora de intrusiones en sistemas informticos son el resultado devulnerabilidadesenlasaplicaciones.Ladeteccineidentificacindedichosfallosesunprocesointeresantenosoloparaexpertosenseguridadyadministradoresdesistemas,sinoquetambinparaintrusosqueintentanpenetrarsistemasinformticos.Unavezquelosfallossondetectados,los exploits paradichasvulnerabilidadespuedensercreadosylosintrusospuedenpenetrarunaltonmerodesistemasenInternet,locualesunaamenazapotencialparatodoslosusuariosdesistemasdeinformacin(Juranic,2006).

    En las siguientes tablas se muestran las ltimas estadsticas de incidentes deseguridad reportados en Mxico (2005) segnel Equipo de Respuesta a Incidentes deSeguridadenCmputodelaUNAM(UNAMCERT):

    Ao 2005Incidentes 2635

    Tabla1:Totaldeincidentesen2005.

    Sistemaoperativo PorcentajeWindowsXPPro 46.73WindowsXPHome 18.47Windows2000Pro 13.04WindowsME 5.43Windows98 5.43Windows2000Server 3.26Cobalto 4.21WindowsNT 2.17Linuxkernel2.4.x 2.17

    Tabla2:EstadsticasdeincidentesporSistemaOperativo.

    Lamayoradeestos incidentes hansidopor laexplotacindesoftwarevulnerable, loscualespodranserreducidossiseaplicarandiferentespruebasdeseguridad, entreellasfuzzing.

    Existen varios mtodos que son usados para encontrar fallos de seguridad, lossiguientessonalgunosdeellos:

    Anlisisdecdigofuente Anlisisestticodelarchivobinario Anlisisdinmicodelarchivobinario(entiempodeejecucin) Fuzzing Mtodoshbridos(variascombinacionesdelosmtodosmencionadosarriba)

    Aunquetodoslosmtodosmencionadosarribapuedendetectarfallosdeseguridad,algunosdeellossonmejoresqueotros.Enlosltimosaos, sehadadoespecialatencina latcnicallamadafuzzing(Juranic,2006).

  • En el artculo de 2006, DeMott define fuzzing como la tcnica de prueba desoftwareutilizadaparaencontrarfallosenelsoftware,lamayoradeellosrelacionadosconseguridad.Elfuzzingesunprocesosemiautomtico(requiere interaccinhumana)quecombina tcnicas de pruebas como funcional, de caja negra, exploratoria, seguridad yresistencia.Elfuzzingcomplementalaspruebasdesoftwaretradicionales(manualmente)paradescubrircombinacionesnoprobadasdecdigoydatos,combinandoelpoderdedatosaleatorios,conocimientodeprotocolosoestructurasdedatosyheursticadeataque.Elfuzzingesusadoporcompaasdesoftwareyproyectosdecdigoabierto,porejemploMicrosoftyLinux,paramejorarlacalidaddesusoftware;poranalistasdevulnerabilidadesparadescubriryreportarnuevosfallos;porhackersparaencontrarysecretamenteexplotarsoftware. Sin embargo, cuando se comparan las tcnicas tradicionales de prubas desoftware,anauditoriasdecdigofuenteeingenierainversa,elfuzzingseencuentramsefectivoyeficienteencostos(DeMott,2006).

    Existeungrannmerodeentesquepuedenserfuzzeados,entrelosmscomunesseencuentranlossiguientes:

    FormatosdeArchivo Entradasdedatosestndar ProtocolosdeRed(CapadeAplicacin) PilasdeProtocolos Argumentos VariablesdeEntorno

    AunqueBurns(2006)nosmuestratambinmuchoselementosfuzzeablesenmecanismosinternosdelsistemaoperativoWindowstalescomo,eventos,archivos,entradasderegistro,tuberasconnombre,semforos,seccionescompartidas,temporizadores,entreotros.Otrocomponente de software que comnmente se fuzzea en estos das son los controlesActiveX,dondemuchosdeloscualessoncompletamenteinseguros(Wysopal,Nelson,Zoviy Dustin, 2007). Actualmente existen muchas formas de prueba ms, tales como laaplicacindefuzzingenlasconvencionesdellamadasdel lenguajeCquenosmuestraLindig (2005). Es posible encontrar en las referencias otros casos de estudio como:obteniendo seal fatal en gcc [6], mltiples fallos en Adobe Acrobat Reader [7] ydesbordamientodebufferenWarFTPD[8].

    Estudiosanteriores([4], [12]y[13]) demostraronquegrancantidaddesoftwareexterno y a la vez parte de sistemas operativos ampliamente usados como MicrosoftWindows,MacOSybasadosenUNIX,tuvieronfallasluegodehaberaplicadopruebaspormediodefuzzing.Estaesunaseriedeestudiosiniciadaen1990,endondeseestudiaronvariosprogramasdelneadecomandosdeUNIX.Luego,latercerpublicacinfuen2000,donde se aplicaban pruebas pero en sistemas operativos basados en Windows NT.Finalmente,lacuartapublicacinseorientaaplicacionesenelsistemaoperativoMacOS.Laexaminacinderesultadosdemuestranmuchoserroreshechosporlosprogramadores.Muchos de estos errores se relacionan con reas bien conocidas por programadoresexperimentados(Miller,FredriksenySo,1990).

  • Elfuzzingtambinesconocidocomopruebasaleatorias(Randomtestingeningls),lascualessonelprocesodeseleccionardatosaprobardeformaaleatoriadeacuerdoaladistribucin de probabilidad uniforme y enviar estos datos al dominio de entradas delprograma a probar. Uniforme significa que cada punto del dominio tiene la mismaprobabilidad de ser seleccionado (Gotlieb y Petit, 2006). Un generador de datos parapruebasaleatoriasdebeseruniformecuandocadapuntodeldominiodeentradatienelamismaprobabilidaddeserescogido.Sinembargo,esbienconocidoqueesauniformidadsolopuedeseraproximadaenmquinasdeterminsticas(comolascomputadorasusuales)ysolo pseudogeneradores de nmeros aleatorios pueden ser empleados, aunquemuchasveceslospseudogeneradoresdenmerosaleatorioshacenusodemtodoscongruencialeslinearesconloquesepierdeunaestrictauniformidad.

    Por consecuencia, a lo largo de los aos las tcnicas de fuzzing han idoevolucionando. Se han propuesto diferentes mtodos, as como tambin comparacionesentrelosmismos.EnelestudiodeHildebrandtyZeller(2000)planteanquesedebedehacerunusolimitadodecasosdeprueba,esdecir,seleccionarsololoscasosquedetectenfallosefectivamente[6].Dentrodesusestudio,tambinplanteanque,dadaunaseriedecasosdeprueba,el programafalla,peroquecasodepruebayquepartedeellaes laresponsable de ese fallo en particular?. Por consiguiente, disearon un algoritmo quegeneralizaysimplificaelcasodepruebamnimoparaproducirelfallo.

    Estudiosprevios[2]demuestranquelosmtodosadaptativossonmsefectivosenladeteccindefallosquelaspruebasaleatoriasnormales.Yaquelosmtodosadaptativossontansimplescomolosmtodosnormales,yanaspreservanciertogradodealeatoriedad,sepuededecirquelosmtodosadaptativospodranserunreemplazoefectivolosmtodosnormalesdepruebasaleatorias(ChenyKuo,2006).

    Existentambindiferentesmtodosadaptativos,deloscuales,segnenunestudioemprico [4], los autores confirman que los mtodos basado en distancia y pruebaaleatoriarestringidasondefinitivamentelosmejoresensurama.Estosmtodosdeberanserusadosencasosdondeunasolaejecucindelsistemasometidoapruebastomemuchotiempo(ForresteryMiller,2000).

    BUSQUEDADELALITERATURA

    LaprimerbsquedahechafuenlaBibliotecaDigitaldelaACMconlassiguientespalabras clave: +fuzz +testing, lo cual nos arroj 199,787 fichas pero no toda eranreferidasapruebasdesoftware.Elmismonmeroderesultadosnosarrojanbsquedascondiferentes criterios, por ejemplo, +fuzzing +"random testing" y +fuzz +testingsoftware. Entonces, procedimos a hacer una bsqueda avanzada con el texto: +fuzz+testing solamente en el resumen obteniendo as solo 241 resultados. Analizando losresultados y aplicando los criterios de inclusin y exclusin descritos mas adelante,finalmentecontamoscon10publicacionesdelaACM.

  • Comosegundafuente,seacudialaBibliotecaDigitaldelaIEEEbuscandoconlaspalabrasclave:randomtestingobteniendo100fichas,aunquemuypocasrelacionadasconIngeniera deSoftware. Luegode analizar algunos de los resultados, solamente sepudieron revisar pequeos resmenes de cada investigacin, ya que es necesario sermiembrodedichabiblioteca.

    Finalmente, se decidi buscar en fuentes externas tales como organizaciones yempresasquehaceninvestigacinendicharama.Luegodedichabsqueda,seobtuvountotalde5publicacionesconlassiguientesfuentes:

    AppliedSec Netricsecurityresearchgroup iSECPartners IlfigoSecurity TheArtofSoftwareSecurityTesting(Libro)

    Yesporelloquetambintomamosencuentadichaspublicacionesdebidoalaltocontenidoinformativodelasmismas.

    Paraobtenerlosresultadosdeseados,seaplicaronlossiguientescriteriosdeinclusinyexclusinparaobtenerlosartculosparaseranalizados.Cadaartculodebecumpliralgunodelossiguientescriterios:

    EltrminofuzzingdebeestarcompletamenteenfocadoalSoftware. Eltrmino fuzzing debeestarenfocadoalaetapadepruebasenlaIngenierade

    Software. Estarrelacionadoconcualquiertipode fuzzing comoprotocolos,datos,entradas,

    archivos,sistemasdearchivo,argumentosyvariablesdeentorno.

    Actualmente, lamayoradepublicacionesconaltoniveldecalidadlaspodemosencontrarenBibliotecasdigitalesdeasociacionesprofesionalestalescomolasdelaACMylaIEEEpormencionaralgunas.Esporello,quecomobasedeconocimientofundamentalen Ciencias de la Computacin utilizamos dichas fuentes de informacin, ya que losartculosallpublicadosfueronpreviamenterevisadosporexpertosdependiendodeltemadelapublicacin.

    Aspues,utilizamoscomoprimerrecursolaBibliotecadigitaldelaACMparabuscarpublicacionesyartculosrelacionadosconnuestrotemadeinters.Nuestrasegundafuentedeinformacinfuerondiversoscentrosdeinvestigacin,universidades,empresas,investigadoresindependientes,etc.Quetienenaltogradodeconocimientoendicharamadelaciencia,yporsupuesto,sumaterialexpuestocontieneunaltogradodeconfiabilidadyaportacinalamateria.

    Finalmente,contamoscondiezpublicacionesdelaBibliotecaDigitaldelaACMyotrascincodefuentesexternasquenopublicaronsutrabajoenlaACM,quehacenuntotalde15publicacionesparaseranalizadas.

  • RESULTADOS

    Lasiguienteinformacineselresultadodediferentesinvestigacionesenlamateria,lascualesmuestranelimpactoquediferentesvariablespuedenocasionarendistintasreasdetecnologasdeinformacin.Lassiguientestablasmuestranalgunosdelosresultadosobtenidosenlostresestudioscitadosanteriormente([4],[12]y[13]).

    Tabla3(parte1):Listadeutilidadesprobadasylossistemassobreloscualesfueronprobadas.

  • Tabla3(parte2):Listadeutilidadesprobadasylossistemassobreloscualesfueronprobadas.

    Comosepuedeapreciarenlatablatres,seprobaron85aplicacionesenplataformaVAX,delascuales25fallaron(29.4%);83aplicacionesenSun,delascuales21fallaron(25.3%);75aplicacionesenHP,delascuales25fallaron(33.3%);55aplicacioneseni386,delascuales16fallaron(29.1%)yfinalmente49aplicacionesenAIX1.1,delascuales12aplicacionesfallaron(24.5%).

  • Enlasiguientepublicacin,delamismaseriedeestudios,semuestranlosresultadosobtenidosluegodeunaetapadepruebasaleatoriasalsistemaoperativoWindowsNT4.0.Estosresultadossemuestranenlatablacuatro,loscualesnosdicenquecuandoseprobaronlasaplicacionesconlaAPISendMessage,el72.7%delosprogramasmurieronyel9%quedaroncolgados,dandountotalde81.7%deprogramasfallados.ConlaAPIPostMessage,el90.9%delosprogramasmurieronyel6%quedaroncolgados,dandountotalde96.9%deprogramasfallados.Finalmente,probandoconeventosdelsistemaaleatorios,el21.2%delosprogramasmurieronyel24.2%quedaroncolgados,dandountotalde45.4%deprogramasfallados.

    Tabla4:ResumendelosresultadosdepruebasenWindowsNT4.0.=muerte,=cuelgue

  • Finalmente, en la tablascincoyseis se muestran los resultados aplicadosa lasutilidades de lnea de comandos y los resultados aplicados a las utilidades grficasrespectivamente.EstaspruebasfueronhechasbajoelsistemaoperativoMacOSX10.4.3.En la tabla cinco se hizo un anlisis comparativo de fallos en programas de lneadecomandosentreLinuxyMacOS,resultandoesteltimoconmenosfallosqueelprimeroyaquede54aplicacionesprobadas,5murieronosecolgaron(9%),mientrasqueenMacOSseprobaron135aplicacionesysolo10murieronosecolgaron(7%).

    Tabla5:Resultadosdepruebasdeutilidadesenlneadecomandos.=muerte,=cuelgue

  • Enlatablaseis,semuestranlosresultadosobtenidosdelaspruebasenelmismosistemaoperativo(MacOSX10.4.3)perosoloautilidadesconinterfazgrfica.EnestapruebaseutilizaronunagranseriedeprogramasdeApple,ascomotambindeotrosproveedoresmuyconocidoscomoMicrosoft,Adobe,Mozilla,entreotros.Entotalseprobaron30aplicaciones,delascualescasilamayoratuvofallos(22aplicaciones),correspondiendoasal73%deaplicacionesconfallos.

    Tabla6:Resultadosdepruebasdeutilidadesconinterfazgrfica.=muerte,=cuelgue

    Estos resultados muestran claramente que existe un alto porcentaje de fallos enmuchasdelasaplicacionesprobadas,sinembargo,dacondalasvulnerabilidadessehacenmscomplejasydifcilesdeexplotar,yesahendondeelfuzzingentraenjuego.

  • DISCUSION

    CONCLUSIONComosepuedever,elimpactoquecausanloserroresdeseguridadenelsoftwarees

    muygrande.Esporelloquesehancreadonuevosmtodoscadavezmscomplejosparadeteccinycorreccindeerrores,entreelloselfuzzing.Comosepuedeanalizarenlosresultadosdeestudiosprevios,elnmerodeerroresencontradospormediodefuzzingsoncadavezmayores,ymientrassigaexistiendolafaltadepruebasexhaustivasantesdelanzarunsoftwarealmercado,siempreexistirlaposibilidaddequedichoproductotengaerroresdeseguridadquepuedanserexplotadospormuchosdelgrannmerodeamenazasquealbergaelInternet.

    Las herramientas de deteccinde errores conocidas comofuzzers, son de granayudaenlaetapadepruebasdelsoftwareyenelanlisisdevulnerabilidades.Losmejoresfuzzers de hoy en da son desarrollados por probadores de software y analistas devulnerabilidadesconexperiencia.Estosincluyendescripcionesautomticasdeprotocolos,aleatoriedad,heurstica,seguimiento/depuramiento,logueo,yms.

    Esporelloqueesrecomendableaplicarbuenasprcticasdeprogramacin,paraasaumentarlacalidaddelsoftware,porconsecuente,seguridad.

    INVESTIGACIONFUTURAEstetemacadavezmsesttomandosumaimportancia,lograndoasquecentrosde

    investigacin e investigadores independientes se enfoquen en nuevos mtodos eimplementacionesdefuzzing,llamadosfuzzers.

    Entredichosmtodosdestacaeldelasimplificacindeundominioespecficoymtodosadaptativos, es porelloquesedebeponermayor importanciaaestos tpicos.Sabemosqueunaherramientaparalaimplementacindelosfuzzerseslageneracindenmerosaleatorios,yesporelloquelaaleatoriedadinteligenteesotrotemadeestudioimportante.

    Actualmenteseencuentrandecenasdefallosdiariamenteenlistasdecorreosobreseguridad,ycadavezesmayorelnmerodeerroresdedesbordamientodeenteros(Integeroverflows).Unodelosvectoresdeexplotacindedichosfallosesatravsdeformatosdearchivo.ElautoractualmenteestdesarrollandounfuzzerparaformatosdearchivoELF,yaqueesuntpiconoabordadoeneltemadefuzzingyporconsiguienteesuninteresantepuntoparaanlisisdevulnerabilidades.

  • REFERENCIAS

    [1]Burns,J.(2006).Fuzzingwin32interprocesscommunicationmechanisms.PresentadoenBlackHat2006Conference,LasVegas,NV,USA.

    [2]Chen,T.Y.yKuo,F.C.(2006).Isadaptiverandomtestingreallybetterthanrandomtesting.EnproceedingsoftheFirstInternationalWorkshoponRandomTesting(RT06),Julio20,2006,Portland,ME,USA.

    [3]DeMott,J.(2006).Theevolvingartoffuzzing.Recuperadoel23demarzode2007,dehttp://www.appliedsec.com/files/The_Evolving_Art_of_Fuzzing.pdf

    [4]Forrester,J.yMiller,B.(2000).AnempiricalstudyoftherobustnessofWindowsNTapplicationsusingrandomtesting.Enproceedingsofthe4th

    USENIXWindowsSystemSymposium,August2000,Seattle,USA.

    [5]Gotlieb,A.yPetit,M.(2006).Pathorientedrandomtesting.EnproceedingsoftheFirstInternationalWorkshoponRandomTesting(RT06),Julio20,2006,Portland,ME,USA.

    [6]Hildebrandt,R.yZeller,A.(2000).Simplifyingfailureinducinginput.EnProceedingsofISSTA00,pginas135145,Portland,Oregon.

    [7]Jorgensen,A.A.(2003).Testingwithhostiledatastreams.ACMSIGSOFT,SoftwareEngineeringNotes,28(2).

    [8]Juranic,L.(2006).Usingfuzzingtodetectsecurityvulnerabilities.Recuperadoel23demarzode2007,dehttp://www.infigo.hr/files/INFIGOTD20060401Fuzzingeng.pdf

    [9]Lindig,C.(2005).RandomtestingofCcallingconventions.EnproceedingsofAADEBUG05,September1921,2005,Monterey,California,USA.

    [10]Marquis,S.,Dean,T.R.yKnight,S.(2005).SCL:Alanguageforsecuritytestingofnetworkapplications.Kingston,Canada.

    [11]Mayer,J.ySchneckenburger,C.(2006).Anempiricalanalysisandcomparisonofrandomtestingtechniques.Ulm,Alemania.

    [12]Miller,B.,Cooksey,G.yMoore,F.(2006).AnempiricalstudyoftherobustnessofMacOSapplicationsusingrandomtesting.Madison,USA.

    [13]Miller,B.,Fredriksen,L.ySo,B.(1990).StudyofthereliabilityofUNIXutilities.ACMCommunications,33(12),3244.

  • [14]Sprundel,I.V.(2005).Fuzzing:Breakingsoftwareinanautomatedfashion.Recuperadoel23demarzode2007,dehttp://events.ccc.de/congress/2005/fahrplan/attachments/582paper_fuzzing.pdf

    [15]Wysopal,C.,Nelson,L.,Zovi,D.D.yDustin,E.(2007).Localfaultinjection(cap.11)enTheartofsoftwaresecuritytesting,pginas201229.AddisonWesleyProfessional.Recuperadoel23demarzode2007,dehttp://www.securityfocus.com/images/infocus/Wysopal_CH11.pdf