Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

47
Recomendaciones Recomendaciones para para la la escritura escritura de de código código seguro seguro Nombre Nombre Puesto Puesto Compañía Compañía

Transcript of Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

Page 1: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

RecomendacionesRecomendaciones parapara lala escrituraescritura dede códigocódigo seguroseguro

NombreNombrePuestoPuestoCompañíaCompañía

Page 2: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

QuéQué trataremostrataremos

ProcesoProceso dede desarrollodesarrollo seguroseguro

Modelos de amenazasModelos de amenazas

Mitigación del riesgoMitigación del riesgo

Recomendaciones de seguridadRecomendaciones de seguridad

Page 3: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

RequisitosRequisitos previosprevios parapara lala sesiónsesión

ExperienciaExperiencia dede desarrollodesarrollo concon MicrosoftMicrosoftVisualVisual Basic®,Basic®, MicrosoftMicrosoft VisualVisual C++®C++® oo C#C#

NivelNivel 200200

Page 4: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

OrdenOrden deldel díadía

ProcesoProceso dede desarrollodesarrollo seguroseguro

Modelos de amenazasModelos de amenazas

Mitigación del riesgoMitigación del riesgo

Recomendaciones de seguridadRecomendaciones de seguridad

Page 5: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

MejorasMejoras enen procesoproceso dede desarrollodesarrollo dede aplicacionesaplicaciones

TengaTenga enen cuentacuenta lala seguridadseguridadAl comienzo del procesoAl comienzo del proceso

Durante el desarrolloDurante el desarrollo

Durante la implementaciónDurante la implementación

En los hitos de revisión del softwareEn los hitos de revisión del software

No deje de buscar errores de No deje de buscar errores de seguridad hasta el final del proceso seguridad hasta el final del proceso de desarrollode desarrollo

Page 6: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

SDSD33

SeguroSeguro porpor diseñodiseño

SeguroSeguro dede formaforma

predeterminadapredeterminada

SeguroSeguro enen implementaciónimplementación

ArquitecturaArquitectura yy códigocódigo segurossegurosAnálisis de amenazasAnálisis de amenazasReducción de los puntos Reducción de los puntos vulnerablesvulnerables

MenorMenor áreaárea expuestaexpuesta aa ataquesataquesLas características que no se usan Las características que no se usan están desactivadas de forma están desactivadas de forma predeterminadapredeterminadaPrivilegios mínimosPrivilegios mínimosProtección:Protección: detección,detección, defensa, defensa, recuperaciónrecuperación yy administraciónadministraciónProceso: guías de procedimientos Proceso: guías de procedimientos y de arquitecturay de arquitecturaUsuarios: aprendizajeUsuarios: aprendizaje

EstructuraEstructura dede seguridadseguridad SDSD33

Page 7: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

EsquemaEsquema temporaltemporal deldel desarrollodesarrollo dede productosproductos segurosseguros

PlanesPlanes dede pruebapruebacompletoscompletos

DiseñosDiseñoscompletoscompletos

ConceptoConcepto CódigoCódigocompletocompleto

EnvíoEnvío DespuésDespuésdeldel envíoenvío

Pruebas depuntos vulnerables

de seguridad

Evaluar losconocimientos de

seguridad al contratarintegrantes del grupo

Determinar loscriterios de firma

de seguridad

Someter arevisión externa

Analizar las amenazas

Aprendery afinar

Realizar larevisión del grupo

de seguridad

Entrenar a los integrantesdel grupo

Probar la alteración de datos y los privilegios

mínimos

Resolver problemas de seguridad, comparar el código con las

directrices de seguridad

=continuado

Page 8: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

SeguroSeguro porpor diseñodiseño

AumenteAumente loslos conocimientosconocimientos dede seguridadseguridad deldel grupogrupo dede diseñodiseño

Ofrezca aprendizaje de forma continuadaOfrezca aprendizaje de forma continuada

Cambio de actitud: no es válido decir Cambio de actitud: no es válido decir “aquello que no sé no me puede dañar”“aquello que no sé no me puede dañar”

Aplique seguridad durante la fase de Aplique seguridad durante la fase de diseñodiseño

Defina los objetivos de seguridad del Defina los objetivos de seguridad del productoproducto

Implemente la seguridad como una Implemente la seguridad como una característica clave del productocaracterística clave del producto

Utilice los modelos de amenazas durante la Utilice los modelos de amenazas durante la fase de diseñofase de diseño

Page 9: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

OrdenOrden deldel díadía

ProcesoProceso dede desarrollodesarrollo seguroseguro

Modelos de amenazasModelos de amenazas

Mitigación del riesgoMitigación del riesgo

Recomendaciones de seguridadRecomendaciones de seguridad

Page 10: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

QuéQué sonson loslos modelosmodelos dede amenazasamenazas

LaLa definicióndefinición dede modelosmodelos dede amenazasamenazases unes un análisisanálisis basadobasado enen lala seguridadseguridad que:que:

Ayuda a un grupo de producto a conocer Ayuda a un grupo de producto a conocer los puntos más vulnerables del productolos puntos más vulnerables del productoEvalúa las amenazas a una aplicaciónEvalúa las amenazas a una aplicación Trata de reducir los riesgos generales Trata de reducir los riesgos generales de seguridadde seguridadBusca activosBusca activosDescubre los puntos vulnerablesDescubre los puntos vulnerablesIdentifica amenazasIdentifica amenazasAyuda a constituir la base de las Ayuda a constituir la base de las especificaciones del diseño de seguridadespecificaciones del diseño de seguridad

Page 11: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

BeneficiosBeneficios dede lala definicióndefinición dede modelosmodelos dede amenazasamenazasAyudaAyuda aa conocerconocer mejormejor lala aplicaciónaplicación

Ayuda a encontrar erroresAyuda a encontrar errores

Identifica errores de Identifica errores de diseño complejosdiseño complejos

Ayuda a integrar Ayuda a integrar nuevos empleadosnuevos empleados

Orienta los planes Orienta los planes de pruebas de seguridad de pruebas de seguridad bien diseñadosbien diseñados

Amenaza

Punto vulnerable

Activo

Page 12: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ElEl procesoproceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas

Identificar activos1

Crear información general sobre la arquitectura2

Descomponer la aplicación3

Identificar las amenazas4

Documentar las amenazas5

Clasificar las amenazas6

Proceso de definición de modelos de amenazas

Page 13: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas PasoPaso 1:1: i identificardentificar activosactivos

CreeCree unauna listalista dede activosactivos queque requierenrequieren protección,protección, como:como:

Datos confidenciales, por ejemplo las bases Datos confidenciales, por ejemplo las bases de datos de clientesde datos de clientes

Páginas WebPáginas Web

Disponibilidad del sistemaDisponibilidad del sistema

Cualquier elemento que, si se viera Cualquier elemento que, si se viera comprometido, pudiera impedir el comprometido, pudiera impedir el funcionamiento correcto de la aplicaciónfuncionamiento correcto de la aplicación

Page 14: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas PasoPaso 2:2: crearcrear informacióninformación generalgeneral sobresobre lala arquitecturaarquitecturaIdentificarIdentificar lolo queque hacehace lala aplicaciónaplicación

Crear un diagrama de la arquitectura de la aplicaciónCrear un diagrama de la arquitectura de la aplicación

Identificar las tecnologíasIdentificar las tecnologías

Permisos NTFS(Autenticación)

Autorización de archivoAutorización de URL

Funciones de .NET (Autenticación)

Función definida por el usuario(Autenticación)

SSL(Privacidad/Integridad)

Límite de confianza

AliceMaryBob IISIIS

Autenticaciónanónima

Autenticaciónde formularios

IPSec(Privacidad/Integridad)

Límite de confianza

ASP.NET(Identidad de proceso)Microsoft

ASP.NETMicrosoft ASP.NET

Autenticación de Microsoft Windows®

MicrosoftSQL Server™

Page 15: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas PasoPaso 3:3: descomponerdescomponer lala aplicaciónaplicación

DescomponerDescomponer lala aplicaciónaplicación

Crear un perfil de seguridad Crear un perfil de seguridad basado en áreas basado en áreas vulnerables tradicionalesvulnerables tradicionales

