El verdadero problema de seguridad del software somos nosotros

Un colega recientemente describió una divertida noche de viernes para su hijo adolescente: quedarse en casa y chatear en línea. De vez en cuando hay una fiesta en la que todos sus amigos hablan por sus portátiles.





Nos estamos acostumbrando cada vez más a vivir en esos espacios virtuales; sin embargo, hay que hacer una distinción importante entre los espacios virtuales y los espacios físicos reales en los que caminamos. Por lo general, esperamos poder cruzar un puente o entrar en un edificio. sin que la estructura se derrumbe. No tenemos ese tipo de confianza con los programas de software.

No lo crea, podríamos, en un futuro no muy lejano, vivir en un mundo donde el software no falle al azar y catastróficamente. Nuestros sistemas de software podrían resistir ataques. Nuestras redes sociales privadas y datos de salud solo pueden ser vistos por aquellos con permiso para verlos. Todo lo que necesitamos son las correcciones correctas.

El problema con el software moderno es que hemos estado construyendo nuestros rascacielos con los mismos materiales y técnicas que se usan para construir cabañas. El software comenzó como una colección de ladrillos: procedimientos simples, secuencias de comandos para cálculos, juegos y curiosidades. Décadas después, tenemos millones de procedimientos interactuando entre sí en máquinas interconectadas con acceso a todo tipo de información secreta. Sin embargo, todavía estamos usando lenguajes y herramientas similares.



Si queremos que nuestros sistemas tengan menos vulnerabilidades, necesitamos utilizar mejores materiales de construcción. Los lenguajes que la gente usa hoy en día hacen que sea demasiado fácil para el programador cometer errores, y hacen que sea demasiado difícil detectar los errores.

Una mejor manera sería utilizar lenguajes que proporcionen las garantías que necesitamos. La vulnerabilidad de Heartbleed ocurrió porque alguien olvidó verificar que una parte de la memoria terminara donde se suponía que debía hacerlo. Esto solo podría suceder en un lenguaje de programación donde el programador es responsable de administrar la memoria. Entonces, ¿por qué no usar lenguajes que administren la memoria automáticamente? ¿Por qué no hacer que los lenguajes de programación hagan el trabajo pesado?

Otra forma sería hacer que el software sea más fácil de analizar. Facebook tuvo tantos problemas para entender el software que usaba que creó Hack and Flow, versiones anotadas de PHP y Javascript, para hacer que los dos lenguajes fueran más comprensibles.



Esto es en parte culpa nuestra. Nos parece divertida la vida en línea, por lo que tendemos a dejar que los sitios hagan lo que quieran con nuestros datos personales. Las empresas de software responden produciendo nuevas funciones lo más rápido posible, utilizando los materiales y herramientas más convenientes a expensas de la seguridad.

El cambio no sucederá hasta que exijamos que suceda. Nuestro software podría estar tan bien construido y ser tan confiable como nuestros edificios. Para que eso suceda, todos debemos valorar la solidez técnica sobre la novedad. Depende de nosotros hacer que la vida en línea sea tan segura como placentera.

Jean Yang es profesor asistente de informática en la Universidad Carnegie Mellon y cofundador de Cybersecurity Factory, un acelerador centrado en la seguridad del software.



esconder