PDF de programación - Taller: Auditoría de Código Fuente

Imágen de pdf Taller: Auditoría de Código Fuente

Taller: Auditoría de Código Fuentegráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 28 de Octubre del 2017)
653 visualizaciones desde el 28 de Octubre del 2017
5,4 MB
118 paginas
Creado hace 5a (10/12/2014)
CyberCampES 2014

5-7 diciembre

Madrid

¿YO?

• Simón Roses Femerling

Fundador & CEO, VULNEX www.vulnex.com



• Blog: www.simonroses.com


@simonroses | @vulnexsl



• Ex: Microsoft, PwC, @Stake



• Beca del DARPA Cyber Fast Track (CFT) para investigar sobre

seguridad en el ciclo de desarrollo de software
http://www.simonroses.com/es/2014/06/mi-visita-al-
pentagono/


• Ponente: Black Hat, RSA, HITB, OWASP, AppSec USA, SOURCE,

DeepSec, TECHNET


OBJETIVOS DE LA CHARLA

• Cómo realizar una auditoría de
código fuente de forma práctica


• Métodos, métricas y herramientas









AGENDA

1. Seguridad en el ciclo de desarrollo
2. ¡Una de métricas!
3. Auditoría de código fuente práctica
4. Inteligencia aplicada a la auditoría
5. Conclusiones



1. ¡EL CÓDIGO CADA VEZ MÁS COMPLEJO!

Software

SLOC

Firefox

14 Millones

Windows Server 2003

50 Millones

Debian 7.0

419 Millones

Mac OS X 10.4

86 Millones

Linux Kernel 2.6.25

13.5 Millones

Linux Kernel 3.6

15.9 Millones

1. TAMAÑO DEL CÓDIGO FUENTE

http://www.informationisbeautiful.net/visualizations/million-lines-of-code/

1. SOFTWARE DEVELOPMENT LIFE CYCLE (SDLC)

1. OPENSAMM

1. MICROSOFT SDL

1. ¡SE TRATA DE AHORRAR DINERO!

1. PRUEBAS DE SEGURIDAD VS AUDITORÍA
DE CÓDIGO

PRUEBAS DE
SEGURIDAD

AUDITORÍA DE

CÓDIGO

PROS

• Rápido
• < Precio



• Amplia cobertura
• Conocimiento

CONTRAS

• Cobertura limitada
• A ciegas

• Lento
• > Precio


1. ¿DOCUMENTACIÓN, POR FAVOR?

1. ¿MOMENTO DE UNA AUDITORÍA?

1. ¿POR DÓNDE EMPEZAR?

• Ficheros
• Redes
• Procesos
• Cifrado
• Autenticación
• ??












1. ¿CÓDIGO FUNCIONAL?

1. ¿HERRAMIENTAS?

2. CONOCIMIENTO DEL CÓDIGO

• ¿Qué API se esta utilizando?



• ¿Número de funciones?



• ¿Entrada / salida de las funciones?



• Relación entre funciones



• ¿Qué dicen los comentarios?



• Complejidad del código






2. MÉTRICAS DE CÓDIGO (COMIENZO AUDITORÍA)

• Tema controvertido ¡pero necesario!



• Tipos de métricas:



– LOC / KLOC / MLOC : línea de código, mil líneas de código, millón de líneas

código

– Complejidad de la función (Cyclomatic Complexity)
– Número de:

Líneas (LOC, KLOC, MLOC)


• Código

Líneas vacías

• Comentarios

Funciones


• Clases

Instrucciones


• …

– Longitud de las líneas
– …






2. COMPLEJIDAD DEL CÓDIGO

• Se cuenta el número de caminos linealmente independientes que

puede tomar el código
– If....else
– switch
– case
– catch
– while
– do
– ….



• Se trata de obtener una idea de la complejidad de las funciones




¡Complejidad es el enemigo de la seguridad!


• Creado por Thomas McCabe (NSA – 1976)

http://www.literateprogramming.com/mccabe.pdf



2. UMBRAL DE COMPLEJIDAD DEL CÓDIGO

2. NOTACIÓN PARA ANÁLISIS DE CÓDIGO
FUENTE

www.mccabe.com/ppt/SoftwareQualityMetricsToIdentifyRisk.ppt