Examinar las interacciones Examinar las interacciones entre diferentes entre diferentes subsistemassubsistemas

Utilizar diagramas DFD o Utilizar diagramas DFD o UMLUML

IdentificarIdentificar loslos límiteslímites dede confianzaconfianza

IdentificarIdentificar elel flujo deflujo de datosdatos

IdentificarIdentificar loslos puntospuntos dede entradaentrada

IdentificarIdentificar elel códigocódigo privilegiadoprivilegiado

DocumentarDocumentar elel perfil deperfil de seguridadseguridad

Page 16: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas PasoPaso 4:4: identificaridentificar laslas amenazasamenazas

ConstituirConstituir elel grupogrupo

Identificar las amenazasIdentificar las amenazasAmenazas de la redAmenazas de la red

Amenazas del hostAmenazas del host

Amenazas de las aplicacionesAmenazas de las aplicaciones

Page 17: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

Tipos de amenazas Ejemplos

Suplantación Falsificar mensajes de correo electrónico Reproducir paquetes de autenticación

AlTeración Alterar datos durante la transmisión Cambiar datos en archivos

Repudio

Eliminar un archivo esencial y denegar este hecho Adquirir un producto y negar que se ha adquirido

DIvulgación de información

Exponer información en mensajes de error Exponer código en sitios Web

Denegación de servicio

Inundar una red con paquetes de sincronizaciónInundar una red con paquetes ICMP falsificados

Elevación de privilegios

Aprovechar la saturación de un búfer para obtener privilegios en el sistemaObtener privilegios de administrador de forma ilegítima

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas IdentificarIdentificar laslas amenazasamenazas concon STRIDESTRIDE

Page 18: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

1.0 Ver datos de nóminas (I) 1.1 El tráfico no está protegido (Y) 1.2 Un intruso ve el tráfico 1.2.1 Rastrea al tráfico con el analizador

de protocolos 1.2.2 Atiende al tráfico del enrutador 1.2.2.1 No se han aplicado revisiones

al enrutador (Y) 1.2.2.2 El enrutador se ve comprometido 1.2.2.3 Adivina la contraseña del enrutador

Amenaza nº 1 (I)Ver datos de nóminas

1.1El tráfico no está protegido

1.2El intrusove el tráfico

1.2.1Rastrea el tráfico con el analizadorde protocolos

1.2.2Atiende al tráficodel enrutador

1.2.2.1No se han aplicado revisiones al enrutador

1.2.2.2El enrutador se ve comprometido

1.2.2.3Adivina la contraseñadel enrutador

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas IdentificarIdentificar laslas amenazasamenazas mediantemediante árbolesárboles dede ataquesataques

Page 19: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas PasoPaso 5:5: d documentarocumentar laslas amenazasamenazas

DocumenteDocumente laslas amenazasamenazas concon unauna plantilla:plantilla:

Deje Riesgo en blanco (por ahora)Deje Riesgo en blanco (por ahora)

Descripción de la amenaza

Inserción de comandos SQL

Destino de la amenaza Componente de acceso a datos

RiesgoTécnicas de ataque El intruso anexa comandos SQL al

nombre de usuario, que se utiliza para crear una consulta SQL

Medidas preventivas Utilice una expresión regular para validar el nombre de usuario y utilice un procedimiento almacenado con parámetros para tener acceso a la base de datos

Page 20: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas PasoPaso 6:6: clasificarclasificar laslas amenazasamenazas

UtiliceUtilice lala fórmula:fórmula: Riesgo = Probabilidad * Daños potencialesRiesgo = Probabilidad * Daños potenciales

Utilice DREAD para clasificar las Utilice DREAD para clasificar las amenazasamenazas

DDaños potencialesaños potenciales  

Capacidad de Capacidad de RReproduccióneproducción  

AprovAprovEEchamientochamiento     

Usuarios Usuarios AAfectadosfectados  

Capacidad de Capacidad de DDescubrimientoescubrimiento  

Page 21: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProcesoProceso dede definicióndefinición dede modelosmodelos dede amenazasamenazas Ejemplo:Ejemplo: clasificarclasificar laslas amenazasamenazas

Amenaza nº 1 (I)Ver datos de nóminas

1.1El tráfico no está protegido

1.2El intruso ve el tráfico

1.2.1Rastrea el tráfico con el analizadorde protocolos

1.2.2Atiende al tráficodel enrutador

1.2.2.1No se han aplicado revisiones al enrutador

1.2.2.2El enrutador se ve comprometido

1.2.2.3Adivina la contraseña del enrutador

•Daños potenciales•Usuarios afectadosO bien,•Daños

•Capacidad de reproducción•Aprovechamiento•Capacidad de descubrimientoO bien,•Oportunidad

Page 22: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

CódigoCódigo parapara unun modelomodelo dede amenazasamenazas

UtiliceUtilice elel modelomodelo dede amenazasamenazas comocomo ayudaayuda

Determine las partes más “peligrosas” de la Determine las partes más “peligrosas” de la aplicaciónaplicación

Asigne prioridades a los esfuerzos para Asigne prioridades a los esfuerzos para aplicar seguridadaplicar seguridad

Asigne prioridades a las revisiones Asigne prioridades a las revisiones continuadas continuadas del códigodel código

Determine las técnicas de mitigación de Determine las técnicas de mitigación de amenazas que se emplearánamenazas que se emplearán

Determine el flujo de datosDetermine el flujo de datos

Page 23: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

OrdenOrden deldel díadía

ProcesoProceso dede desarrollodesarrollo seguroseguro

Modelos de amenazasModelos de amenazas

Mitigación del riesgoMitigación del riesgo

Recomendaciones de seguridadRecomendaciones de seguridad

Page 24: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

OpcionesOpciones dede mitigaciónmitigación deldel riesgoriesgo

OpciónOpción 1:1: NoNo hacerhacer nadanada

Opción 2: Advertir al usuarioOpción 2: Advertir al usuario

Opción 3: Eliminar el problemaOpción 3: Eliminar el problema

Opción 4: Corregir el problemaOpción 4: Corregir el problema

Vigilado

Page 25: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProcesoProceso dede mitigaciónmitigación deldel riesgoriesgo

Tipo de amenaza(STRIDE)

Técnica de mitigación Técnica de mitigación

Tecnología Tecnología Tecnología Tecnología

Suplantación Autenticación

NTLMCertificados X.509Claves PGPBásicaDe texto implícitaKerberosSSL/TLS

1.1. IdentifiqueIdentifique lala categoríacategoríaPorPor ejemplo:ejemplo: SuplantaciónSuplantación

2.2. SeleccioneSeleccione laslas técnicastécnicasPorPor ejemplo:ejemplo: AutenticaciónAutenticación oo ProtegerProteger loslos datosdatos secretossecretos

3.3. ElijaElija lala tecnologíatecnologíaPorPor ejemplo:ejemplo: KerberosKerberos

Page 26: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

TécnicasTécnicas dede mitigaciónmitigación dede ejemploejemplo

Cliente Servidor

Datospersistentes

Datosde autenticación

Datos deconfiguración SSTTRRIDIDEE

STSTRRIDEIDE

STRISTRIDDEE

SSTTRRIIDEDESSTRIDTRIDEE

SSL/TLS IPSec RPC/DCO

con privacidad

Servidor de seguridad

Limite la utilización de recursos para conexiones anónimas

Control de acceso seguro

Firmas digitales Auditoría

Red nosegura

Page 27: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

OrdenOrden deldel díadía

ProcesoProceso dede desarrollodesarrollo seguroseguro

Modelos de amenazasModelos de amenazas

Mitigación del riesgoMitigación del riesgo

Recomendaciones de seguridadRecomendaciones de seguridad

Page 28: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

EjecutarEjecutar concon privilegiosprivilegios mínimosmínimos

DoctrinaDoctrina dede seguridadseguridad bienbien conocida:conocida:Ejecute las aplicaciones con los privilegios Ejecute las aplicaciones con los privilegios mínimos para realizar únicamente su mínimos para realizar únicamente su trabajo, ninguno mástrabajo, ninguno más

Los privilegios elevados pueden llevar Los privilegios elevados pueden llevar a consecuencias desastrosasa consecuencias desastrosas

El código malintencionado que se ejecuta El código malintencionado que se ejecuta en un proceso con muchos privilegios tiene en un proceso con muchos privilegios tiene privilegios adicionalesprivilegios adicionales

Muchos virus se extienden porque el Muchos virus se extienden porque el destinatario tiene privilegios de destinatario tiene privilegios de administradoradministrador

Page 29: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

DemostraciónDemostración 11 SeguridadSeguridad dede laslas aplicacionesaplicaciones

ASP.NETASP.NET

InvestigaciónInvestigación dede loslos privilegios deprivilegios de las las

aplicacionesaplicaciones ASP.NETASP.NETRestricciónRestricción dede loslos nivelesniveles dede confianza confianza

dede laslas aplicacionesaplicaciones ASP.NETASP.NETCajónCajón dede arenaarena (sandboxing)(sandboxing) dede códigocódigo

privilegiadoprivilegiadoUsoUso dede loslos ensambladosensamblados dede cajón decajón de arenaarena

(sandboxing)(sandboxing)

Page 30: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ReducirReducir lala superficiesuperficie susceptiblesusceptible dede ataqueataque

ExpongaExponga sólosólo algunasalgunas interfacesinterfaces bienbien documentadasdocumentadas dede lala aplicaciónaplicación

Utilice sólo los servicios que la Utilice sólo los servicios que la aplicación requieraaplicación requiera

Los virus Slammer y CodeRed no se habrían Los virus Slammer y CodeRed no se habrían extendido si ciertas características no extendido si ciertas características no estuvieran activadas de forma estuvieran activadas de forma predeterminadapredeterminada

ILoveYou y otros virus no se habrían ILoveYou y otros virus no se habrían extendido extendido si las secuencias de comandos estuvieran si las secuencias de comandos estuvieran deshabilitadasdeshabilitadas

Desactive todo lo demásDesactive todo lo demás

Page 31: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

NoNo confiarconfiar enen laslas entradasentradas dede loslos usuariosusuariosValideValide todastodas laslas entradasentradas

Asuma que todas las entradas son dañinas Asuma que todas las entradas son dañinas mientras mientras no se demuestre lo contrariono se demuestre lo contrarioExija datos válidos y rechace todos los demásExija datos válidos y rechace todos los demás

Restrinja, rechace y sanee la entrada del Restrinja, rechace y sanee la entrada del usuario conusuario con

Comprobaciones de escrituraComprobaciones de escrituraComprobaciones de longitudComprobaciones de longitudComprobaciones de intervaloComprobaciones de intervaloComprobaciones de formatoComprobaciones de formatoValidator.ValidationExpression =

"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";

Page 32: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

DemostraciónDemostración 22 ValidaciónValidación dede formulariosformularios

dede WindowsWindows

VerVer unauna aplicaciónaplicación sinsin validaciónvalidaciónAgregarAgregar lala validaciónvalidación dede entradasentradasValidaciónValidación deldel formularioformulario completocompleto

Page 33: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

DefensaDefensa enen profundidadprofundidad (1(1 dede 3)3)UtilizarUtilizar múltiplesmúltiples equiposequipos selectoresselectores

SSL

Servidor de seguridad ISA

IIS

SQL Server

Servidor de seguridad ISA IPSec

Page 34: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

DefensaDefensa enen profundidadprofundidad (2(2 dede 3)3)AplicarAplicar laslas medidasmedidas apropiadasapropiadas parapara cadacada nivelnivel

Comprobarla seguridad

Comprobar la seguridad

Aplicación.dll

Aplicación.exe

Comprobar la seguridad

Comprobar la seguridad

Proteger los recursos con ACL

Aplicación.dll

Page 35: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

DefensaDefensa enen profundidadprofundidad (3(3 dede 3)3)UtilizarUtilizar listaslistas ACLACL segurasseguras enen loslos recursosrecursos

DiseñeDiseñe listaslistas ACLACL enen lala aplicaciónaplicación desdedesde

elel principioprincipio

Aplique listas ACL a archivos, carpetas, Aplique listas ACL a archivos, carpetas, páginas Web, valores del Registro, páginas Web, valores del Registro, archivos de base de datos, impresoras y archivos de base de datos, impresoras y objetos de Active Directoryobjetos de Active Directory

Cree sus propias ACL durante la Cree sus propias ACL durante la instalación de la aplicacióninstalación de la aplicación

Incluya entradas ACE de denegaciónIncluya entradas ACE de denegación

No utilice listas DACL NULLNo utilice listas DACL NULL

Page 36: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

NoNo confíeconfíe enen obtenerobtener seguridadseguridad mediantemediante oscuridadoscuridad

NoNo oculteoculte clavesclaves dede seguridadseguridad enen archivosarchivos

No confíe en claves del Registro no No confíe en claves del Registro no documentadasdocumentadas

Asuma siempre que un intruso sabe lo Asuma siempre que un intruso sabe lo mismo que ustedmismo que usted

Page 37: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

UtilizarUtilizar DPAPIDPAPI parapara protegerproteger secretossecretos

DosDos funcionesfunciones DPAPI:DPAPI:CryptProtectDataCryptProtectData

CryptUnprotectDataCryptUnprotectData

Dos almacenes para los datos cifrados Dos almacenes para los datos cifrados con DPAPI:con DPAPI:

Almacén de usuarioAlmacén de usuario

Almacén de máquinaAlmacén de máquina

Page 38: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

DemostraciónDemostración 33 DPAPIDPAPI

AlmacenamientoAlmacenamiento dede cadenascadenas dede conexiónconexión

enen Web.configWeb.configCifradoCifrado dede cadenascadenas dede conexiónconexión concon DPAPIDPAPI

InstalaciónInstalación dede lala utilidadutilidad Aspnet_setregAspnet_setregUsoUso dede atributosatributos cifradoscifrados enen unun archivoarchivo

dede configuraciónconfiguraciónConcederConceder permisospermisos parapara clavesclaves deldel RegistroRegistro

Page 39: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

FallarFallar dede formaforma inteligenteinteligente (1(1 dede 2)2)

SiSi sese produceproduce unun error,error, asegúreseasegúrese dedequeque elel códigocódigo fallafalla dede formaforma segurasegura

DWORD dwRet = IsAccessAllowed(…);

if (dwRet == ERROR_ACCESS_DENIED) {

// Error de la comprobación de seguridad.

// Informe al usuario de que se deniega el acceso

} else {

// Comprobación de seguridad correcta.

// Se realiza la tarea…

}¿Qué ocurre si

IsAccessAllowed() devuelve

ERROR_NOT_ENOUGH_MEMORY?

¿Qué ocurre si IsAccessAllowed()

devuelve ERROR_NOT_

ENOUGH_MEMORY?

Page 40: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

FallarFallar dede formaforma inteligenteinteligente (2(2 dede 2)2)

NoNo hagahaga lolo siguiente:siguiente:Revelar información en mensajes de errorRevelar información en mensajes de error

Consumir recursos durante períodos Consumir recursos durante períodos prolongados después de un errorprolongados después de un error

Haga lo siguiente:Haga lo siguiente:Utilice bloques de tratamiento de Utilice bloques de tratamiento de excepciones para evitar devolver errores excepciones para evitar devolver errores a quien llamaa quien llama

Escriba los errores sospechosos en un Escriba los errores sospechosos en un registro de sucesosregistro de sucesos

<customErrors mode="Activado"/>

Page 41: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ProbarProbar lala seguridadseguridadHagaHaga queque loslos gruposgrupos dede pruebaspruebas participenparticipen desdedesde elel principioprincipioUtilice los modelos de amenazas para Utilice los modelos de amenazas para desarrollar estrategias de pruebas de seguridaddesarrollar estrategias de pruebas de seguridadPiense mal. Sea malo. Pruebe lo peorPiense mal. Sea malo. Pruebe lo peor

