Si utilizas los navegadores Google Chrome o Microsoft Edge, es probable que recibas actualizaciones automáticamente.
Sin embargo, en caso de que te hayas perdido alguna actualización recientemente, te sugerimos que lo compruebes ahora mismo, porque el núcleo del navegador Chromium, en el que se basan tanto Edge como Chrome, ha parcheado recientemente no uno, sino dos fallos de ejecución remota de código (RCE) de día cero.
Google mantiene en secreto los detalles de estos fallos por el momento, presumiblemente porque son fáciles de explotar si sabes exactamente dónde buscar.
Siempre merece la pena tomarse en serio las vulnerabilidades de seguridad basadas en navegadores que conducen a la ejecución remota de código, especialmente si ya son conocidas y utilizadas por los ciberdelincuentes.
Y los días cero, por definición, son fallos que los ciberdelincuentes encontraron primero, de modo que hubo cero días en los que podrías haber parcheado proactivamente.
RCE considerado dañino
RCE significa exactamente lo que dice: alguien ajeno a tu red, ajeno a tu hogar, ajeno a tu empresa (quizás incluso al otro lado del mundo) puede decirle a tu dispositivo: “Ejecuta este programa que yo elija, de la forma que yo te diga, sin delatar a ningún usuario que esté conectado en ese momento”.
Normalmente, cuando estás navegando y un sitio web remoto intenta colarte contenido peligroso, al menos recibirás algún tipo de advertencia, como una cuadro de diálogo ¿Quieres descargar este archivo? o una ventana emergente preguntándote ¿Estás realmente seguro (Sí/No)?
A veces, dependiendo de la configuración del navegador que hayas elegido, o en función de las restricciones que te hayan aplicado tus administradores informáticos, puede que incluso recibas una notificación del tipo “Lo sentimos, esa opción/archivo/descarga no está permitida”.
Pero un fallo RCE del navegador generalmente significa que simplemente por mirar una página web, sin pulsar ningún botón ni ver ninguna advertencia, podrías proporcionar a los atacantes una brecha de seguridad a través de la cual podrían engañar a tu navegador para que ejecute código de programa malicioso sin ni siquiera una pregunta.
Entre las formas más comunes de activar este tipo de agujero de seguridad se incluyen: contenido HTML trampa, código JavaScript mal construido deliberadamente, e imágenes mal formadas u otros archivos multimedia que el navegador ahoga al intentar preparar el contenido para su visualización.
Por ejemplo, si una imagen pareciera necesitar solo unos pocos kilobytes de memoria, pero más tarde resultara incluir megabytes de datos de píxeles, esperarías que tu navegador detectara de forma fiable esta anomalía, y no intentara meter esos megabytes de píxeles en kilobytes de espacio de memoria.
Eso provocaría lo que se conoce como desbordamiento del búfer, corrompiendo la memoria del sistema de un modo que un atacante bien preparado podría predecir y explotar para hacer daño.
Del mismo modo, si llegara código JavaScript que dijera a tu navegador: “Aquí tienes una cadena que representa una hora y una fecha que quiero que recuerdes para más tarde”, esperarías que tu navegador solo permitiera que esos datos se trataran como un bloque de texto.
Pero si más tarde se pudiera engañar al sistema JavaScript para que utilizara ese mismo bloque de datos como si fuera una dirección de memoria (en terminología C o C++, un puntero) que indicara dónde debería ir el programa a continuación, un atacante bien preparado podría ser capaz de engañar al navegador para que tratara lo que llegó como datos inofensivos como un mini programa suministrado remotamente para ser ejecutado.
En la jerga, eso se conoce como shellcode, de la antigua terminología Unix en la que código se refiere a una secuencia de instrucciones de programa, y shell es el nombre general de un indicador de control donde puedes ejecutar una secuencia de comandos de tu elección.
Imagínate abrir la aplicación Terminal en un Mac, o un prompt de PowerShell en Windows: ése es el tipo de poder que un ciberdelincuente suele tener sobre ti y tu red si es capaz de utilizar un agujero RCE para hacer estallar un shell, como se llama jocosamente en el gremio, en tu dispositivo.
Peor aún, una shell remota de este tipo “explotada” suele ejecutarse completamente en segundo plano, invisible para cualquiera que esté sentado frente al ordenador, por lo que hay pocos o ningún indicio revelador de que un operador malintencionado está husmeando y explotando tu dispositivo a tus espaldas.
Un paquete de dos días cero
Cuando dimos nuestros ejemplos de RCE más arriba, no elegimos los archivos de imagen trampa y el código JavaScript fraudulento por casualidad.
Los destacamos como ejemplos porque los dos fallos de día cero de Chrome corregidos en los últimos días son los siguientes:
- CVE-2023-2033: Confusión tipográfica en V8 en Google Chrome anterior a 112.0.5615.121. Un atacante remoto podría explotar la corrupción de heap a través de una página HTML manipulada. Gravedad de seguridad de Chromium: Alta.
- CVE-2023-2136: Desbordamiento de enteros en Skia en Google Chrome anterior a 112.0.5615.137. Un atacante remoto que hubiera comprometido el proceso del renderizador podría potencialmente realizar una fuga del sandbox a través de una página HTML manipulada. Gravedad de seguridad de Chromium: Alta.
Por si te lo estás preguntando, V8 es el nombre del motor JavaScript de código abierto de Chromium, donde se procesa el JavaScript incrustado en las páginas web.
Y Skia es una biblioteca gráfica de código abierto creada por Google y utilizada en Chromium para convertir los comandos HTML y cualquier contenido gráfico incrustado en los píxeles en pantalla que representan la forma visual de la página. (El proceso de convertir HTML en gráficos en pantalla se conoce en la jerga como renderizar una página).
Un fallo de confusión de tipo es el que funciona de forma similar al ejemplo del texto tratado como un puntero que hemos presentado antes: un trozo de datos que debería manejarse según un conjunto de reglas de seguridad dentro del proceso JavaScript acaba utilizándose de forma insegura.
Es un poco como conseguir un pase de invitado en la recepción de un edificio y descubrir que, si sostienes el pase con el pulgar en el lugar adecuado para ocultar la etiqueta “Solo soy un invitado”, puedes engañar a los guardias de seguridad del edificio para que te dejen entrar donde no debes y hacer cosas que se supone que no debes hacer.
Y un desbordamiento de enteros es cuando un cálculo aritmético sale mal porque los números son demasiado grandes, del mismo modo que la hora da vueltas una o dos veces al día en tu reloj.
Cuando adelantas una hora un reloj analógico desde, por ejemplo, las 12 y 10, la hora da la vuelta hasta la 1 y 10, porque la esfera del reloj solo marca del 1 al 12; del mismo modo, cuando un reloj digital llega a medianoche, da la vuelta desde las 23:59 hasta las 00:00, porque no puede contar hasta 24.
¿Qué hacer?
¿No sería práctico que hubiera un único número de versión que pudieras comprobar en todos los navegadores basados en Chromium y en todas las plataformas compatibles?
Desgraciadamente, no lo hay, así que tienes lo sabemos:
En el momento de escribir esto [2023-04-24T16:00Z], las versiones oficiales de Chrome para portátiles parecen ser: 112.0.5615.137 o 112.0.5615.138 para Windows, 112.0.5615.137 para Mac y 112.0.5615.165 para Linux.
Todo lo que sea igual o posterior a esos números incluirá parches para los dos días cero anteriores.
Edge en tu portátil debería ser 112.0.1722.58 o posterior.
Por desgracia, Chrome y Edge en Android (acabamos de actualizar los nuestros) parecen seguir siendo 112.0.5615.136 y 111.0.1661.59 respectivamente, por lo que solo podemos aconsejarte que estés atento a las actualizaciones de los próximos días.
Del mismo modo, en iOS, nuestras versiones recién actualizadas de Chrome y Edge aparecen respectivamente como 112.0.5615.70 y 112.0.1722.49, por lo que suponemos que esas versiones se actualizarán pronto para garantizar que se parchean estos dos días cero.
- Chrome en tu portátil. Visita la URL chrome://settings/help debería mostrarte la versión actual, comprobar si hay actualizaciones pendientes e intentar ponerte al día si aún no lo estás.
- Chrome en iOS. La URL chrome://version mostrará tu versión actual. Ve a la aplicación App Store y pulsa sobre la imagen de tu cuenta en la parte superior derecha para ver si hay actualizaciones disponibles que aún deban instalarse. Puedes utilizar Actualizar todo para hacerlo todo a la vez, o actualizar las aplicaciones individualmente desde la lista siguiente si lo prefieres.
- Chrome en Android. La URL chrome://version mostrará tu versión actual. El menú de tres puntos debería mostrar una flecha hacia arriba si hay una actualización de Chrome que aún no tienes. Tendrás que iniciar sesión en tu cuenta de Google Play para obtener la actualización.
- Edge en tu portátil. Visitar la URL edge://settings/help debería mostrarte la versión actual, comprobar si hay alguna actualización pendiente e intentar ponerte al día si aún no lo estabas.
- Edge en iOS. La URL edge://version mostrará tu versión actual. Ve a la aplicación App Store y pulsa sobre la imagen de tu cuenta en la parte superior derecha para ver si hay actualizaciones disponibles que aún deban instalarse. Puedes utilizar Actualizar todo para hacerlo todo a la vez, o actualizar las aplicaciones individualmente si lo prefieres.
- Edge en Android. La URL edge://version mostrará tu versión actual. Abre la aplicación Google Play y toca la mancha de tu cuenta en la parte superior derecha. Entra en la pantalla Gestionar aplicaciones y dispositivo para buscar actualizaciones pendientes. Puedes utilizar Actualizar todo para actualizarlas todas a la vez, o pulsar en Ver detalles para actualizarlas individualmente.