PDF de programación - Seguridad en el ciclo de vida del desarrollo de software

Imágen de pdf Seguridad en el ciclo de vida del desarrollo de software

Seguridad en el ciclo de vida del desarrollo de softwaregráfica de visualizaciones

Publicado el 21 de Julio del 2020
2.383 visualizaciones desde el 21 de Julio del 2020
655,9 KB
21 paginas
Creado hace 16a (12/09/2007)
“Seguridad en el ciclo de vida del

desarrollo de software”

Lic. Pablo Milano
Lic. Pablo Milano
<[email protected]>
<[email protected]>

12 de Septiembre de 2007
12 de Septiembre de 2007
Buenos Aires -- Argentina
Argentina
Buenos Aires

Seguridad en el ciclo de vida del desarrollo de software
Introduccióónn
Introducci

© 2007

Introduccióón a la seguridad en el SDLC
n a la seguridad en el SDLC
Introducci



Actualmente la mayoría de los procesos de desarrollo no incluyen
seguridad, o bien la incluyen al final (etapa de testing)

El costo de solucionar las vulnerabilidades es mayor cuanto más
tarde se detectan las mismas (igual que los bugs)

o
o
t
t
s
s
o
o
C
C

s
s
s
s

i
i

i
i
l
l

a
a
n
n
A
A

g
g
n
n
i
i
t
t
s
s
e
e
T
T

t
t
n
n
e
e
m
m
y
y
o
o
p
p
e
e
D
D

l
l

oo
ññ
e
e
s
s
D
D

i
i

nn
óó
i
i
c
c
a
a
c
c
i
i
f
f
i
i
d
d
o
o
C
C

Tiempo
Tiempo

2

Seguridad en el ciclo de vida del desarrollo de software
Introduccióónn
Introducci

© 2007

Grandes mitos y excusas flacas
Grandes mitos y excusas flacas

La seguridad de la aplicación es responsabilidad del programador.
Nadie sabe cómo funciona, por ende, no la van a atacar.
Si no se encontraron vulnerabilidades hasta ahora…
A nadie le interesaría atacar nuestra aplicación.
La aplicación es segura porque corre detrás de un firewall.
La aplicación es segura porque usa encripción.
Si no corre como Administrator / root, no funciona.
Si, ese feature (que es inseguro) viene habilitado por default, pero el
administrador lo puede deshabilitar.
No hay manera de explotarla.
No hay tiempo para incluir seguridad.

3

Seguridad en el ciclo de vida del desarrollo de software
Introduccióónn
Introducci

© 2007

Tendencia actual
Tendencia actual



Participación de Seguridad Informática desde el comienzo de
todos los proyectos de desarrollo.

Incorporar seguridad a lo largo de todas las etapas del ciclo de
vida del desarrollo de software (SDLC).

Análisis
Diseño
Codificación
Testing
Deployment

4

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en el anáálisis de requerimientos
lisis de requerimientos
Seguridad en el an

© 2007

Seguridad en el anáálisis de requerimientos
lisis de requerimientos
Seguridad en el an

Durante el análisis de requerimientos, se pueden identificar diversas
características que derivarán en los requerimientos de seguridad del
software. Por ejemplo:

Arquitectura de la aplicación

¿Cliente/servidor o Desktop?

Plataforma donde correrá la aplicación

PC / Palm / Teléfono celular

Tipos de datos que se almacenan o transfieren

Confidenciales / públicos

Requerimiento de compliance con normativas y marcos regulatorios

SOX, PCI-DSS, “A”4609

5

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en el anáálisis de requerimientos
lisis de requerimientos
Seguridad en el an

© 2007

Tipos de registro que el sistema debe generar

Acceso a recursos, uso de privilegios, etc.

Perfiles de usuario necesarios para la aplicación
Administrador, revisor, editor, usuario básico, etc.

Tipos de acceso a los datos por parte de cada perfil
Lectura, escritura, modificación, agregado, borrado, etc.

Acciones sobre el sistema que puede hacer cada perfil

Cambiar la configuración del sistema
Arrancar o detener servicios

Modos de autenticación

Passwords, Tokens, Biométricos
1 factor, 2 factores, etc

6

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en el diseññoo
Seguridad en el dise

© 2007

Seguridad en el diseññoo
Seguridad en el dise

Muchas de las vulnerabilidades encontradas en aplicaciones tuvieron
su causa en errores de diseño. Ej:

Aplicación Home banking (WEB)
Incluía el número de cuenta en el request de transferencias
No validaba que la cuenta origen perteneciera al usuario logueado
Vulnerabilidad: Transferencias desde cuentas ajenas

Aplicación de Adm y Finanzas (Consola Unix)
Tomaba el usuario de una variable de entorno
Permitía que el usuario “escapara” a un shell
Vulnerabilidad: Se puede establecer un usuario arbitrario

7

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en el diseññoo
Seguridad en el dise

© 2007

Buenas práácticas para el dise
Buenas pr

cticas para el diseñño de una aplicaci

o de una aplicacióón segura
n segura



