Evitar los 10 fallos de diseño más graves para la seguridad

La IEEE lleva unos años fomentando la idea del desarrollo seguro. Una forma ha sido mediante la serie Building Security In (IEEE Security & Privacy, Series Editor: Gary McGraw), bastante relacionada con el podcast de Gary McGraw Silver Bullet.

Más recientemente han lanzado The IEEE Computer Society Center for Secure Design y una de sus primeras publicaciones ha sido Avoiding the Top 10 Security Flaws. Gary McGraw diferencia siempre que puede entre bugs (fallos de seguridad en el código, fundamentalmente) y fallos de diseño (flaws).

En esa línea viene la lista, que ha desarrollado junto con otros autores:

  • Gánala o concédela, pero nunca supongas la confianza.
  • Utiliza mencanismos de autentificación que no puedan ser modificados ni evitados.
  • Autorizar después de autentificar.
  • Separar de manera estricta los datos del control. Nunca procesar instrucciones de control recibidas de fuentes no confiables.
  • Definir una aproximación que asegure que todos los datos se validarán de manera explícita
  • Utilizar correctamente la criptografía.
  • Identificar los datos sensibles y cómo deberían manejarse.
  • Siempre tener en cuenta a los usuarios.
  • Comprender la forma en que cambia nuestra superficie de ataque la integración de componentes externas.
  • Ser flexible cuando se consideren los cambios futuros de objetos y actores.

Algunas frases que señalé:

various binary protection mechanisms can delay the leaking of sensitive material.

Sobre autorización:

Authorization should be conducted as an explicit check, and as necessary even after an initial authentication has been completed. Authorization depends not only on the privileges associated with an authenticated user, but also on the context of the request.

Validación de datos:

Liberal use of precondition checks in the entry points of software modules and components is highly recommended.

Seguro que ustedes encuentran las suyas.

Algunos enlaces que me han resultado útiles para comenzar este sitio

Tengo una mala costumbre cuando estoy instalando/actualizando/configurando cosas: empiezo a abrir pestañas en el navegador que se van acumulando sin mucho orden y que luego nunca termino de eliminar. Ahora que esta bitácora está medio funcionando, voy a poner aquí esos enlaces con dos objetivos: cerrar esas pestañas, y tener recopilada la información para el futuro, o por si le sirve a alguien más.

La primera inspiración vino de Bruce Eckel, en este post: New Programming Blog Site y luego su introducción Using Github Pages for Blogging de donde aprendí las primeras ideas.

La página de GitHub Pages y la explicación sobre cómo albergar un blog en Using Jekyll with Pages.

El artículo de Barry Clark que describe Build A Blog With Jekyll And GitHub Pages y que da algunas pistas y proporciona enlaces a algunos blogs donde buscar inspiración. Por ejemplo, este post Blogging Like a Hacker. El blog del propio Barry Clark, o el How I built my blog in one day de Eric Jones. Me queda pendiente resolver la gestión de categorías y etiquetas, y veo algunas pistas en Tags In Jekyll.

Información técnica sobre las plantillas en Jekyll templates.

No puedo imaginar una bitácora sin RSS. Para añadirlo miré Jekyll RSS Feed Templates. Interesante también la página sobre Plugins en Jekyll. Y sus limitaciones en Using Jekyll Plugins with GitHub Pages.

Finalmente, para integrar mejor el proceso de publicación con el editor (a mi me gusta vim), vim-jekyll.

Cuarta etapa

Repito aquí una historia ya contada unas cuantas veces, a la que le vamos añadiendo matices y novedades.

Copio de Tercera Etapa:

Esta bitácora nació allá por el 2001 en forma de MiBarrapunto: se trataba de un invento que hicieron los creadores de BarraPunto para permitir a los usuarios tener su propia sección con algunas ideas que ya me gustaría ver en alguna plataforma ahora, pero que no cuajaron por problemas de escalabilidad del programa y falta de recursos en aquel momento para mejorarlo (destacable, la promiscuidad absoluta: cualquiera podía tomar una entrada cualquiera del sitio -en particular, de otros usuarios- y reformarla o simplemente republicarla en su propia página).

Parte de esas ideas se han establecido en GitHub, donde el código puede copiarse, transformarse y reenviarse al autor original o a otros con herramientas bastante accesibles.

Con ese espíritu empecé a subir los contenidos de algunos de mis sitios a GitHub: Archivo bitácoras fernando para posteriormente descubrir que GitHub permitía publicar Páginas personales y para los proyectos y el sistema que las gestiona, Jekyll, que también permite gestionar un blog: nuestra página estaría albergada en el sistema con las mismas características de gestión del código fuente de los programas: fork permitido, copiar, pegar, modificar y reutilizar. Todavía no es tan fácil como era en la época de BarraPunto, pero aquí lo tenemos. Y aquí estamos.

No creo que la mayoría de la gente vaya a utilizar esto, y tampoco creo que nadie vaya a reutilizar estos contenidos. Pero siento que encaja bien con mi forma de trabajar y publicar (editar en local, subir al sitio y publicar) así que vamos a probar. Desde este momento, la bitácora anterior queda congelada y seguimos por aquí.

Bienvenidos a la cuarta etapa. Proximamente algo más de información sobre cómo gestionar un sitio aquí e ir resolviendo las carencia que aún tenemos (ya hay RSS, las categorías y las etiquetas no funcionan aún).

Segunda Prueba

Esto es la segunda prueba para ver si el RSS se genera bien.

Prueba

Esto es una prueba de un nuevo intento de Blog, esta vez en GitHub

Una imagen

Eliminado el resumen y el “Read More” en index.html

Complejidad algorítmica y ataques

Esta entrada se publicó originalmente en Complejidad algorítmica y ataques. La traigo aquí para comprobar el funcionamiento con fechas anteriores y para que haga de nexo de unión con el blog anterior. Decíamos:

Leía hace unos días el artículo algorithmic complexity attacks and libc qsort() donde se hace un análisis del Quick Sort, lo que pueden costar algunas de sus implementaciones y fantasea con la posiblidad de utilizarlo para algún tipo de ataque de denegación de servicio (o al menos ralentización).

Son de esas cosas que nos trae el software libre e internet.