Curso: (30227) Seguridad Informática



Documentos relacionados
Curso: (62612) Diseño de aplicaciones seguras

Curso: (62612) Diseño de aplicaciones seguras

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Desarrollo seguro en Drupal. Ezequiel Vázquez De la calle

XPERTO EN DISEÑO DE PÁGINAS WEB

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

MANUAL DE USUARIO. Webservice simple para la exportación rápida de información proveniente de una base de datos. Versión 0,1,1

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Internet Information Server

PROGRAMACIÓN PÁGINAS WEB CON PHP

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Dossier de prácticas

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Programación páginas web con ASP.NET 3.5 (C#)

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Detectar y solucionar infecciones en un sitio web

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Instalación, creación y configuración del servicio FTP

Qué es una aplicación web

PDF created with pdffactory Pro trial version

Unidad V: Programación del lado del servidor

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

Tema 4: Tecnologías Web Java

Ataques XSS en Aplicaciones Web

Internet Information Server

EXTENSIÓN DE UML PARA APLICACIONES WEB

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

Desarrollo Web en Entorno Servidor

Programación páginas web. Servidor (PHP)

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

19. Packages o paquetes

Fundamentos de programación Estudia las estructuras de control y cómo definir funciones en JavaScript.

Curso de PHP con MySQL Gratis

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

Productos para desarrollar aplicaciones web: ASP, CFM, JSP y PHP

Hacking Ético Web. I Jornadas Tecnológicas CEEPS Carlos García García i52gagac@uco.es

Soft4Web. Embedded Web Server + Program 11.14

Capítulo 4 Pruebas e implementación de la aplicación CAPÍTULO 4 PRUEBAS E IMPLEMENTACIÓN DE LA APLICACIÓN

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Componentes de Integración entre Plataformas Información Detallada

aplicaciones web: ASP, CFM, JSP y PHP

Capítulo 2.- Vulnerabilidades en aplicaciones web.

Arquitectura de Aplicaciones

PROCESO ADMINISTRACIÓN DE RECURSOS TECNOLÓGICOS SUBPROCESO ADMINISTRACIÓN DE CONTINGENCIAS

Portal Del Emisor MANUAL DEL USUARIO. Plataforma de Facturación Electrónica

Guía Rápida de Inicio

Firewalls, IPtables y Netfilter

CAPITULO IV CONCLUSIONES Y RECOMENDACIONES

Formatos para prácticas de laboratorio

UNIVERSIDAD DE SALAMANCA

Cherokee Web server. Alvaro López Ortega. Madrid España

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

Introducción al análisis automático de la seguridad de aplicaciones web

Electrónica: Configuración en Mozilla Firefox

CONSTRUCCIÓN DE PORTALES

Redes de área local: Aplicaciones y servicios WINDOWS

MANUAL DE INSTALACIÓN PLATAFORMA PROGRESA AUTOR: ASAC COMUNICACIONES DEPARTAMENTO DE DESARROLLO NOVIEMBRE DE 2007

Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos

SISTEMAS IDEALES SISTIDE, S.A. SISTEMA GESTION DE USUARIOS

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web.

UNIVERSIDAD DE OVIEDO

Práctica 5. Curso

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Capítulo I. Marco Teórico

Hostaliawhitepapers. Redirección 301. Cardenal Gardoki, BILBAO (Vizcaya) Teléfono:

INF 473 Desarrollo de Aplicaciones en Java

ASP.NET. Prof. Gina Huertas Camacho

GATEWAYS COMO FIREWALLS

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano

Crear un servidor Web en IIS

comunidades de práctica

Tema 1. Introducción a JAVA

Introducción a las Redes de Computadoras. Obligatorio

1 El trabajo expuesto está subvencionado por el proyecto de la URJC PGRAL-2001/14

Windows Server 2012: Identidad y Acceso. Módulo 2: Descripción General de Windows Server 2012 Remote Desktop Services.

CURSO DE ESPECIALISTA EN DESARROLLO DE APLICACIONES WEB

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

PLANEACIÓN DEL CURSO Y AVANCE PROGRAMÁTICO

RECETA ELECTRÓNICA Informe de Seguridad

I. DATOS DE IDENTIFICACIÓN. 1. Unidad Académica: _Facultad de Ciencias

Capítulo 2. Marco Teórico

Intervención General de la Administración del Estado

Práctica de introducción a

Nº de comunicación Romualdo Erdozain Iglesia

Ministerio de Educación,Cultura y Deporte. Aulas en Red. Windows. Módulo 2: Servicios Básicos. DNS

ASESORÍA GASA SL Sra. Yolanda Casadevall C. Castanyer 25 bajos Barcelona Sant Cugat del Valles, 16 de octubre de 2012

LICITACIÓN N L13045 NUEVO SISTEMA LEY DE TRANSPARENCIA

1

arquitectura que maneja. Encontraremos también los diferentes servidores que

Tema 4. Gestión de entrada/salida

Figura 4.6: Prototipo de la pantalla de inicio.

Anexo I. Politicas Generales de Seguridad del proyecto CAT

Capítulo VII PLAN DE IMPLEMENTACIÓN DE ALTO NIVEL

Transcripción:

Curso: (30227) Seguridad Informática Fernando Tricas García Departamento de Informática e Ingeniería de Sistemas Universidad de Zaragoza http://webdiis.unizar.es/~ftricas/ http://moodle.unizar.es/ ftricas@unizar.es

30227 Seguridad Informática. Fernando Tricas García. 2 Tema Auditoría y pistas sobre algunos lenguajes Fernando Tricas García Departamento de Informática e Ingeniería de Sistemas Universidad de Zaragoza http://webdiis.unizar.es/~ftricas/ http://moodle.unizar.es/ ftricas@unizar.es

30227 Seguridad Informática. Fernando Tricas García. 3 Auditoría de programas Hacer revisiones de código es productivo casi siempre, pero no siempre vale la pena: si hay problemas de este tipo, probablemente también los habrá mas graves. Cuanto antes pensemos en estas cosas, mejor. Por supuesto, no dejar de pensar en ellas. Primera auditoría: cuando se ha terminado el diseño del sistema, realizado por expertos

30227 Seguridad Informática. Fernando Tricas García. 4 Análisis de la seguridad: arquitectura Adquisición de información (aprender sobre el sistema) Leer y comprender las especificaciones, los documentos y otros materiales de diseño Discutir en grupo Determinar el contorno y cómo son los datos de críticos Jugar con el programa Estudiar el código Identificar las amenazas y acordar las fuentes relevantes de ataques

30227 Seguridad Informática. Fernando Tricas García. 5 Análisis de la seguridad: arquitectura Discutir cuestiones de seguridad del producto Discutir el funcionamiento del producto (y detectar desacuerdos o ambigüedades). Identificar vulnerabilidades posibles Hacer mapas de ataques y empezar a discutir posibles remedios Entender los sistemas de seguridad, tanto planeados como instalados (pueden introducir sus propios problemas)

30227 Seguridad Informática. Fernando Tricas García. 6 Análisis de la seguridad: arquitectura Calcular la probabilidad del compromiso Preparar escenarios para fallos y ataques Evaluar los controles contra esos ataques, para evaluar la probabilidad Hacer análisis de impacto Determinar el impacto en los bienes y las metas del negocio Considerar los impactos en la poĺıtica de seguridad

30227 Seguridad Informática. Fernando Tricas García. 7 Arquitectura: qué mirar? Examinar los requisitos (debería haberlos, no?) No tiene sentido buscar problemas que no son vistos como tales Si no los hay, es mejor empezar por construirlos

30227 Seguridad Informática. Fernando Tricas García. 8 Árboles de ataque Utilizar una visión de alto nivel del sistema Revisar la documentación relevante Conversar con los diseñadores Documentar contradicciones y discrepancias Establecer un plan de ataque Buscamos no sólo riesgos reales, sino también potenciales Al informar: describir los posibles ataques, análisis de las consecuencias, técnicas de mitigación

Ejemplo: Robar hw 30227 Seguridad Informática. Fernando Tricas García. 9

30227 Seguridad Informática. Fernando Tricas García. 10 Microsoft STRIDE Threat Model Spoofing (Suplantar) Tampering (Modificar) Repudiation (Renegar) Information disclosure (Divulgar información) Denial of service (Denegación de servicio) Elevation of privilege (Elevación de privilegios) http://msdn.microsoft.com/en-us/library/ee823878(v=cs.20).aspx Y, como un juego: Elevation of Privilege (EoP) Card Game http://www.microsoft.com/security/sdl/adopt/eop.aspx Libro: Adam Shostack. Threat Modeling: Designing For Security. Wiley. 2014.

30227 Seguridad Informática. Fernando Tricas García. 11 Auditoría de la implementación Objetivos Validar que la programación realmente cumple la especificación A veces, irrealizable Puede ser mejor hacer las preguntas adecuadas a los desarrolladores Fallos propios de esta fase desbordamiento de buffer, condiciones de carrera,... Complicado!

30227 Seguridad Informática. Fernando Tricas García. 12 Auditoría de código Una auditoría completa es demasiado trabajo, normalmente basta con una auditoría suficientemente completa. Identificar puntos de entrada al programa Entradas de los usuarios Entradas de otros programas Lecturas de la red, de un fichero, de las interfaces... Cómo es el API de entrada?

30227 Seguridad Informática. Fernando Tricas García. 13 Auditoría de código Buscar síntomas de problemas Experiencia Examen cuidadoso No siempre lo que parece peligroso lo es Tan profunda como sea posible

30227 Seguridad Informática. Fernando Tricas García. 14 Herramientas Primera etapa: análisis léxico (búsqueda de patrones) ITS4 (Cigital, abandonada) RATS (Fortify, abandonada) Flawfinder (http://www.dwheeler.com/flawfinder/) Son poco mas que buscadores de cadenas o de patrones.

30227 Seguridad Informática. Fernando Tricas García. 15 Herramientas... Segunda generación: análisis sintáctico y (cada vez) más Coverity (http://www.coverity.com/) HP Fortify Static Code Analyzer (Antes Fortify) (http://www8.hp.com/us/en/software-solutions/static-code-analysis-sast/) IBM Security AppScan Source (Antes Ounce Labs). (http://www-01.ibm.com/software/rational/products/appscan/source/)

30227 Seguridad Informática. Fernando Tricas García. 16 Las plataformas y sus consecuencias Aviso: elegir una tecnología supone elegir también sus problemas asociados

30227 Seguridad Informática. Fernando Tricas García. 17 CGI Common Gateway Interface (CGI) Cualquier ejecutable puede invocarse desde el servidor web La entrada al programa es mediante: variables de entorno entrada estándar ĺınea de instrucciones La salida deben ser instrucciones HTTP por la salida estándar Prácticamente ya no se usa, pero las plataformas actuales heredan algunas características

30227 Seguridad Informática. Fernando Tricas García. 18 CGI. Variables de entorno Estáticas GATEWAY INTERFACE (versión) SERVER SOFTWARE (programa y versión) Directas: REMOTE ADDR REMOTE HOST REMOTE IDENT... Se traducen a variables de entorno y se transmiten a la aplicación Las variables a mayúsculas Se añade HTTP delante

30227 Seguridad Informática. Fernando Tricas García. 19 CGI. Variables Replicadas Cada ĺınea HTTP que ve el servidor web puede generar una Algunas puede que no Sintetizadas Variables relativas al nombre de los objetos referenciados (que, a pesar de que originalmente tenían que ver con objetos del sistema, actualmente en muchos casos no tiene por qué ser así)

30227 Seguridad Informática. Fernando Tricas García. 20 Perl Empezó usándose para programitas CGI por su flexibilidad y desarrollo rápido de aplicaciones de procesamiento de texto Problemas de inyección de SQL: Prevenciones habituales Acceso a ficheros open() Invocación de un intérprete de instrucciones (shell) open(), system(), exec() Comillas invertidas: $fileinfo = ls -l $filename Inclusión de ficheros: require(). También use(), do()

30227 Seguridad Informática. Fernando Tricas García. 21 Perl Evaluación en ĺınea eval() Cross Site Scripting HTML::Entities::encode() URI::Escape::uri encode() Y algunas mas... Taint Mode Vigila variables que contienen datos provenientes del exterior Si el programa va a hacer algo peligroso, falla

30227 Seguridad Informática. Fernando Tricas García. 22 PHP Inyección SQL Atención! Acceso a ficheros fopen(), readfile(), dir(), unlink(), file(), mkdir(), symlink(), get file contents() $myfile = /usr/local/myapp/var/:.$ GET[ filename ]; $fp = fopen($myfile, r ) También conexiones (urls: http, ftp,... ) Aunque se puede desactivar con allow url fopen en el php.ini Invocación intérprete de instrucciones exec(), shell exec(), system(), popen(), proc open(), passthru()

30227 Seguridad Informática. Fernando Tricas García. 23 PHP Inclusión de ficheros require, include mejor require once() e include once() Evaluación en ĺınea eval() preg replace() (con /e ) ejecuta un código determinado por cada texto que satisface la expresión Cross site scripting htmlspecialchars(), htmlentities(), urlencode()

30227 Seguridad Informática. Fernando Tricas García. 24 PHP Configuración register globals: cualquier variable enviada por los usuarios se pone a disposición del programa (cada vez se usa menos). Principalmente es peligroso con variables del programa que no se han inicializado magic quotes: Opción de configuración magic quotes gpc (get, post, cookies) magic quotes runtime (también para otros valores generados en tiempo de ejecución).inc opción. Se trata de poner determinados ficheros de configuración con esa extensión. Si el servidor no está bien configurado, puede ocurrir que la configuración se muestre.

30227 Seguridad Informática. Fernando Tricas García. 25 Java Inyección SQL Ojo!! Acceso a ficheros java.io getrealpath(), getpathtranslated() Acceso al interprete de instrucciones No se usa mucho getruntime() en java.lang Luego exec() Inclusión de ficheros RequestDispacher (para transferir el control de flujo) Cuidado con include(), forward()

30227 Seguridad Informática. Fernando Tricas García. 26 Java Inclusión de ficheros JSP < %@ include file= include.jsp %> <jsp: include page= include.jsp /> <jsp: include page= < % browseractions/ + request. getparameter( actionpage ) +.jsp %> Evaluación inline Java no ejecuta el código sobre la marcha (hay compilación) Pero hay algunos sistemas para permitir ese tipo de ejecución (BeanShell, Jython y, claro, ejecución de ficheros JSP). Cross Site Scripting java.net.urlencoder.encode() Método response.encodeurl() codifica datos para salida Cuidado con las etiquetas <c> (sólo sirven las <c:out>)

30227 Seguridad Informática. Fernando Tricas García. 27 Java Problemas con la concurrencia Hay que tener cuidado de que los servlets sean seguros frente a la concurrencia Se puede hacer que sean secuenciales (SingleThereadModel) Cuidado con las variables globales,..., (o similares) Configuración Los servlets se pueden ver como un árbol web virtual en web.xml en el directorio WEB-INF Todos los servlets que se ofrezcan al exterior son potencialmente peligrosos: los menos posibles, y en las condiciones mas exigentes posibles

ASP. Active Server Pages Inyección de SQL Típicamente se usan lo ActiveX Data Objects (ADO) Connection (cuidado con Connection.Execute() Command (Command.Execute()) RecordSet (el método Open ) Acceso a ficheros Objeto Scripting.FileSystemObject Y los relacionados Acceso al intérprete de instrucciones Habitualmente se hace a través del objeto Windows Scripting Host (WshShell) aunque no es tan habitual como en Unix. Métodos Exec(), Run() Inclusión de ficheros Habitualmente se hace mediante SSI (Server Side Includes) lo que lo inmuniza frente a algunos problemas (se procesa antes de mostrarse). De todas formas, cuidado con Server.Execute(), Server.Transfer() 30227 Seguridad Informática. Fernando Tricas García. 28

30227 Seguridad Informática. Fernando Tricas García. 29 ASP Evaluación en ĺınea VBScript es el lenguaje utilizado habitualmente Execute(), Eval(), ExecuteGlobal() Cros Site Scripting Server.HTMLEncode() Server.URLEncode() Configuración Ficheros.inc (cuidado con que el servidor los maneje correctamente, igual que en PHP)

30227 Seguridad Informática. Fernando Tricas García. 30 ASP.Net Inyección de SQL System.Data para interactuar con las fuentes de datos Cuidado con fijar los tipos de datos Acceso a ficheros La entrada salida se gestionan mediante System.IO Pero hay mas posibilidades Invocación del intérprete de instrucciones Process.Start() Inclusión de ficheros Como Java, no es fácil incluir programas dinámicamente <! #include file= inc footer.aspx > Evaluación en ĺınea No está permitida la ejecución directa System.CodeDom.Compiler permite ejecutar para diversos lenguajes

30227 Seguridad Informática. Fernando Tricas García. 31 ASP.Net Cross Site Scripting Server.HTMLEncode(), Server.URLEncode() Deniega expĺıcitamente peticiones que contienen < y > Configuración web.config Puede ser también machine.config ViewState Se almacena en el cliente, mediante una cookie, con información sobre contenido de formularios, y otras informaciones Protegido, pero no cifrado Se puede cifrar (pero hay que activarlo)

30227 Seguridad Informática. Fernando Tricas García. 32 ASP.Net Control de acceso ASP.Net permite establecer control de acceso para todo el sitio. Autorización web.config permite configurar restricciones sobre métodos, usuarios, grupos, papeles,... AppSettings En web.config para proporcionar parámetros específicos para una aplicación