2. ANÁLISIS VISUAL DE CÓDIGO FUENTE

BINARIO

CÓDIGO FUENTE

2. SOURCE MONITOR

2. CODE ANALYZER I

2. CODE ANALYZER II

2. DEMO 1: SOURCE MONITOR

2. DEMO 2: CODE ANALYZER

2. DEMO 3: LINE COUNTER

2. MÉTRICAS DESPUÉS AUDITORÍA CÓDIGO I

• Defect Density (DD): numero de fallos confirmados durante un

período de tiempo dividido por el tamaño del software


• Período:

– Tiempo concreto (un mes, semanas, etc.)
– Una fase del SDLC
– Todo el SDLC



• Tamaño:

– Número funciones
– Número de LOC






Número de fallos

Defect Density =





Tamaño

2. MÉTRICAS DESPUÉS AUDITORÍA CÓDIGO II

• Risk Density (RD): Similar al Defect Density pero medido en

función del riesgo (alto, medio, bajo)


• RD = X Riesgos / LOC o X Riesgos / Funciones



• Ejemplo:

– 5 Riegos Altos por 5000 LOC
– 3 Riesgos Medios por 10 Funciones










2. MÉTRICAS, OWASP

3. ¿QUÉ HACE MEJOR UNA AUDITORIA DE CÓDIGO?

• Casi 100% cobertura del código



• Método sistemático para encontrar fallos



• Mejor para encontrar fallos de diseño



• Podemos encontrar todos los fallos de la misma categoría



• La única forma de encontrar según qué fallos







3. PROCESO DE AUDITORÍA CÓDIGO FUENTE –
OWASP

https://www.owasp.org/index.php/OWASP_Code_Review_Guide_Table_of_Contents

3. BUSCANDO VULNERABILIDADES

Estático

Leer código

Desensamblar

Binario

Dinámico

Depurador

Manual

Automatizado

Estático

Análisis

Dinámico

Pruebas
Negativas

Pruebas
Positivas

Symbols

código

Públicos

symbols

Fuzzing

Desensamblar

Binario

Tonto

Inteligente

3. PROCESO DE AUDITORÍA DE CÓDIGO FUENTE

Plan

Solución

Equipo

Seguimiento

Auditoría

3. PROCESO DE AUDITORÍA DE CÓDIGO FUENTE

Plan

Solución

Equipo

Seguimiento

Auditoría

3. EL PLAN

1. Definir ámbito



2. Definir equipo



3. Definir tiempo



4. Definir amenazas



5. Definer herramientas (software y hardware)






3. PROCESO DE AUDITORÍA DE CÓDIGO FUENTE

Plan

Solución

Equipo

Seguimiento

Auditoría

3. EL EQUIPO

1. 1..N



2. Roles

1.
2.
3.
4.

Auditor Líder
Desarrolladores
Arch, seguridad, jefes proyecto, dev y testers
Auditores junior y senior


3. Habilidades

Tecnología (Web != App Móvil != Aplicación)
Lenguaje (ASM != C/C++ != Java != .NET)
Seguridad (Cifrado, Validación datos, AuthN, AuthZ, etc.)
Vulnerabilidades (OWASP Top 10, Corrupciones memoria, etc.)

1.
2.
3.
4.


4. Recomendado tener diferentes perfiles



5. Formación








3. SESIONES

1. Grupos pequeños (2-4)



2. Cada uno con su propio equipo / herramientas



3. Un buen auditor entre 100 y 1000 líneas código (LOC) hora



4. Tiempo

Recomendación

Tiempo

Microsoft

Microsoft

1-3 horas seguidas / día

2 horas mañana / 2 horas tarde (4 horas total)

MITRE

3000 LOC día

Wikipedia

150 LOC / hora








5. 3-5 sesiones auditoría código a la semana



6. 2-4 reuniones a la semana (10 min – 1 hora máx.)





3. PROCESO DE AUDITORÍA DE CÓDIGO FUENTE

Plan

Solución

Equipo

Seguimiento

Auditoría

3. FASES DE LA AUDITORÍA

• Conocimiento



2.

• Identificando

vectores ataque

• Priorizar
auditoría

4.

• Vulnerabilidades

1.

3.

3. FASES DE LA AUDITORÍA

• Conocimiento




2.

• Identificando

vectores ataque

