• No se han encontrado resultados

Curso: (62612) Diseño de aplicaciones seguras

N/A
N/A
Protected

Academic year: 2021

Share "Curso: (62612) Diseño de aplicaciones seguras"

Copied!
20
0
0

Texto completo

(1)

Curso: (62612) Dise˜ no de aplicaciones seguras

Fernando Tricas Garc´ıa

Departamento de Inform´atica e Ingenier´ıa de Sistemas Universidad de Zaragoza

http://webdiis.unizar.es/~ftricas/

http://moodle.unizar.es/

[email protected]

(2)

Tema XV: Algunos lenguajes

Fernando Tricas Garc´ıa

Departamento de Inform´atica e Ingenier´ıa de Sistemas Universidad de Zaragoza

http://webdiis.unizar.es/~ftricas/

http://moodle.unizar.es/

[email protected]

(3)

Las plataformas y sus consecuencias

Recordatorio: elegir una tecnolog´ıa supone elegir tambi´en sus problemas asociados

I Vamos a comentar un poco sobre ello, ahora que tenemos conocimientos suficientes

(4)

Las plataformas y sus consecuencias

Recordatorio: elegir una tecnolog´ıa supone elegir tambi´en sus problemas asociados

I Vamos a comentar un poco sobre ello, ahora que tenemos conocimientos suficientes

(5)

CGI

Common Gateway Interface (CGI)

I Cualquier ejecutable puede invocarse desde el servidor web

I La entrada al programa es mediante variables de entorno, entrada est´andar y l´ınea de instrucciones

I La salida deben ser instrucciones HTTP por la salida est´andar

I Pr´acticamente ya no se usa, pero las plataformas actuales heredan algunas caracter´ısticas

(6)

CGI. Variables de entorno

Est´aticas

I GATEWAY INTERFACE (versi´on)

I SERVER SOFTWARE (programa y versi´on) Directas:

I REMOTE ADDR

I REMOTE HOST

I REMOTE IDENT

I . . .

Se traducen a variables de entorno y se transmiten a la aplicaci´on

I Las variables a may´usculas

I Se a˜nade HTTP delante

(7)

CGI. Variables

Replicadas

I Cada l´ınea HTTP que ve el servidor web puede generar una

I Algunas puede que no Sintetizadas

I 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´e ser as´ı)

(8)

Perl

I Empez´o us´andose para programitas CGI por su flexibilidad y desarrollo r´apido de aplicaciones de procesamiento de texto Problemas de inyecci´on de SQL:

I Prevenciones habituales Acceso a ficheros

I open()

Invocaci´on de un int´erprete de instrucciones (shell)

I open(), system(), exec()

I Comillas invertidas: $fileinfo = ‘ ls -l $filename ‘ Inclusi´on de ficheros:

I require(). Tambi´en use(), do()

(9)

Perl

Evaluaci´on en l´ınea

I eval()

Cross–Site Scripting

I HTML::Entities::encode()

I URI::Escape::uri encode()

I Y algunas mas . . . Taint Mode

I Vigila variables que contienen datos provenientes del exterior

I Si el programa va a hacer algo peligroso, falla

(10)

PHP

Inyecci´on SQL

I Atenci´on!

Acceso a ficheros

I fopen(), readfile(), dir(), unlink(), file(), mkdir(), symlink(), get file contents()

$myfile = ”/usr/local/myapp/var/:”.$ GET[’filename’];

$fp = fopen($myfile, ”r”)

I Tambi´en conexiones (urls: http, ftp, . . . )

Aunque se puede desactivar con allow url fopen en el php.ini Invocaci´on int´erprete de instrucciones

I exec(), shell exec(), system(), popen(), proc open(), passthru()

(11)

PHP

Inclusi´on de ficheros

I require, include

I mejor require once() e include once() Evaluaci´on en l´ınea

I eval()

I preg replace() (con /e ) ejecuta un c´odigo determinado por cada texto que satisface la expresi´on

Cross–site scripting

I htmlspecialchars(), htmlentities(), urlencode()

(12)

PHP

Configuraci´on

I register globals: cualquier variable enviada por los usuarios se pone a disposici´on del programa (cada vez se usa menos).

Principalmente es peligroso con variables del programa que no se han inicializado

I magic quotes:

I Opci´on de configuraci´on magic quotes gpc (get, post, cookies)

I magic quotes runtime (tambi´en para otros valores generados en tiempo de ejecuci´on)

I .inc opci´on. Se trata de poner determinados ficheros de configuraci´on con esa extensi´on. Si el servidor no est´a bien configurado, puede ocurrir que la configuraci´on se muestre.

(13)

Java

Inyecci´on SQL

I Ojo!!

Acceso a ficheros

I java.io

I getRealPath(), getPathTranslated() Acceso al interprete de instrucciones

I No se usa mucho

I getRuntime() en java.lang