Automatice los ataques con secuencias de comandosAutomatice los ataques con secuencias de comandosy lenguajes de programación básicosy lenguajes de programación básicosEnvíe diversos datos no válidosEnvíe diversos datos no válidosElimine o deniegue el acceso a archivos o a entradasElimine o deniegue el acceso a archivos o a entradasdel Registrodel RegistroHaga pruebas con una cuenta que no sea de Haga pruebas con una cuenta que no sea de administradoradministrador

Conozca a su enemigo y conózcase a sí mismoConozca a su enemigo y conózcase a sí mismo¿Qué técnicas utilizaría un intruso?¿Qué técnicas utilizaría un intruso?¿Qué técnicas y tecnologías pueden utilizar quienes ¿Qué técnicas y tecnologías pueden utilizar quienes efectúan las pruebas?efectúan las pruebas?

Page 42: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

AprenderAprender dede loslos erroreserrores

SiSi encuentraencuentra unun problemaproblema dede seguridad,seguridad, aprendaaprenda deldel errorerror

¿Cómo se produjo el error de seguridad?¿Cómo se produjo el error de seguridad?

¿Se ha cometido el mismo error en otra ¿Se ha cometido el mismo error en otra parte parte del código?del código?

¿Como se habría evitado?¿Como se habría evitado?

¿Qué se debe cambiar para evitar repetir ¿Qué se debe cambiar para evitar repetir esta clase de error?esta clase de error?

¿Necesita actualizar el material de cursos ¿Necesita actualizar el material de cursos o las herramientas de análisis?o las herramientas de análisis?

Page 43: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ResumenResumen dede lala sesiónsesión

ProcesoProceso dede desarrollodesarrollo seguroseguro

Modelos de amenazasModelos de amenazas

Mitigación del riesgoMitigación del riesgo

Recomendaciones de seguridadRecomendaciones de seguridad

Page 44: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

PasosPasos siguientessiguientes1.1. MantenerseMantenerse informadoinformado sobresobre lala

seguridadseguridad Suscribirse a boletines de seguridad:Suscribirse a boletines de seguridad:

http://www.microsoft.com/http://www.microsoft.com/latam/technet/seguridad/boletines.asplatam/technet/seguridad/boletines.asp

Obtener las directrices de seguridad de Microsoft Obtener las directrices de seguridad de Microsoft más recientes:más recientes:http://www.microsoft.com/latam/technet/seguridad/http://www.microsoft.com/latam/technet/seguridad/

2.2. Obtener aprendizaje de seguridad Obtener aprendizaje de seguridad adicionaladicional

1.1. Buscar seminarios de aprendizaje en línea Buscar seminarios de aprendizaje en línea y presenciales:y presenciales:http://www.microsoft.com/http://www.microsoft.com/latam/technet/evento/default.asplatam/technet/evento/default.asp

1.1. Buscar un CTEC local que ofrezca cursos Buscar un CTEC local que ofrezca cursos prácticos:prácticos:http://www.microsoft.com/http://www.microsoft.com/spain/formacion/default.aspspain/formacion/default.asp http://www.microsoft.com/http://www.microsoft.com/latam/entrenamiento/default.asplatam/entrenamiento/default.asp

Page 45: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

ParaPara obtenerobtener másmás informacióninformación

SitioSitio dede seguridadseguridad dede MicrosoftMicrosoft (todos(todos loslos usuarios)usuarios)

http://www.microsoft.com/http://www.microsoft.com/latam/seguridadlatam/seguridad

Sitio de seguridad de MSDN Sitio de seguridad de MSDN (desarrolladores)(desarrolladores)

http://msdn.microsoft.com/securityhttp://msdn.microsoft.com/security (este sitio está en inglés)(este sitio está en inglés)

Sitio de seguridad de TechNet Sitio de seguridad de TechNet (profesionales de IT)(profesionales de IT)

http://www.microsoft.com/http://www.microsoft.com/latam/technet/seguridad/default.asplatam/technet/seguridad/default.asp

http://www.microsoft.com/http://www.microsoft.com/spain/technet/seguridad/default.aspspain/technet/seguridad/default.asp

Page 46: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.

PreguntasPreguntas yy RespuestasRespuestas

Page 47: Recomendaciones para la escritura de código seguro NombrePuestoCompañía.