El libro de la bruja‘ es como llama mi hija al libro ‘The tangled web‘ de Michal Zalewski (también conocido como lcamtuf).

Por fin he terminado este magnifico libro sobre seguridad en aplicaciones web modernas y voy a escribir algunos comentarios al respecto.

Para empezar, os recomiendo encarecidamente este libro si queréis comprender cómo funcionan las aplicaciones web y sus mecanismos de seguridad tanto actuales como los que están por venir.

Dicho esto, debo advertiros de que no se trata de un libro sobre programación segura ni se tratan problemas típicos como la inyección SQL.

Realmente, lo que hace este hombre es explicar la relación existente entre  los componentes de las aplicaciones web (servidor web, protocolo HTTP, navegador) y, sobre todo, se centra en las formas de explotar esa relación.

Así mismo, explica las diferencias de implementación de las medidas de protección en los navegadores. Es fascinante ver lo diferente que se comportan. De hecho, parte del libro surge de su estudio de los distintos navegadores reflejado en el browser security handbook.

Partiendo de la idea de que para poder gestionar la seguridad de un entorno, hay que conocerlo bien (el diablo está en los detalles), el mundo de los navegadores es engañosamente sencillo y, en muchos casos, anti-intuitivo.

Por ejemplo, algo tan sencillo como una URL da para un capítulo completo donde te vas a enterar de cosas que no sabías sobre este aparentemente trillado tema. Desde diferentes modos de codificación de los nombres de dominio a los distintos tipos de ‘scheme‘ (la parte que indica el ‘protocolo’ al principio de la URL) tales como ‘data:‘ Zalewski nos cuenta aquello que nos puede hacer pupita y las diferentes formas en las que gestionan los navegadores la URL cuando se construyen pensando en confundirlos.

Lo más importante del libro quizás sea la explicación de las técnicas de aislamiento que mantienen los navegadores. Principalmente el famoso y mal entendido Same Origin Policy (SOP). Aunque su formulación es muy sencilla, hay un conjunto de detalles a tener en cuenta en función de qué elementos estén implicados.

Zalewski también valora las recientes técnicas empleadas por desarrolladores precisamente para escapar al SOP e intercambiar información entre dominios.

Otro aspecto que me gustó mucho es el tratamiento de frames y contenidos insertados de otros dominios. El libro detalla qué medidas de protección frente a scripts insertados en tu página que provengan de otro dominio y cómo implementarlo de forma segura.

En todo el libro, Zalewski incluye su opinión (en muchos casos cínica y realista) y da una perspectiva de cómo han ido evolucionando los distintos navegadores, qué decisiones han tomado ante determinadas situaciones y cuales se plantean en el futuro.

El epílogo es ciertamente sorprendente y revelador ya que plantea hasta qué punto necesitamos más seguridad en el mundo digital que en el mundo real, mediante analogías de la vida cotidiana donde ‘confiamos’ en muchísimas actividades que realizamos y donde nuestros mecanismos de seguridad son, por así decirlo, imperfectos.

Tampoco quiero extenderme mucho más que no os quiero quitar tiempo de leerlo. Os dejo algunas perlas que me gustaron y que fui registrando en twitter.

All signs point to security being largely a nonalgorithmic problem for now

But despite claims to the contrary, such products are no substitute for street smarts and technical prowess—at least not today

Too often, “by keeping your fingers crossed” is the best response we can give

A whole new class of security vulnerabilities that a taxonomy buff might call a failure to account for undocumented diversity

Inquisitive readers are advised to grab Web Application Obfuscation (…) and then weep about the fate of humanity

If it comes to this, cookies will probably have to be redesigned from scratch” hablando de los TLDs genéricos

Instead, additional, sometimes hopelessly imperfect security boundaries need to be created from scratch

El amigo Wysopal (“quizá me conocáis de L0phtcrack, @stake, etc.”) ha preparado una lista de aplicaciones web inseguras con las que se pueden practicar técnicas de análisis de seguridad web sin miedo a romper nada o a que te metan en la cárcel (o peor, te quiten el Internet).

En fin, como ya he hecho publicidad y he puesto el enlace, voy a fusilar literalmente la lista aquí, para tenerla más a mano. Eso sí, para ver la lista actualizada, id a su artículo.

Offline:

Virtual Machines (VMs) or ISO images:

Online/Live:

Recordad que las aplicaciones web son una de las primeras líneas de defensa y que, por mucho WAF que pongas, suponen un riesgo de seguridad al que dedicarle mucho mimo. Mientras más sepas sobre seguridad web, mejor.

Sobre este tema, os recomiendo el último libro de M. Zalewski (lcamtuf): ‘The Tangled Web: A Guide to Securing Modern Web Applications’, del que podéis leer el tercer capítulo de gratis.

One flew east,
one flew west,
one flew over the cucko’s nest

Fantástica presentación de Bejtlich sobre lo que puede aprenderse del clásico libro ‘The cucko’s egg“.

En este libro, su autor, Cliff Stoll, cuenta como descubrió una trama de espionaje que robaba información de sistemas de los Estados Unidos.

En la presentación Bejtlich recoge las enseñanzas sobre monitorización y respuesta a incidentes que extrae tras leer el libro, animadas con capturas de una representación teatral (casi documental) que hicieron para televisión en la que actúan los propios implicados.

Tuve la oportunidad de leer este libro allá por el 2001 pero finalmente no lo hice :(. Y aunque siempre me he arrepentido, ahora me arrepiento más.

¿Qué puede aprenderse de este libro? Os incluyo la enumeración de Bejtlich traducida, aunque sólo sea para que se me quede mejor:

Lecciones sobre monitorización y análisis

  • “Dotarse de visibilidad” con una aplicación de contabilidad local
  • No dependas de una única “fuente de verdad”
  • El registro centralizado de actividad es una solución contra los intrusos que borran los logs locales
  • La monitorización pasiva de todo el tráfico captura todos los detalles sin alertar al intruso
  • Documenta el análisis en un libro de bitácora
  • Preguntas clave: ¿alcance de la intrusión, profundidad de la intrusión?
  • Monitorizar usando material abandonado es mejor que nada
  • Escritura de herramientas a medida para monitorizar y alertar
  • A alguien le importa: análisis por una persona que se tomó la intrusión de forma personal

Lecciones sobre la naturaleza de la intrusión

  • El intruso aprovecha credenciales débiles para acceder
  • El intruso utiliza una vulnerabilidad local para escalar privilegios
  • El intruso se aprovecha de relaciones de confianza
  • El intruso se aprovecha de configuraciones inseguras por defecto del fabricante
  • El intruso se aprovecha de la monocultura de sistemas (¡Unix de los ’80!)
  • Había información sensible accesible desde la red normal, por ejemplo, equipamiento de tratamiento de cáncer
  • Los propietarios de los sistemas le decían a Stoll repetidamente que una intrusión era “¡imposible — nuestros sistemas son seguros!
  • ¿Recuperación desde una imagen, re-construcción o desde backup?
  • La notificación externa es el método más común de detección

Lecciones sobre las verdades duraderas

  • De las 80 víctimas sólo dos se dieron cuenta (LBNL y NSA)
  • Las agencias del estado piden información pero dan poca
  • La comunicación de información sobre la intrusión compromete las operaciones de seguridad
  • Los intrusos desafían las suposiciones de los propietarios de la red
  • ¿Cuándo monitorizar al intruso y cuándo contenerlo?
  • ¿Cuánto cuesta la información robada? ¿Cuál es el coste del incidente?
  • Diversas técnicas de análisis proporcionan mejores resultados
  • No se puede confiar en que los sistemas se defiendan solos o que informen sobre su estado de seguridad
  • Los intrusos pueden ser creativos y persistentes

Por último, no os perdáis esta TED Talk de Cliff sobre… sobre… bueno, mejor que lo véais. Y no le toméis a mal el comentario “I find compurter security frankly to be kind of boring” :).

Acabo de empezar a leer ‘the myths of security‘ escrito por John Viega (@viega en twitter) y he pensado hacer un experimento. Voy a intentar ir comentando el libro conforme lo voy leyendo. Escribiré aquí los comentarios de mayor tamaño bajo el tag secmyths o en twitter los que sean más cortos, bajo el hashtag #secmyths.

the myths of security

Ya he hecho esto alguna vez sólo en twitter con ‘the new school of security’ y con ‘the human factor of information security’ aunque ahora, en este blog, pretendo elaborar un poco más y no sólo incluir citas sino también opiniones.

Veremos qué tal sale. Espero que lo disfrutéis.