(…)
—Perdona por la interrupción. Como te decía, desde el punto de vista de Alicia, hay poco que pueda hacer. Puede desactivar la ejecución de script en su navegador, lo que la dejará sin poder visitar muchas de las páginas que le interesan. Puede activarlo sólo para los sitios de confianza, asumiendo que éstos no son vulnerables a este tipo de ataques (lo que es mucho asumir) y, por supuesto, ser sanamente desconfiada para evitar la parte de ingeniería social del ataque. Y poco más. La responsabilidad está en quienes han desarrollado el sitio web vulnerable, que deben corregir la aplicación Web para que no lo sea.
—¿Se puede conseguir eso?
—Claro. El éxito del ataque se basa en que el sitio Web devuelve el código script que se le inyecta y que se ejecuta en el navegador de Alicia. Basta con no hacerlo.
—¿No devolver el script que luego se ejecuta?
—Ese es el enfoque que siguen muchos desarrolladores. Aplicar “html encoding“. ¿Sabes lo que significa?
—Sí, claro, se trata de “escapar” un carácter especial de un código html para que se muestre como tal, en lugar de ser interpretado por el navegador. Se utiliza siempre que se muestran ejemplos de html en un sitio Web.
—Exacto. Si quiero que en una página salga “<br />” en lugar de un salto de línea en el navegador, debo escribir “<br />”, ya que esa secuencia tiene un significado especial. He de indicarle al navegador que no debe interpretarla, sino mostrarla, utilizando < para “<” y lo mismo con el resto de caracteres.
—Entonces, basta con “escapar” todos los caracteres especiales.
—En principio. Claro que eso tiene el inconveniente de no permitir al usuario que introduzca negritas, cursivas o enlaces dentro de su texto. Quizás un inconveniente aceptable.
—Bueno, se pueden permitir algunos de los caracteres especiales o, mejor dicho, determinadas combinaciones, como “<a href=”, pero no otras, como “<script>”.
—Sí, claro. Es la táctica de detectar las entradas no deseables y eliminarlas o neutralizarlas. El problema es que hay más formas de introducir un script en un texto de manera que no se detecte con facilidad. Por ejemplo, se puede introducir “%3D%3C%73%63%72%69%70%74%3E”, que es lo mismo que “<script>”, como parte de una URL. Pero lo peor es que puedes estar protegiendo la aplicación frente a determinadas formas de introducir un script, pero luego aparecer en el futuro otras que no tenías previstas y no ser capaz de detectarlas.
—Pero seguro que sabes una solución y me la vas a contar…
—Pues la solución es obvia, si aplicamos una de las buenas prácticas de programación que cualquier buen desarrollador conoce: validar cualquier entrada del usuario contra una especificación de las entradas correctas. O sea, admitir lo que es correcto según las especificaciones del programa y rechazar cualquier otra cosa.
—Usando expresiones regulares.
—Es uno de los métodos más útiles, sí.
—En resumen, que el XSS se evita controlando bien todas las entradas a la aplicación, validándolas según la especificación de lo que se considere una entrada correcta.
—Ni más, ni menos.


(Sin votos todavía)

Loading ...
—Maestro, una vez más me atrevo a acercarme a ti con mis preguntitas sobre seguridad.
—Menos guasa, que ya sabes que yo “sólo sé que no sé nada”.
—Bueno, algo sabes…
—¿Qué tripa se te ha ro… digo… en qué puedo ayudarte?
—Estaba leyendo un blog en el que se hablaba de Cross-Site Scripting y, la verdad, no consigo entender de qué va el asunto; ni San Google me ha podido ayudar. Sólo he sacado en claro que el nombre no es del todo descriptivo y que se trata de utilizar una vulnerabilidad para inyectar código en un sitio para obtener datos de un usuario que cree estar visitando otro o algo así.
—Pues efectivamente, se trata de aprovechar una vulnerabilidad y es de lo más interesante. Es uno de los casos en los que puede caer hasta un usuario prudente, ya que no depende de que realice una actividad temeraria durante la navegación. Como sabes que suelo hacer, empezaré por describirte un posible escenario de lo que puede pasarle a un usuario, antes de entrar en la descripción de las interioridades.
“Alicia está leyendo uno de sus blogs favoritos sobre economía. Esta vez hay un post sobre un tema un tanto polémico y, como suele ocurrir, alguno de los comentarios es un poco incendiario, por lo que todos los demás se dedican a darle la razón o a contradecirlo. Alicia, curiosa, navega hasta el comentario en cuestión, lo lee, y aporta su opinión, identificándose previamente como usuaria registrada. El mal ya está hecho.
(Leer el resto de la entrada…)


(Sin votos todavía)

Loading ...
Siguiendo con la serie de posts sobre las ponencias de la jornada Seguridad 2008 del jueves pasado en Valencia, corresponde a este intrépido reportero dar noticia de las ideas principales de la charla de D. Salvador Soriano, subdirector general de servicios de la sociedad de la información, que habló sobre la Ley de Medidas de Impulso de la Sociedad de la Información o LISI.
Al parecer, una de las barreras principales para la extensión de los servicios de la sociedad de la información es la desconfianza de los ciudadanos. Estamos en las primeras posiciones de la Unión Europea en cuanto a falta de confianza en la seguridad en el uso de las TIC. Además, a pesar de que nuestras administraciones figuran en los primeros puestos en cuanto a servicios telemáticos ofrecidos a los ciudadanos y las empresas, estas últimas están a la cola en cuanto al uso de dichos servicios.
(Leer el resto de la entrada…)


(Sin votos todavía)

Loading ...
Si no sigues estos consejos, incrementas la probabilidad de perder información o de que te la roben. Siguiendo una cierta tradición de los decaloguistas, pondremos 11.
1. Haz copias de seguridad… y comprueba de vez en cuando que funcionan.
(Leer el resto de la entrada…)


(Sin votos todavía)

Loading ...
No se puede basar la seguridad de un programa en el secreto de los algoritmos utilizados o de su implementación (el secreto se debe aplicar a las claves privadas). Aunque parezca paradójico, es más seguro poner a disposición pública el código fuente de un programa que mantenerlo en secreto. Abrir el código supone exponer sus vulnerabilidades y parecería que es mejor que los delincuentes no puedan verlas, que no les demos esa ventaja.
Sin embargo, hay que tener en cuenta que los delincuentes buscan vulnerabilidades de dos formas: (a) ejecutando el programa, proporcionándole datos “problemáticos” y analizando los resultados o (b) buscando patrones en el código fuente. En el primer caso no se requiere los fuentes y en el segundo se pueden obtener mediante un des-compilador (suficiente para buscar vulnerabilidades, aunque no para entender y modificar la funcionalidad de un programa).
(Leer el resto de la entrada…)


(
+5 rating,
1 votes)

Loading ...