Vulnerabilidades, exploits y parches: por qué es necesario actualizar

Nuestros amigos de Heimdal Security a veces escriben un artículo donde recopilan ideas de expertos. Yo creo que se apiadaron de un pobre viejo experto en seguridad y por eso me pidieron en ciertas ocasiones que escribiera una opinión para incluir en uno de estos resúmenes.

La primera ocasión se trató de un artículo compilado por Aurelian Nagan tilulado “50+ Internet Security Tips & Tricks from Top Experts”. La segunda vez, la compilación era de Andra Zaharia y se titulaba “The Most Common Mistakes These 27 Cyber Security Experts Wish You’d Stop Doing”. Y hace poco, Andra me invitó a responder seis preguntas sobre diversos aspectos de la instalación de parches.

Dependemos más de las computadoras de lo que a veces admitimos

La idea me encantó, pero mis respuestas se iban convirtiendo en un documento cada vez más extenso que empezaba a parecerse a la novela Guerra y Paz, aunque por su longitud y no por su calidad. Me terminó pareciendo más apropiado dedicarle un post propio – bueno, en realidad serán dos.

Como estos artículos de recopilaciones de ideas de expertos tienden a atraer respuestas de personas profundamente conocedoras de los temas tratados, recomiendo que los leas. Para el momento en que se publique este artículo, es probable que el artículo de Heimdal ya esté disponible aquí.

Estas son las dos primeras preguntas que respondí:

“Como experto en ciberseguridad, ¿cómo priorizas la instalación de parches en un enfoque de protección de datos en múltiples capas?”

Por suerte, mis días en la práctica de la investigación y la administración de seguridad ya quedaron atrás. Ahora, como autor y editor, necesito relativamente poco hardware y solo unas pocas aplicaciones que sean de una confianza razonable.

Por otra parte, las aplicaciones móviles que uso son en general las esenciales cuya seguridad se actualiza profesionalmente en el extremo del vendedor, y que me permiten suficiente control en mi extremo para asegurar la mínima interrupción a mi trabajo.

Cuanto más complejo y multifuncional es un programa, habrá más posibilidades de que contenga errores de programación

Sin embargo, la naturaleza de mi trabajo implica que me mantengo bastante al día a través de listas de correo y diversos tipos de avisos sobre las instalaciones de parches, las actualizaciones y las vulnerabilidades que pueda necesitar conocer (más como escritor de seguridad que como usuario final). Después de todo, se supone que debo escribir sobre vulnerabilidades y exploits que afectan a los sistemas y al software de los cuales no tengo que tener necesariamente una experiencia actual, práctica y directa.

No obstante, como usuario informático, ayuda que mi casa sea en gran parte una zona libre de la Internet de las Cosas: en la actualidad, no dependo de dispositivos médicos conectados en red, y mi smartphone (no tan inteligente) es lo suficientemente inteligente como para saber que utilizo una laptop para cualquier otro servicio de red que no involucre llamadas telefónicas y mensajes texto. Por lo tanto, no tengo que preocuparme por temas como si una actualización del sistema operativo para smartphones le corresponde a la marca específica de hardware de mi teléfono.

“¿Cómo le explicarías a tu abuela la importancia de instalar parches para que lo entienda?”

Lamentablemente, soy de una época en la que ya es un gran desafío explicárselo a mi madre de más de 90 años… Por suerte, ella está decidida a no involucrarse con ningún aparato de cálculo que sea más reciente que el comptómetro. Es cierto que existen temas relacionados con la informática que también afectan a quienes no utilizan la tecnología moderna, pero es una idea para debatir en otro momento.

Como mis propios nietos a veces sienten la necesidad de explicarme a mí lo que es Internet (no siempre con precisión, pero no tienen la ventaja de haber nacido antes que Internet…), a continuación intentaré explicar el tema de los parches en términos que incluso yo pueda entender.

Los programas son escritos por personas, y las personas cometen errores

Para la mayoría de la gente, las cosas más importantes acerca de una computadora (sin importar que se trate de una gran unidad central corporativa, una PC de escritorio, un equipo portátil o un dispositivo móvil, como una tableta o un smartphone) son los datos que uno crea y/o almacena en ella (documentos, fotografías, etc.) y los servicios a los que accede desde ella (correo electrónico, redes sociales, banca online…).

Sin embargo, no es posible acceder a ninguno de estos datos y servicios sin los programas de software que interpretan lo que queremos hacer y lo traducen a instrucciones que el hardware pueda entender para responder adecuadamente. La palabra software abarca una amplia gama de funcionalidades: desde el software de red que te conecta con el resto del mundo online, a los navegadores que te permiten acceder a una multitud de servicios en la Web, al tratamiento de datos complejos llevado a cabo por una base de datos o un programa de procesamiento de texto, a los bits y bytes que leen los movimientos de tus dedos para permitirte hacer una llamada de teléfono o escribir un mensaje.

Dependemos más de las computadoras de lo que a veces admitimos. No obstante, los programas son escritos por personas, y las personas cometen errores. Cuanto más complejo y multifuncional es un programa, habrá más posibilidades de que contenga errores de programación. Algunos de estos errores son perceptibles, algunos son un inconveniente pero no necesariamente críticos, algunos pueden tener efectos dramáticos (pero estos tienden a ser reparados muy rápidamente). Otros errores, por el contrario, son triviales e incluso es posible que la mayoría o todos los usuarios del software ni siquiera los noten bajo circunstancias normales, por lo que difícilmente podría decirse que importen en absoluto.

Pero algunos errores, si bien pueden ser invisibles en lo que se refiere al usuario promedio, son de suma importancia. No por la forma en que afectan (o no afectan) el funcionamiento normal del sistema o de la aplicación, sino porque, potencialmente, pueden exponer al usuario y al equipo a la intrusión criminal.

Y ¿por qué querrían tener acceso a tu sistema?

Hay muchas razones por las que los criminales pueden desear tener acceso a tu sistema y a tus datos. Quizá simplemente quieran causar daño, pero es más probable que su motivación sea económica, y hay muchas formas en que se puede hacer dinero accediendo ilegalmente a sistemas de terceros. Por ejemplo:

  • Robar datos confidenciales que les permitan acceder a tus cuentas bancarias y servicios similares.
  • Robar información que les permita robar tu identidad (o al menos que les sirva de ayuda): el robo de identidad puede ser monetizado en todo tipo de formas.
  • Instalar software que luego les permitirá controlar tu sistema para utilizarlo como parte de una botnet. Una botnet es una red virtual de máquinas infectadas. Los dueños de esas máquinas no suelen darse cuenta de que tienen un problema, pero esta red puede utilizarse con fines delictivos, tales como el envío de correos electrónicos masivos con estafas de phishing. Hay mucho dinero en juego para quienes venden o alquilan este tipo de redes.
  • Instalar ransomware que les permita a los delincuentes bloquear el acceso a tus propios archivos hasta que pagues un rescate y te envíen la clave de descifrado para desbloquearlos.

Naturalmente, las personas que programan aplicaciones legítimas (por lo general) no introducen fallas en el código en forma deliberada para permitirles a los delincuentes aprovecharlas luego. Sin embargo, basta con un pequeño desliz en la codificación para introducir una falla que permitirá acceder a zonas (especialmente zonas de la memoria de la computadora) que se pueden utilizar para enviarle al equipo instrucciones inapropiadas que no tienen nada que ver con las funciones de la aplicación en sí que contiene la falla. Por desgracia, hay un montón de personas que buscan específicamente este tipo de acceso, y no todos pertenecen al bando de los buenos.

Siempre ha habido expertos en informática interesados en probar los límites de software (y hardware). A algunos los motiva la curiosidad; a otros, el deseo de aprobación de sus compañeros; a otros el genuino deseo de ayudar a las empresas a mejorar sus productos. Aunque esto no ocurre exclusivamente en el ámbito de la seguridad, hay un número interesante de personas en la industria que encontró su nicho informándoles a las empresas de seguridad los problemas de sus productos. Y por otra parte también están quienes tienen intenciones mucho menos loables: su motivación reside ya sea en la pura maldad y malicia, o en los crímenes con fines de lucro.

Cualquier compañía de buena reputación invierte en pruebas. Pero escribir un SO como Windows u OS X requiere decenas de millones de líneas de código

Hoy en día, hay demasiado dinero en juego: ya no se trata solamente de aficionados. No es que hacer dinero mediante la detección de vulnerabilidades sea necesariamente malo. Hay personas cuyo objetivo legítimo es ganar dinero con las recompensas que a veces ofrecen las grandes empresas a quien encuentre fallas o vulnerabilidades auténticas, o con la venta de un servicio de detección de errores.

Hemos sabido durante mucho tiempo que algunos gobiernos también mantienen organismos propios con este fin y, en ciertos casos, incluso les pagan a trabajadores independientes para que encuentren fallas y vulnerabilidades de código. Muchos consideran que es una actividad legítima en busca de la seguridad nacional. Por otro lado, están aquellos cuyos intereses son puramente delictivos, y por lo general los motiva el dinero que pueden ganar con estas actividades ilegales.

¿Las empresas no tienen personas dedicadas a encontrar fallas en sus creaciones?

Uno puede preguntarse por qué las empresas no encuentran sus fallas informáticas antes que los delincuentes. Por supuesto que tienen personas dedicadas a ello. Cualquier compañía de software de buena reputación invierte fuertemente en pruebas y garantías de calidad. Pero escribir un sistema operativo como Windows o OS X requiere decenas de millones de líneas de código.

La revisión de código implica mucho más que leer el código fuente: tratar de predecir cómo cada bit va a interactuar con las demás rutinas

Incluso una aplicación compleja importante, como una base de datos moderna o un programa de procesamiento de texto, contiene más líneas de código de lo que puedo imaginar, y la revisión de código implica mucho más que simplemente leer el código fuente. Es necesario tratar de predecir cómo cada bit de código va a interactuar con las demás rutinas del programa. Sin embargo, también hay que tratar de predecir cómo va a interactuar con otros programas que podrían estar ejecutándose en la misma máquina al mismo tiempo.

Tampoco es como tratar de acertar un tiro en un blanco fijo. Los cambios en el código pretenden mejorar el rendimiento o la seguridad del programa, pero a veces un cambio aparentemente menor puede tener consecuencias imprevistas, en especial si el cambio de código está escrito en un programa completamente diferente, para el cual ni siquiera tienes el código fuente.

Lo sorprendente no es que las cosas a veces salgan mal, sino que no salgan mal con más frecuencia. El mensaje positivo que debemos recordar, después de todo, es que, en general, las empresas son muy conscientes de estas cuestiones, hacen todo lo posible para hacer un seguimiento de los problemas conocidos que pueden afectar sus productos y crean parches en la forma más rápida y segura que pueden.

En mi nuevo post respondo otras preguntas interesantes sobre la importancia de instalar parches y por qué hacerlo debería ser un hábito.

Autor David Harley, ESET

Síguenos