• Priorizar
auditoría

4.

• Vulnerabilidades

1.

3.

3. CONOCIMIENTO CÓDIGO

• Métodos

– Estático -> Leer código
– Dinámico -> Entorno pruebas, ejecución



• Documentación

– Modelos de amenazas
– Diseño
– Funcionalidad
– Testing
– Auditoría anteriores ¿?



• Enumerar entorno y tecnologías

– Sistemas
– Lenguajes, librerías
– Búsqueda de CVE





3. EL SOFTWARE YA NO SE ESCRIBE, SINO QUE SE
COMPONE

3. FASES DE LA AUDITORÍA

• Conocimiento



2.

• Identificando

vectores ataque

• Priorizar
auditoría

4.

• Vulnerabilidades

1.

3.

3. IDENTIFICANDO VECTORES DE ATAQUE

• Modelo de Amenazas



• Puntos de Entrada/Salida

– Datos no confiables
– Nivel de acceso



• Análisis estático automatizado



• Léxico

– Patrones
– Expresiones regulares



• Historia del código

– Vulnerabilidades
– Auditorías





3. ¿QUÉ NOS OFRECE EL MODELO DE AMENAZAS?



Incluye interfaces y niveles de privilegio


• Componentes



• Riesgos



• Ayuda a:









Entender el sistema
Todo el mundo en el mismo punto
Identificar riesgos potenciales
Focalizar el trabajo







Código solo accesible por usuarios
autenticados

1001010010111011001
0101010101010111100
0100001010010100010
1000110100100010100
0101001010000101110

Código accesible por todo el
mundo

1001010010111011001
0101010101010111100
0100001010010100010
1000110100100010100
0101001010000101110

3. MICROSOFT SDL TM

http://blogs.microsoft.com/cybertrust/2014/04/15/introducing-microsoft-threat-modeling-tool-2014/

3. GREP KUNG-FU

Add2Ptr\(.*,.*->.*\)
alloc.*(.*\*.*sizeof(WCHAR))
\+.*wcslen\(.*\)
\*.*wcslen \(.*\)
wcslen\(.*\).*\*
ISSUE
NOTICE
FUTURE
TODO
REVIEW
BUGBUG
FIXFIX
FIX
GUBGUB
HACKHACK




user
admin
pwd
http
ftp
key
secret
port
root
anon
pass




3. DEMO 4: BAREGREP

3. DEMO 5: VISUAL GREP

3. FASES DE LA AUDITORÍA

• Conocimiento



2.

• Identificando

vectores ataque

• Priorizar
auditoría

4.

• Vulnerabilidades

1.

3.

3. PRIORIZAR AUDITORÍA

• Más revisión
– Código viejo
– Por defecto
– Elevado privilegios
– Acceso anónimo
– Escucha en red
– UDP
– C/C++ / ASM
– Historial de fallos
– Complejo
– Interfaz sin documentar
– Contiene información sensible
– Código difícil de mantener


• Menos revisión
– Código nuevo
– Cerrado por defecto
– Mínimos privilegios
– Acceso autenticado
– No escucha en red
– TCP
– Código gestionado
– Historial limpio
– Código simple
– Interfaces documentados
– No contiene información

sensible

– Código fácil de mantener





3. PASES DE LA AUDITORÍA

• Multi-pase



– Pase #1

• Uso de herramientas análisis

estático/dinámico

– Pase #2

• Buscar patrones de vulnerabilidades

– Pase #3

• Análisis en profundidad de código

potencialmente con riesgo





3. FASES DE LA AUDITORÍA

• Conocimiento



2.

• Identificando

vectores ataque

• Priorizar
auditoría

4.

• Vulnerabilidades

1.

3.

3. VULNERABILIDADES I

• OWASP Top 10

– Web: https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
– App Móviles:

https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-
_Top_Ten_Mobile_Risks




.NET Code Review
– http://msdn.microsoft.com/en-us/library/ff648637.aspx



• OWASP Top 10 for .NET developers

– http://www.troyhunt.com/2011/12/free-ebook-owasp-top-10-for-net.html


• Secure Coding Guidelines for Java

– http://www.oracle.com/tec
  • Links de descarga
http://lwp-l.com/pdf7292

Comentarios de: Taller: Auditoría de Código Fuente (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad