Seguridad en Aplicaciones Web, edición Tenerife

Hace unos meses me llegaba la petición: realizar un curso de seguridad en aplicaciones web para el Gobierno de Canarias a través del ICAP (el Instituto Canario de Administración Pública). Se trataba de 20 horas de concienciación y profundización en un tema que me apasiona y además a impartir en mi tierra (dos sesiones, una en Santa Cruz de Tenerife y otra en Las Palmas de Gran Canaria).

Era, a todos los efectos, un revival del periodo 2007-2010 de mi vida: antes de ser consultor, antes de Deloitte o trabajar por mi cuenta, una época en la que vivía en Gran Canaria y la Dirección General de Telecomunicaciones y Nuevas Tecnologías (DGTNT) aparecía en todos los sitios por los que me movía (la oposición a la que me presenté, mi trabajo durante un año en el CGP Oro que Telefónica de España tenía con el Gobierno de Canarias…). Curiosidad tenía, no puedo decir que no.

Además, siempre me ha gustado la idea ser profesor y este curso era una oportunidad fabulosa de probar una nueva faceta de mi mismo.

Ya está disponible la entrada en la que hablo de la segunda edición del curso, en Las Palmas de Gran Canaria.

Armando el curso

Concienciar y formar al personal tecnológico del Gobierno de Canarias en las vulnerabilidades de seguridad que afectan a las infraestructuras y aplicaciones Web, técnicas de ataque, mecanismos de defensa y requisitos de seguridad.

Así rezaba el objetivo del proyecto, le acompañaban tres documentos de soporte:

  • Los requisitos de seguridad que todas las aplicaciones web del Gobierno de Canarias deben satisfacer antes de su puestas en producción.
  • El proceso de certificación a través del cual se garantiza que las aplicaciones web Gobierno de Canarias se ajustan a los anteriores.
  • Las herramientas de seguridad recomendadas para la realización de las tareas de securización y auditoría de las aplicaciones web.

Con esta base, preparé el curso a conciencia con unas premisas básicas: cubrir en detalle todo el material proporcionado, concienciar desde los puntos de vista técnico y de negocio (qué es lo que puede pasar y qué consecuencias puede haber) y facilitar todas las herramientas necesarias para que los asistentes, cada uno en la medida de sus responsabilidades, pudiesen ponerse a trabajar desde el día siguiente con las ideas claras, unas prioridades concretas y una guía de referencia bajo el brazo. Es por ello que, además del material facilitado por la DGTNT, dedicaría bastante tiempo al OWASP Top 10, la guía de referencia sobre los diez riesgos de seguridad más críticos en aplicaciones web.

Por otro lado, también tenía claro que el curso tenía que tener también un potente enfoque práctico, por lo que preparé un entorno de pruebas (de estilo laboratorio) con las siguientes herramientas:

Logo de WebGoat

Logo de WebGoat (sí, es una cabra, cosas de hackers).

  • La suite de herramientas Zed Attack Proxy (ZAP!) de OWASP (link) que incluye proxy intermedio para interceptar, inspeccionar y modificar a voluntad las comunicaciones HTTP que se realizan por el navegador, así como muchas otras herramientas útiles (spider, analizador automático, etc.).
  • La aplicación deliberadamente vulnerable WebGoat (link), una aplicación web JEE que se instalaría en local para ser atacada a través de ejercicios guiados que cubrirían múltiples conceptos básicos y vulnerabilidades.

El desarrollo del curso en Tenerife

El aula, lista para el curso (instalaciones del ICAP en Santa Cruz de Tenerife).

El aula, lista para el curso (instalaciones del ICAP en Santa Cruz de Tenerife).

En este tipo de formación el aforo máximo del aula de informática es el que determina cuánta gente puede atender, y en el caso de la sede tinerfeña era de dieciocho personas.

Mi primera sorpresa fue la asistencia y la involucración: dieciocho puestos cubiertos de dieciocho, ningún hueco libre en clase, y ni una sola falta de asistencia en los cuatro días del curso.

Pese a la diversidad de perfiles (desde programadores web hasta técnicos de la DGTNT), todos se mostraron interesados y volcados, nunca llegando tarde por las mañanas, apenas estirando los descansos más de la cuenta y aguantando hasta las 14:00 sin rechistar. Si esto obedece a algo, es al acierto del personal del ICAP en el proceso de selección, todos los que vinieron querían estar.

Día 1

Primero, un comienzo relajado con la presentación de los asistentes en la que exponían sus intereses en el curso seguida de una alineación de conocimientos que aseguraba que todos estuviésemos en la misma página (desde conceptos básicos de TCP/IP hasta la ciberseguridad, pasando por SOA, las arquitectura de 3 o 4 capas y demás aspectos técnicos necesarios).

Después, tocaba entrar en materia con la revisión de las herramientas de seguridad y la primera práctica en la que cubríamos todos los puntos base que nos servirían los próximos días: utilización de ZAP como proxy intermedio para analizar peticiones y respuestas HTTP, entender cómo se comporta en el caso de conexiones seguras (HTTPs), analizar el tráfico que se genera al navegar hacia una web comercial (como un periódico online), así como una primera experiencia hacker en la que utilizaban los conocimientos para modificar a voluntad una comunicación HTTP.

Imprevistos
Era evidente que el aula era una sala de ordenadores de toda la vida y que el proyector fue un añadido de última hora: no había pantalla de proyección y el proyector estaba apoyado en la primera fila de mesas, además era bastante antiguo (una resolución muy baja y una lámpara en las últimas, apenas sin brillo). ¿Las consecuencias? Las previsibles: la superficie proyectada era pequeña y el ángulo bajo, por lo que las personas en las filas posteriores apenas podían ver nada. Además, la persona que se sentaba junto al proyector tenía que soportar el calor y el zumbido del aparato (nada agradable).

Soluciones
El aparato, su posición, la superficie proyectada y el bajo brillo no tenían arreglo, por lo que hice lo que pude: apagar las luces para que se viese mejor. Luego, acabada la clase, me tocó rehacer la presentación con un tamaño de fuente muy superior y casi el doble de diapositivas para conseguir que las personas de atrás pudiesen también ver algo. Por supuesto, yo me sabía la teoría, esa que dice «antes de presentar, conoce la sala», pero esto no siempre es posible en la vida real. Me aseguraré a partir de ahora que las presentaciones a proyectar en sitios que no conozco previamente siempre vayan con letra enorme, por si acaso.

Día 2

Un breve resumen de lo cubierto el día anterior era la única tregua de un día muy complicado, en el que se cubría la totalidad del proceso de certificación y en el que se veíamos un resumen ejecutivo que había preparado de los requisitos de seguridad (en el que cubría todas las categorías a alto nivel, explicando todos conceptos pero sin entrar en los detalles concretos).

La parte práctica tomaba como base lo aprendido el día anterior y aprovechando que los asistentes ya sabía interceptar peticiones HTTP entrábamos de lleno a romper esquemas de autorización de acceso a recursos y realizar inyecciones XML.

Imprevistos
Este era el primer día de prácticas en serio, el anterior había sido una toma de contacto. Mi idea era aprovechar el perfil técnico de los asistentes para dejarles bastante libertad para pensar, dedicar los minutos iniciales a debatir en grupo el mejor enfoque para resolver la práctica, que trabajasen y descubriesen las soluciones por si mismos sin apenas ayuda por mi parte (que es como de verdad se aprende). Sin embargo, al rato de comenzar se hizo evidente que ese enfoque no estaba funcionando.

Soluciones
Hice un cambio sobre la marcha: las prácticas serían guiadas. Quité la proyección (pulsando la letra ‘b’ o ‘n’ en PowerPoint, según el idioma configurado), fui a la pizarra y expliqué las alternativas, dando ideas de como afrontar los ejercicios y luego yendo puesto por puesto solucionando dudas. Así los asistentes iban a aprender menos, pero al menos la experiencia sería mucho más fluida, menos frustrante. Como contrapartida podríamos hacer muchas más prácticas para cubrir más temario. Nuevamente por la tarde tocó modificar la presentación para incluir guías paso a paso de como resolver cada práctica de los siguientes días.

Día 3

No quedaba más remedio que afrontar el día crítico y entrar de lleno en las obligaciones y recomendaciones que las aplicaciones web tienen que superar para ser aceptadas. Diez categorías, una general introducida por la DGTNT y las nueve propias de OWASP (autenticación, autorización, gestión de sesiones, validación de datos, configuración de la infraestructura, denegación de servicio, manejo de errores, protección de datos y servicios web).

Al cierre, una sesión práctica muy completa que les llevó a profundizar en la conceptos clave: inspeccionar el código HTML para revelar información sensible, usar la concurrencia para romper aplicaciones y explotar vulnerabilidades críticas como el cross-site scripting (XSS) y el cross-site request forgery (CSRF). Gracias al nuevo enfoque más guiado las prácticas fueron mucho más dinámicas y conseguimos terminar cuatro en el tiempo que en el día anterior habíamos hecho solamente dos.

Imprevistos
Yo era consciente de que los requerimientos iban a ser más duros de digerir que las herramientas y el proceso de certificación, pero no esperaba que tras apenas hora y media de clase los asistentes se mostrasen visiblemente agotados. Y es que los requerimientos no dejan de ser una lista de cosas que hacer y cosas que no hacer, las intentaba amenizar con explicaciones, anécdotas y aportaciones de los asistentes… pero no era suficiente.

Soluciones
¿Qué hacer cuando el material es denso y el público está agotado? Permitir un descanso extra, dejarles despejarse, e improvisar un cambio en la estructura del curso. Afortunadamente había preparado un complemento formativo sobre la gestión de proveedores y proyectos de seguridad (los proyectos siempre se apoyan unos sobre otros, aquí me salvó la vida mi reciente artículo en PROIECTUS). Lo guardaba como comodín en caso de necesitar más contenido, en este caso fue útil como el revulsivo que necesitaba la clase: a la vuelta del descanso este tema animó el ambiente y generó bastante debate, lo suficiente como para coger fuerzas y poder seguir después con los requerimientos de un tirón hasta el final.

Día 4

El último día del curso merecía algo especial: entrar en profundidad en el Top 10 de OWASP (edición 2013), los diez riesgos de seguridad más importantes y máxima prioridad de todo encargado o programador de aplicaciones web. También reflexionar sobre ingeniería social, esa otra faceta de la seguridad que tanto daño hace y que tantas veces descuidamos.

También quería una línea práctica diferente a días anteriores, tenía previsto utilizar el sitio Hack this site! como conejillo de indias sobre el que realizar unas pruebas. Sin embargo, el proxy del Gobierno de Canarias no estaba por la labor de permitir la conexión, por lo que pasamos directamente al caso práctico final: una reflexión individual, y posterior debate en grupo, sobre las lecciones sacadas del curso y su aplicación directa al trabajo de cada uno de los asistentes. ¿El objetivo? Que cada uno se llevase del curso, además de conocimientos teórico-prácticos, un plan personalizado de cómo aplicar el curso en su día a día.

Imprevistos
El primero, de índole práctica: para explicar el Top 10 utilicé una presentación de Dave Wichers, un material actualizado y de alta calidad, pero íntegramente en inglés y plagado de tecnicismos de esos que se leen fácilmente en casa, pero se envenenan cuando hay que traducirlos y explicarlos en clase. Mala elección.

El segundo, sobre las personas: si ya de por si cuesta involucrar a la gente para participar en clase, pedirles que hagan un ejercicio de reflexión por escrito sobre su propio trabajo es quizá mucho pedir en un curso de estas características. Costó trabajo y mucha mano izquierda conseguir que unos cuantos, no todos, lo entendiesen como una oportunidad de mejora.

Soluciones
La sesión no salió mal ni mucho menos, pero el ritmo de la clase se resintió por la presentación en inglés y tampoco ayudó un caso práctico que exigía de los asistentes un poco más de lo que podían o querían dar. A diferencia de los anteriores, estos imprevistos del último día no son de los que se corrigen sobre la marcha, sino de los que se aprenden para el futuro.

Los resultados

De la edición de Tenerife me llevo un buen sabor de boca, pero un ligero regusto amargo. Por un lado fue un éxito, tanto si lo enfocamos desde el punto de vista subjetivo (yo salí satisfecho, y los asistentes también según me comentaron en persona) como desde el objetivo (las encuestas así lo reflejan). Sin embargo, la falta de experiencia me llevó a cometer varios errores de planificación y ejecución de esos que me cabrean: el curso se iba a quedar en un notable cuando podría haber sido de sobresaliente.

Y el que me conoce sabe que llevo muy mal eso de cometer errores no forzados y sacar notables.

Mi propia encuesta

Pero, así es la vida, y como no es plan de profundizar en la parte subjetiva de la valoración del curso, entraré de lleno en la objetiva: pedí a todos los asistentes que rellenasen una encuesta online sobre el curso, y que fuesen duros con su crítica para poder aprender de ella. No defraudaron, todos menos uno la rellenaron, y estos son los resultados.

Cumplimiento de los objetivos del curso

Con la primera pregunta intenté no dejar lugar a la ambigüedad: ¿He conseguido cumplir el objetivo oficial del curso? Y las posibles respuestas eran «no, no se ha conseguido», «se ha conseguido solo en parte o con deficiencias graves», «se ha conseguido» y «se han superado las expectativas» (solamente cuatro opciones, obligando a decantarse en una dirección u otra, sin una respuesta neutral que aligerase la carga de la decisión).

Resultados del curso en Santa Cruz de Tenerife.

Resultados de la encuesta (edición de Santa Cruz de Tenerife).