Reducción de Superficie de ataque

Criterio del menor privilegio

Fallar de manera segura

Criterio de defensa en profundidad

Diseño seguro de mensajes de error

Diseño seguro de autenticación



Separación de privilegios

Interacción “amigable” con Firewalls e IDS's.

Administración segura información Sensible

Diseño de Auditoría y Logging



Análisis de riesgo

8

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en el diseññoo
Seguridad en el dise

© 2007

AnAnáálisis de riesgo

lisis de riesgo –– Threat

Threat Modeling
Modeling

Técnica formal, estructurada y repetible que permite determinar y
ponderar los riesgos y amenazas a los que estará expuesta nuestra
aplicación.

Consta de las siguientes etapas:

Conformar un grupo de análisis de riesgos

1)
2) Descomponer la aplicación e identificar componentes clave.
3) Determinar las amenazas a cada componente de la aplicación.
4) Asignar un valor a cada amenaza.
5) Decidir cómo responder a las amenazas.
6)

Identificar las técnicas y tecnologías necesarias para mitigar los
riesgos identificados.

9

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en el diseññoo
Seguridad en el dise

© 2007

MMéétodo STRIDE
todo STRIDE

Ayuda a identificar amenazas en los componentes de un sistema
Su nombre es un acrónimo de:

SSpoofing Identity: Suplantar la identidad de otro usuario o servicio.

TTampering with Data: Modificar maliciosamente datos almacenados.

RRepudiation: Imposibilidad de identificar el autor de una acción.

IInformation Disclosure: Divulgar información a usuarios no autorizados.

DDenial of Service: Provocar que un servicio deje de funcionar.

EElevation of privilege: Conseguir privilegios mayores a los asignados

10

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en el diseññoo
Seguridad en el dise

© 2007

ÁÁrboles de ataque
rboles de ataque

Amenaza #1

Un usuario accede en

nombre de otro

1.1

El usuario tenía una

contraseña débil

1.2

1.3

El atacante capturó

datos de autenticación

El sistema permitió un
ataque de diccionario /

de la red

fuerza bruta

1.4

El sistema de
validación /

autenticación es

defectuoso

1.5

El sistema permite
armar peticiones con
IDs de otros usuarios

1.2.1

La comunicación no
estaba encriptada

1.2.2

El mecanismo de
autenticación es

vulnerable a “replay”

de paquetes

1.4.1

El sistema de

validación no falla de

manera segura

1.4.2

El sistema de
validación es

vulnerable a ataques
de “SQL Injection”

11

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en el diseññoo
Seguridad en el dise

© 2007

MMéétodo DREAD
todo DREAD



Ayuda a ponderar las amenazas identificadas.
Es un acrónimo de los siguientes 5 ítems:

DDamage Potencial: ¿Cuán importante es el daño de esta amenaza?

RReproducibility: ¿Cuán reproducible es la vulnerabilidad?

EExploitability: ¿Cuán fácil es de explotar?

AAffected Users: ¿Cuáles y cuántos usuarios se verían afectados?

DDiscoverability: ¿Cuán fácil de descubrir es la vulnerabilidad?

12

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en la codificacióónn
Seguridad en la codificaci

© 2007

Seguridad en la codificacióónn
Seguridad en la codificaci

La falta de controles adecuados en la codificación, muchas veces
deriva en vulnerabilidades que pueden comprometer a la aplicación o
a los datos de la misma

Los tipos de vulnerabilidades más habituales son:

Stack buffer overflows
Heap buffer overflows
SQL Injections
Cross Site Scripting (XSS)
Directory Traversal

Authentication Bypass
Information Disclosure
Escalamiento de privilegios
Manejo inseguro de sesiones
Denegación de servicio

13

Seguridad en el ciclo de vida del desarrollo de software
Seguridad en la codificacióónn
Seguridad en la codificaci

© 2007

Buenas práácticas para una codificaci
Buenas pr

cticas para una codificacióón segura
n segura

Validar siempre los datos de entrada antes de procesarlos
Nunca confiar en que los datos recibidos sean correctos.
Realizar validación de datos en todas las capas
Usar siempre criterio de “White List” en las validaciones
Controlar tamaño y tipo de datos
“Sanitizar” los valores de entrada y salida
Eliminar o “escapear” caracteres especiales
Transformar los datos de entrada a un “encoding” establecido
Reemplazar sentencias SQL dinámicas por Stored Procedures
Evitar generar código con valores ingresados por el usuario
No mezclar datos con código
Capturar errores de capas inferiores y no mostrarlos al usuario

14

Seguridad en el ciclo de vida del desarrollo de software
Testing de seguridad
de seguridad
Testing

© 2007

Testing funcional Vs. Testing de seguridad
Testing funcional Vs. Testing de seguridad

BugsBugs que se
que se

encuentran mediante
encuentran mediante
Testing de seguridad
de seguridad
Testing

Funcionalidad diseñña
  • Links de descarga
http://lwp-l.com/pdf17929

Comentarios de: Seguridad en el ciclo de vida del desarrollo de software (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad