82 Perspectiva Empresarial El software abierto y la seguridad EL HECHO DE ELEGIR UN SISTEMA DE CÓDIGO ABIERTO NO DEBE RELAJAR NUESTRA POLÍTICA DE SEGURIDAD NI HACERNOS SENTIR INVULNERABLES A LOS ATAQUES Carlos de Nova tienen la oportunidad de estudiar el disponible, aspecto fundamental software para determinar sus cuando hablamos de añadir nuevas vulnerabilidades. funcionalidades, los atacantes no Esta parece ser la clase de cuestión INGENIERO DE DESARROLLO Zitralia necesitan del código fuente para en la que parece posible dar una encontrar y explotar agujeros de respuesta clara sobre la base de seguridad. modelos aceptados de estabilidad del Por ello es importante distinguir software o datos empíricos sobre entre actos destructivos y vulnerabilidades reportadas, o mejor constructivos. En realidad siempre es aún sobre ambos. más fácil destruir algo que construirlo. Antecedentes En el mundo del software también es mucho más fácil encontrar una T vulnerabilidad y explotarla que añadir radicionalmente se ha asumido siempre que el modelo de código abierto permitía disponer de un código de mayor calidad y más seguro, debido a que la propia comunidad era la encargada de mantener el código fuente. Ante esto, los defensores del modelo de código fuente propietario respondían que el libre acceso al Para un atacante el no disponer del código fuente no supone ninguna dificultad para buscar fallos en la seguridad del mismo Los atacantes tienen la ventaja sobre los defensores debido a esta diferencia. Los desarrolladores de software intentan no tener errores de seguridad relevantes en todo su código, mientras que los atacantes sólo deben encontrar uno que puedan centran básicamente en que sus de agujeros en la seguridad del Profundizando en el asunto programas funcionen, los atacantes no necesitan que funcione, sólo encontrar En la comunidad de criptólogos en particular, ha sido una práctica existente. explotar. Los desarrolladores se código fuente facilitaba la localización software. una nueva funcionalidad a lo ya Sin embargo la cuestión va mucho debilidades en el mismo. Esto hace habitual desde el siglo diecinueve, que más allá de estos planteamientos que el esfuerzo necesario para atacar el oponente conociera el diseño de su contrapuestos. Se suele argumentar un programa sea sensiblemente sistema, de tal forma que el único que un sistema con el modelo de inferior al de modificarlo. camino posible para mantener el código cerrado es más seguro puesto secreto, era manteniendo a salvo el que ofrece menos información al tanto en entornos de código abierto conocimiento de una variable atacante y por tanto es más como de código cerrado usan dos temporal, la clave. Por otro lado los complicado el encontrar tipos de técnicas que podríamos opositores al software abierto vulnerabilidades. La debilidad de este llamar estáticas y dinámicas. En las argumentan que si el software es argumento reside en que a pesar de estáticas se inspecciona el código abierto, los potenciales atacantes que el código fuente no esté fuente o el código máquina, y en las nº 12 julio 2007 De forma general los atacantes 83 Perspectiva Empresarial dinámicas se ejecuta el software testeando sobre los diferentes comportamientos que éste tiene ante el envío de datos (normalmente malformados). Ante el uso de las técnicas dinámicas, no hay ninguna diferencia entre el software de código abierto y cerrado, ya que en ningún momento se está inspeccionando el código. En el caso de las técnicas estáticas, tampoco existe diferencia para el atacante, ya que no busca implementar nuevas funcionalidades, por lo que no necesita el código fuente para buscar los patrones potencialmente inseguros. Este punto es importante ya que para un atacante el no disponer del código fuente no supone ninguna dificultad para buscar fallos en la seguridad del mismo. Entonces nos podríamos preguntar cuál es la importancia real de distribuir o no el código. La respuesta es que mientras que un desarrollador no necesita el código fuente para encontrar vulnerabilidades, sí las necesita para poder eliminarlas una “demandar código de fuente abierta puede mirar el código, sino y más vez encontradas. para cualquier asunto relacionado con importante, porque este modelo la seguridad” [Schneier 1999]. fuerza a la gente a escribir código tengamos software cerrado no nos Vincent Rijmen, uno de los más claro y adherido a estándares. Lo protege en absoluto frente a las desarrolladores del algoritmo de que facilita las auditorías de Como vemos, el hecho de que seguridad”. [Rijmen 2000]. vulnerabilidades software. Whitfield Diffie es el coinventor de la criptografía basada en clave Lo que dicen los expertos En general la opinión de los expertos sobre el tema es que la naturaleza del software abierto o cerrado no tiene un impacto directo sobre la seguridad del mismo, si bien el software de código abierto facilita en gran medida el potencial de poder Es mucho más fácil encontrar una vulnerabilidad y explotarla que añadir una nueva funcionalidad a lo ya existente ser más seguro que su contraparte de pública (base de toda la seguridad en Internet); es ingeniero senior y jefe de seguridad en Sun Microsystems. En su artículo de 2003, “Risky business: Keeping security a secret”, dice que el argumento de los vendedores de código cerrado sobre que su software es más seguro porque es secreto, es un sinsentido. “Simplemente es irreal depender del código cerrado, pero que por el hecho secreto para mantener la seguridad de ser software abierto no es una encriptación AES (Advanced en el software. Quizás sea posible garantía de seguridad en sí misma. Encryption Standard), cree que la mantener fuera de circulación cómo naturaleza de código abierto de Linux un software funciona exactamente, criptógrafo y experto en seguridad facilita el hecho de encontrar y fijar pero no puedes prevenir que tu informática. Argumenta que los las vulnerabilidades de seguridad. ”No código sea inspeccionado mediante ingenieros inteligentes deberían sólo porque haya más gente que ingeniería inversa.” Bruce Schneier es un reputado nº 12 julio 2007 84 Perspectiva Empresarial John Viega en su artículo "The Myth of Open Source Security" también nos aporta lo siguiente: “Los proyectos de código abierto pueden ser más seguros que sus contrapuestos de código cerrado. De cualquier forma las cosas que pueden hacer que un software de código abierto sea más seguro -disponibilidad de código fuente, y el mayor número de personas buscando y fijando agujeros de seguridad- pueden hacer por el que un atacante pueda Mientras que un desarrollador no necesita el código fuente para encontrar vulnerabilidades, sí las necesita para poder eliminarlas caer a la gente en una falsa sensación [Schneider 2000]. Peter G. Neumann también afirma que el código abierto no es seguro por sí mismo ni por su naturaleza, a pesar del potencial que tiene para serlo. [Neumann 2000]. Brian Witten, Carl Landwehr y Michael Caloyannides [Witten 2001] publicaron un artículo concluyendo que la disponibilidad del código fuente trabaja en favor de la de seguridad. Michael H. Warfield en "Musings vulnerar nuestros sistemas” seguridad de los sistemas. ”Nosotros razones para creer que muchos ojos llegamos a cuatro conclusiones en on open source security" es muy inspeccionando el código de fuente este asunto. Primero, el acceso al positivo sobre el impacto del software abierta permita tener éxito en código fuente permite a los usuarios de código abierto sobre la seguridad. identificar los errores que mejorar la seguridad de los sistemas, Por contra, Fred Schneider no cree comprometen la seguridad de un si tienen la capacidad y los recursos que el software de código abierto sistema y que esos errores de para hacerlo. Segundo, tests ayude a la seguridad, “no hay codificación no son el origen principal limitados indican que en algunos casos los ciclos de vida del software de código abierto son menos vulnerables a fallos no intencionados. Tercero, un estudio sobre tres sistemas operativos indica que un sistema operativo de código abierto sufre menos vulnerabilidades conocidas sin arreglar en un período de 12 meses que los otros dos sistemas propietarios. Por último, los modelos de desarrollo de sistemas cerrados o propietarios Last, incentiva el desarrollo de sistemas menos seguros debido a que son más rentables que sistemas más seguros.” Conclusiones Como podemos ver el hecho de elegir un sistema de código abierto no debe relajar nuestra política de seguridad ni hacernos sentir invulnerables a los ataques. Tampoco podemos descartar estos sistemas por considerarlos inseguros por el mero hecho de ser software de código abierto. Al igual que en los entornos de software cerrado debemos proteger nuestros sistemas y nuestros datos con la misma eficiencia y tenacidad. nº 12 julio 2007