Se trataba de una pregunta contundente que dejase claro si el curso había funcionado o no y los resultados (ver imagen) acompañaron: ningún asistente consideró que el curso no había cumplido los objetivos y solamente uno lo vio incompleto o deficiente (6%), por catorce que vieron los objetivos cumplidos (82%) y dos que los vieron excedidos (12%).

Un 89% de los asistentes al curso lo valoraron de forma satisfactoria (16 de 18), cifra que se eleva hasta el 94% si consideramos solo los asistentes que respondieron la encuesta.

Pero claro, me toca ser exigente conmigo mismo: un asistente opinó que el curso no le había parecido suficiente, y solamente dos pensaron que se habían excedido las expectativas. Había mucho margen de mejora.

Equilibrio teórico-práctico

La siguiente pregunta, ¿Cómo valoras el equilibrio teórico-práctico del curso?, pretendía descubrir si el equilibrio había sido el correcto, o al menos qué opinaban los participantes al respecto. Se pronunciaron hacia un exceso de teoría con dos personas considerando el curso «excesivamente teórico» (12%), doce opinando que era «bastante teórico» (70%) y solamente tres personas opinando que era «bastante práctico«. Ninguno opinó que era «excesivamente práctico«.

Por supuesto, aquí hay que tener en cuenta que todos preferimos las prácticas a la teoría, es ley de vida, y especialmente cuando hablamos de perfiles técnicos (hubiesen pedido un curso 100% práctico de haberles preguntado, y no les culpo). Pero claro, no podía ser, me habían pedido cubrir un temario cargado de teoría y debía cubrirlo íntegramente.

Para el que tenga curiosidad, la distribución del tiempo en clase, quitando descansos, fue más o menos la siguiente:

  • 60% teoría.
  • 15% casos prácticos de debate en grupo.
  • 25% prácticas con el PC.

Nota del curso

Por último, una pregunta que no tiene nada de interpretable, Puntúa el curso con una nota global entre el 0 (muy deficiente) y el 10 (excepcional). Los resultados, en línea con los de la primera pregunta, con una nota de media de 7/10, un mínimo de 5/10 y un máximo de 9/10.

Un notable sólido, más o menos la impresión que me había llevado al terminar las clases. Por un lado alegra ver que los números respaldan las sensaciones de uno, por otro, confirmaba lo que me temía: que el curso había funcionado bien, pero no impresionado.

La encuesta del ICAP

Además de mi propia encuesta, el ICAP realizó su propia evaluación a los asistentes como parte de su proceso de gestión de la calidad (hacen muy bien), solicité acceso a dichos resultados y no tuvieron inconvenientes en compartirlos. Tenía mucha curiosidad por conocerlos, ¿los asistentes habían valorado el curso más o menos igual? ¿Serían más duros en la evaluación oficial? ¿Serían más permisivos?

Los resultados oficiales del curso fueron, en pocas palabras, un reflejo fiel de los de mi propia encuesta: obtuve como docente una puntuación del 76%, además un 78% de los asistentes indicaron que los conocimientos adquiridos serían, en su totalidad o en mayoría, útiles para realizar su trabajo.

La conclusión es, por tanto, que no hubo diferencia entre los resultados oficiales y los que recogí en mi propia encuesta. Los asistentes habían aplicado el mismo rasero y, más o menos, reflejado las mismas ideas: alta satisfacción y una sensación generalizada de que el curso había sido demasiado teórico.

Conclusiones

Salí del curso realmente contento, para ser mi primera experiencia docente había sido un éxito y los resultados me habían acompañado. Es cierto que una serie de errores e inexperiencias no permitieron que el curso saliese redondo, pero lo que para mi era vital es que creía haber localizado todos los puntos de mejora. Sabía dónde me había equivocado y el destino me daba una segunda oportunidad dos semanas después en Las Palmas de Gran Canaria: mismo curso, nuevos alumnos.

¿Qué tal me habrá ido? Próximamente lo contaré, en una próxima entrega. Tardaré un poco escribirla porque tengo lío, pero espero que la intriga merezca la pena. Aunque bueno, adelanto que va a merecer la pena (¡cómo no!).


¡No te pierdas nada más! Suscríbete para recibir las novedades del blog. Puedes recibirlo por email (introdúcelo en la caja que encontrarás arriba a la derecha y pulsa el botón «suscríbeme» con total confianza, no te enviaré comunicaciones comerciales) o a través de tu lector favorito de RSS. Y si además quieres conocerme mejor o entrar en contacto, sígueme en Twitter.

About the Author

Fernando Manero

Consultor freelance especializado en estrategia y tecnología.