¿Qué tan seguro es el software de código abierto?Este artículo profundizará en la conexión entre el desarrollo de software de código abierto y la seguridad del software. Los debates sobre si los sistemas operativos basados en Microsoft Windows o Linux son más seguros se han apoderado de Internet. Esta discusión involucra los intereses creados y los prejuicios de muchas personas. Los malentendidos debidos a la falta de comprensión y a una lógica defectuosa provocan confusión e inflaman las discusiones. Como parte de su estrategia publicitaria, los artículos fraccionales que esperan obtener más atención para sus patrocinadores utilizan estadísticas compiladas para crear un aire abierto de autoridad y objetividad, apoyando de hecho la discusión con prejuicios y hechos dudosos. Parte de la razón de este debate aparentemente interminable sin conclusiones claras es que las evaluaciones de seguridad se centran demasiado en los epifenómenos: sólo examinan los aspectos superficiales del desempeño en seguridad sin un análisis en profundidad de las causas de las características de seguridad. Parte de la razón es que el desarrollo de software de código abierto sigue siendo una novedad misteriosa para la mayoría de los proveedores de software propietario. Como resultado, estos proveedores de software que no son de código abierto no tienen forma de entender los esfuerzos de seguridad que se llevan a cabo detrás de escena en el mundo del código abierto. Otra razón es que muchas de las personas involucradas en la discusión son usuarios finales con un conocimiento muy superficial de la seguridad del software. Incluso los expertos en TI a veces no comprenden el trabajo de seguridad del software en la arquitectura y el proceso de desarrollo del software, porque aunque los expertos en TI tienen un conocimiento profundo de la configuración de seguridad de sistemas y redes, sus habilidades a menudo no incluyen conocimientos prácticos sobre el desarrollo y el desarrollo de software de código abierto. arquitectura. Llenar las lagunas en el conocimiento del público sobre las implicaciones de seguridad del software puede requerir varios volúmenes de información. Sin embargo, podemos seleccionar un número limitado de temas de este amplio alcance para una introducción superficial, que es el propósito de este artículo. Al final, la discusión sobre seguridad entre Linux y Windows se convirtió en un concurso de ejemplos. Estos son ejemplos relativamente básicos de los pros y los contras de la seguridad para los modelos de desarrollo de código abierto y cerrado. No se trata sólo de una cuestión técnica, sino también de un acontecimiento social. Si se analiza la discusión con más atención, se parece más a una reunión de economistas y teóricos de juegos. Con diferencia, el enfoque más incomprendido de los dos en la mayoría de las discusiones es el enfoque de código abierto. Ahora, echemos un vistazo a cómo el desarrollo de software de código abierto considera la seguridad del software. Algunos argumentos sobre la seguridad del software de código abierto se basan en inferencias completamente incorrectas. Hay muchas objeciones comunes y que parecen válidas al software de código abierto, la más grave de las cuales es lo que llamamos la falacia de que "la no divulgación es segura". Una de las afirmaciones más comunes es "Otra afirmación es: "Cualquier hacker de seguridad sofisticado puede ver el código fuente, por lo que no es lo suficientemente seguro". La falacia de no divulgación es segura limita el soporte para sistemas operativos basados en Linux y Mozilla. Firefox Discusión sobre la seguridad relativa de los navegadores. La realidad es que "lo inseguro es público" en realidad no proporciona seguridad funcional. Sólo proporciona la apariencia de seguridad, cuando en realidad la comunidad de desarrollo de código abierto se basa en principios de seguridad opuestos. Este principio también puede denominarse "la apertura es seguridad" e incluye dos principios básicos de seguridad del software: seguridad transparente y seguridad a través de la universalidad. La seguridad del desarrollo de software de código abierto a menudo se cuestiona porque el código fuente está disponible para cualquiera. Esta teoría sostiene que al estudiar el código fuente, los posibles atacantes de seguridad pueden encontrar fallas en el código que constituyen debilidades en el ataque, lo que facilita completar el ataque contra estas debilidades. Hay algo de verdad en esta teoría, pero no en la forma en que piensa la gente. De hecho, analizar el código fuente con los ojos para encontrar, categorizar y crear defectos es un trabajo duro. Si, como dicen, el software de código abierto es más vulnerable debido a la apertura de su código fuente, sería imposible que alguien fuera de Microsoft descubriera fallas en IE. De hecho, incluso este arduo trabajo es mucho más fácil que encontrar fallas en cualquier aplicación que no sea pequeña mediante técnicas de ingeniería inversa. Estas técnicas incluyen sondear una aplicación en ejecución en busca de entradas mal formadas o mal uso intencional de la información, y luego examinar la escalabilidad y la salida de la aplicación para determinar cómo y cuándo el programa se ha desviado de la intención original de la aplicación.
Quizás algún día seamos capaces de introducir el código fuente en otro programa para determinar qué partes del mismo están defectuosas sin tener que usar técnicas de ingeniería inversa para encontrar los defectos, pero incluso si ese día llega, usar archivos de código de dispositivo ejecutables binarios para lograr la solución. La tarea será la misma Fácil, sin el código fuente en sí. Después de todo, lo que requiere este análisis no es la información que el programador necesita para nombrar variables o métodos, sino la construcción de los algoritmos utilizados por el software que se analiza. Después de todo, el código del dispositivo en sí es funcionalmente idéntico al código fuente introducido en el compilador. La única diferencia es su confiabilidad para un programador en particular. Estadísticamente, este hecho no respalda la afirmación de que el software de código abierto sea inherentemente defectuoso. Por ejemplo, un informe de la firma de análisis de código Coverity mostró que encontraron sólo 985 errores de 5,7 millones de líneas de declaraciones en el kernel de Linux. En comparación, un estudio realizado por CyLab de la Universidad Carnegie Mellon encontró que un programa comercial representativo de código cerrado tenía un promedio de 20 a 30 vulnerabilidades por cada 1.000 líneas de declaraciones. En esta proporción, el número de errores en 5,7 millones de declaraciones sería más de 114.000, que es 114 veces el número de errores en el kernel de Linux. El importante papel de la transparencia del software en el proceso de desarrollo de software de código abierto a menudo se denomina revisión por pares. Este proceso existe porque el código fuente es público y debido a que los programadores no pueden estar completamente alineados con los objetivos de una única entidad controladora (como un CEO), las personas que desarrollan el código fuente deben gestionar el comportamiento de los demás. El proceso de revisión por pares elimina así el raro pero poderoso argumento de que los programadores bien intencionados pueden dejar "puertas traseras" en un programa. El código que cumpla con estrictos estándares de calidad será aceptado en la base de código del proyecto de software de código abierto. De hecho, si se descubre que un programa es un troyano durante la revisión pública, se señalará. El software propietario cuyo código fuente no está disponible públicamente puede incorporar intencionalmente, y a veces lo hace, la funcionalidad de rootkit, que sólo puede descubrirse cuando ocurre un accidente, como el famoso incidente del rootkit de Sony a finales de 2005. Seguridad ubicua La ubicuidad del sistema operativo de escritorio Windows de Microsoft y de IE a menudo se cita para explicar la incidencia de fallas y violaciones. Aquí te voy a contar algunos datos. Para los sistemas operativos o navegadores web de código cerrado y propietarios, las tasas de penetración más altas pueden atraer la atención de escritores de códigos maliciosos y otros visitantes no invitados. Pero si se adopta un nuevo enfoque del desarrollo, donde la ubicuidad es clave, las cosas cambian. El software de código abierto tiene un umbral más bajo para la adopción de software específico. Dado que el software de código abierto no tiene en cuenta el precio, en nuestro mundo en red en constante evolución, un nuevo archivo de instalación de sistema operativo puede costar no más que un CDR en blanco cuya descarga sólo lleva unos minutos. La instalación es diferente e incluso puedes ahorrarte el coste de comprar CD. El software de código abierto tiende a ser ampliamente aceptado, lo que facilita atraer nuevos desarrolladores a proyectos de software de código abierto. A medida que aumenta el número de usuarios, también aumenta el interés del programador en el proyecto. Los desarrolladores de software de código abierto forman la base de usuarios. El software de código abierto puede hacer un buen uso del tiempo comercial de los programadores. Estos programadores no tienen tiempo para dedicarse a equipos de desarrollo serios, pero pueden usar su tiempo comercial para encontrar y corregir defectos. y errores. Como resultado, la cantidad de programadores que buscan fallas y errores en el software de código abierto más popular supera con creces a los limitados equipos de desarrollo de software de código cerrado. A medida que aumente el número de usuarios, este número aumentará en consecuencia. Hay más personas que descubren nuevos errores y los explotan que las que descubren nuevos errores y los corrigen. Incluso si la persona que descubrió el error no escribe el código para solucionarlo por sí misma, se lo dirá a alguien que lo solucionará. Debby Fry Wilson, directora del Centro de Respuesta de Seguridad de Microsoft, dijo que la respuesta más rápida de Microsoft a una vulnerabilidad registrada fue un parche a la biblioteca WMF a principios de este año, que tardó entre 9 y 10 días.