I Luego exec() Inclusi´on de ficheros

I RequestDispacher (para transferir el control de flujo)

(14)

Java

Inclusi´on de ficheros JSP

I < %@ include file=”include.jsp” %>

I <jsp: include page=”include.jsp” />

I <jsp: include page=’< %”browserActions/” + request .getParameter(” actionPage”) + ”.jsp” %>

Evaluaci´on ‘inline’

I Java no ejecuta el c´odigo sobre la marcha (hay compilaci´on)

I Pero hay algunos sistemas para permitir ese tipo de ejecuci´on (BeanShell, Jython y, claro, ejecuci´on de ficheros JSP).

Cross Site Scripting

I java.net.UrlEncoder.encode()

I M´etodo response.encodeURL() codifica datos para salida

I Cuidado con las etiquetas <c> (s´olo sirven las <c:out>)

(15)

Java

Problemas con la concurrencia

I Hay que tener cuidado de que los servlets sean seguros frente a la concurrencia

I Se puede hacer que sean secuenciales (SingleThereadModel)

I Cuidado con las variables globales, . . . , (o similares) Configuraci´on

I Los servlets se pueden ver como un ´arbol web virtual en web.xml en el directorio WEB-INF

I Todos los servlets que se ofrezcan ’al exterior’ son potencialmente peligrosos: los menos posibles, y en las condiciones mas exigentes posibles

(16)

ASP. Active Server Pages

Inyecci´on de SQL

I T´ıpicamente se usan lo ActiveX Data Objects (ADO)

I Connection (cuidado con Connection.Execute()

I Command (Command.Execute())

I RecordSet (el m´etodo Open ) Acceso a ficheros

I Objeto Scripting.FileSystemObject

I Y los relacionados

Acceso al int´erprete de instrucciones

I Habitualmente se hace a trav´es del objeto Windows Scripting Host (WshShell) aunque no es tan habitual como en Unix.

I etodos Exec(), Run() Inclusi´on de ficheros

I Habitualmente se hace mediante SSI (Server Side Includes) lo que lo inmuniza frente a algunos problemas (se procesa antes de mostrarse).

I De todas formas, cuidado con Server.Execute(),

(17)

ASP

Evaluaci´on en l´ınea

I VBScript es el lenguaje utilizado habitualmente

I Execute(), Eval(), ExecuteGlobal() Cros Site Scripting

I Server.HTMLEncode()

I Server.URLEncode() Configuraci´on

I Ficheros .inc (cuidado con que el servidor los maneje correctamente, igual que en PHP)

(18)

ASP.Net

Inyecci´on de SQL

I System.Data para interactuar con las fuentes de datos

I Cuidado con fijar los tipos de datos Acceso a ficheros

I La entrada salida se gestionan mediante System.IO

I Pero hay mas posibilidades

Invocaci´on del int´erprete de instrucciones

I Process.Start() Inclusi´on de ficheros

I Como Java, no es f´acil incluir programas din´amicamente

I <!−−#include file=”inc footer.aspx”−−>

Evaluaci´on en l´ınea

I No est´a permitida la ejecuci´on directa

I System.CodeDom.Compiler permite ejecutar para diversos

(19)

ASP.Net

Cross Site Scripting

I Server.HTMLEncode(), Server.URLEncode()

I Deniega expl´ıcitamente peticiones que contienen < y >

Configuraci´on

I web.config

I Puede ser tambi´en machine.config ViewState

I Se almacena en el cliente, mediante una cookie, con informaci´on sobre contenido de formularios, y otras informaciones

I Protegido, pero no cifrado

(20)

ASP.Net

Control de acceso

I ASP.Net permite establecer control de acceso para todo el sitio.

Autorizaci´on

I web.config permite configurar restricciones sobre m´etodos, usuarios, grupos, papeles,. . .

AppSettings

I En web.config para proporcionar par´ametros espec´ıficos para una aplicaci´on

Referencias

Documento similar

Fuente de emisión secundaria que afecta a la estación: Combustión en sector residencial y comercial Distancia a la primera vía de tráfico: 3 metros (15 m de ancho)..

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

En la medida en la que la movilidad geográfica comporta una mayor insatisfacción con el trabajo, afecta negativa- mente a la salud o dificulta los proyectos de vida familiar

-.. 33 - Reactor: debemos seleccionar como entrada la salida del mezclado, y como salida la entrada al reactor de equilibrio en el apartado ‘’Design’’. En este

 Tejidos de origen humano o sus derivados que sean inviables o hayan sido transformados en inviables con una función accesoria..  Células de origen humano o sus derivados que

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

Tras el estudio de la plataforma y entorno de desarrollo Android as´ı como el funciona- miento y estructura del est´ andar SCORM o las aplicaciones educativas para ejecutar

Hecha la denuncia de esta primera invisibilización se propone la construcción de la comunicación alternativa como objeto de investigación social a través de un trabajo teórico