Pruebas Seguridad Basada Riesgos

download Pruebas Seguridad Basada Riesgos

of 16

description

Pruebas de seguridad del ciclo de vida del software

Transcript of Pruebas Seguridad Basada Riesgos

  • TEMA 2 : Seguridad en el

    ciclo de vida del

    software

    2.8. PRUEBAS DE SEGURIDAD BASADAS EN RIESGO

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Identificando los

    riesgos del sistema y

    diseando las pruebas

    en base a ellos, bajo la

    perspectiva de un

    atacante, un probador

    de seguridad de

    software puede

    enfocar

    correctamente las

    reas de cdigo

    donde un ataque

    probablemente

    pudiera tener xito.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    La seguridad en s misma es una caracterstica de la totalidad del sistema,

    por tanto no se refiere solamente a los mecanismos y elementos de

    seguridad.

    Las pruebas de seguridad necesariamente deben implicar dos tipos de

    aproximaciones:

    Pruebas de seguridad funcionales: pruebas de los mecanismos de

    seguridad para asegurar que su funcionalidad est correctamente

    implementada.

    Pruebas de seguridad perspectiva atacante: realizacin de pruebas

    de seguridad en base al riesgo motivadas por el entendimiento del

    estado del riesgo y por tanto del nivel de seguridad del sistema. Tratan

    de simular la actuacin de un posible atacante.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Los objetivos de las pruebas de seguridad basadas en el riesgo son los

    siguientes:

    Verificar la operacin confiable del software bajo condiciones hostiles de

    ataque.

    Verificar la fiabilidad del software, en trminos de comportamiento seguro y

    cambios de estado confiables.

    Verificar la falta de defectos y debilidades explotables.

    Verificar la capacidad de supervivencia del software ante la aparicin de

    anomalas, errores y su manejo de las mismas mediante excepciones que

    minimicen el alcance e impacto de los daos que puedan resultar de los

    ataques.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    En los modelos de ciclo de vida tradicionales en los que no se tienen en cuenta prcticas de

    seguridad la mayora de incidencias ni la realizacin de pruebas basadas en riesgo, se tiene que

    la mayora de incidencias se tienen antes de salir a produccin, sin embargo cuanto estas

    medidas se aplican se obtiene un perfil descendente en el que la mayora de la incidencias

    aparecen durante la fase de codificacin.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Las pruebas de seguridad

    deberan comenzar a

    nivel de componente

    antes de la integracin

    del sistema.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Revisin de diseo: son la categora de defectos ms difcil de manejar, adems son tanto

    frecuentes como crticos.

    El anlisis de caja blanca implica el anlisis y el entendimiento tanto de cdigo fuente como

    del diseo. Esta clase de pruebas es muy eficaz en el hallazgo de errores de programacin,

    bugs cuando automticamente se explora el cdigo y flaws cuando se realiza el anlisis de

    riesgo.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Revisin de cdigo o anlisis esttico de cdigo: Se considera una de las

    prcticas de seguridad ms importantes, consiste bsicamente en el

    anlisis del cdigo fuente antes de ser compilado, para detectar errores,

    construcciones inseguras de codificacin e indicadores de

    vulnerabilidades o debilidades de seguridad futuras.

    El anlisis de caja gris en una mezcla de las dos anteriores, es una prueba

    que combina pruebas en donde no solo se tiene en cuenta la interfaz del

    aplicativo, sino tambin el cdigo fuente del mismo.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Anlisis dinmico de cdigo: Implica el uso tanto del cdigo fuente y como del binario

    ejecutable compilado a partir de dicho cdigo.

    En este tipo de revisin se realizan tres tipos de anlisis:

    Anlisis de cobertura: Pone de manifiesto las interacciones entre las diferentes partes del

    programa.

    Anlisis de frecuencia de espectro: Revela las dependencias entre los componentes del

    programa.

    Anlisis de patrones: Permite buscar patrones especficos en la ejecucin del programa,

    tales como excepciones no capturadas, omisiones, errores de memoria dinmica y

    problemas de seguridad.

    Ejemplo de herramientas:

    Valgrind, DAST Hp Fortify y Acunetix.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Inyeccin de fallos en cdigo fuente: Una forma de anlisis dinmico en el que el cdigo

    fuente sea instrumentado por los cambios de la insercin, a continuacin, compilar y

    ejecutar el cdigo instrumentado para observar los cambios en el estado y el

    comportamiento que surgen cuando las partes instrumentadas de cdigo se ejecuta.

    El anlisis de caja negra se refiere al anlisis de un programa ejecutndolo y sondendolo con

    varias entradas, no usa anlisis de cdigo fuente de ninguna clase y necesitan tambin

    centrarse en estructuras de datos, componentes, APIs, estado de programa, etctera.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Test de penetracin: Su propsito se centra en la determinacin de vulnerabilidades internas a un componente o entre ellos, que estn expuestas al acceso externo y si pueden ser explotadas para comprometer el software, los datos o su entorno y los recursos.

    Anlisis cdigo binario: Es comparable a la exploracin del cdigo fuente, pero se dirige el software con cdigo ensamblador o ejecutable compilado binario antes de ser instalado y ejecutado. No hay escneres de cdigo binario especfico se utiliza herramientas de ingeniera inversa y anlisis de ejecutables binarios, como descompiladores, desensambladores y escneres de cdigo binario como los utilizados por Veracode, para analizar el cdigo mquina y modelar una representacin independiente del idioma de los comportamientos del programa, el control y los flujos de datos, rboles, y las llamadas externas de funcin. Ejemplos de este tipo de herramientas son IDAPRO, WinDbg, etc.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Inyeccin de fallos en binarios: Induce tensiones en el software, crea problemas de

    interoperabilidad entre los componentes y simula fallos en el entorno de ejecucin.

    Simula tipos de fallos y anomalas que pudieran resultar de patrones de ataque o la

    ejecucin de lgica maliciosa que hacen que el software vulnerable. Complemento a

    las pruebas de penetracin, pues permite al probador enfocarse con ms detalle en las

    conductas especficas del software en respuesta a patrones de ataque.

    Fuzz testing: Consiste en la introduccin de datos no vlidos (por lo general producido

    por la modificacin de una entrada vlida) al software a travs de su entorno o a

    travs de otro componente de mismo. Suelen ser especficos de un tipo particular de

    entrada, como HTTP, y se escriben para ser utilizados para probar un programa

    especfico, por lo que no son fcilmente reutilizables. Sin embargo, su valor radica en su

    especificidad, ya que a menudo puede revelar vulnerabilidades de seguridad que las

    herramientas genricas de evaluacin

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Escaneo de vulnerabilidades: Analizan los sistemas en busca de

    vulnerabilidades conocidas. Disponen de informacin sobre

    vulnerabilidades existentes en los sistemas operativos y aplicaciones

    mediante actualizadas bases de datos, que utiliza para la deteccin de

    las mismas. La herramienta ms utilizada es Nessus, inicialmente de cdigo

    abierto y versin gratuita. Proyectos diferentes a partir de la versin libre:

    Sussen, Porz-Wahn y OpenVas (inicialmente GNessUs). Otras herramientas

    de extendido uso son ISS Real Secure, Nmap y Retina.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Las pruebas de seguridad se deberan estructurar en las siguientes fases:

    Descomponer el sistema en sus componentes fundamentales.

    Identificar las interfaces de los componentes.

    Clasificar las interfaces de los componentes por su riesgo potencial.

    Averiguar las estructuras de datos usadas por cada interfaz.

    Encontrar problemas de seguridad inyectando datos maliciosos, apoyndose

    en el estado del riesgo ante las posibles amenazas.

  • 2.8. Pruebas de seguridad basadas en

    riesgo

    Diferentes pruebas a realizar en cada una de las fases del S-SDLC