Actualización de software de seguridad

De un traductor: me topé con TheUpdateFramework al buscar bibliotecas que implementan actualizaciones automáticas de software en el escritorio. Por un lado, la descripción de los aspectos de seguridad de los sistemas de actualización de software presentados a continuación fue interesante y detallada para mí; Por otro lado, seguro, además de la investigación académica, aunque bajo el ala de LinuxFoundation, puede encontrar muchas soluciones adecuadas. Puedes sugerir opciones en los comentarios.


TheUpdateFramework


Seguridad


Podemos considerar un sistema de actualización de software "seguro" si:


  • ella se enterará de las últimas actualizaciones disponibles de manera oportuna
  • cualquier archivo descargado por el sistema de actualización es correcto y
  • sin consecuencias perjudiciales por verificar o descargar archivos.

Para lograr esto, se requieren estrategias preventivas viables contra muchos ataques potenciales.


Ataques y debilidades


A continuación se enumeran algunos de los ataques conocidos en los sistemas de actualización de software, incluidas las debilidades que hacen posible estos ataques. Para diseñar un marco de actualización de software seguro, debe comprender estos ataques y desarrollar estrategias de protección. Algunas de estas deficiencias pueden estar relacionadas entre sí, dependiendo de la arquitectura y la implementación de un sistema de actualización de software en particular.


  • Instalar software personalizado . Un atacante puede sustituir archivos arbitrarios en respuesta a solicitudes de descarga e instalar todo lo que quiera en el sistema del cliente, incluso sin determinar la ilegalidad de tales acciones.
  • Ataque de reversión de actualizaciones . El atacante proporciona al sistema de actualización de software archivos de una versión anterior a la que está instalada actualmente en el cliente. El usuario instala una versión que posiblemente contiene vulnerabilidades, sin la capacidad de descubrir que esta versión está desactualizada. Más tarde, las vulnerabilidades pueden ser explotadas por un atacante.
  • Rebobinar ataques . El atacante aumenta arbitrariamente el número de versión, haciéndolo mucho más alto que el valor actual, engañando así al sistema de actualización de software y obligándolo a creer que las actualizaciones sucesivas realmente están tratando de revertir la versión de software al cliente, a una versión anterior y desactualizada. En algunas situaciones, por ejemplo, si existe el número de versión máximo posible, el criminal puede usar este máximo para que el sistema de actualización nunca pueda instalar una nueva actualización.
  • Ataques de congelación ilimitada . El atacante continúa devolviendo archivos que el cliente ya ha visto al sistema de actualización de software. Como resultado, el cliente permanece en la oscuridad sobre las nuevas versiones de software.
  • Ataques de datos sin fin . En respuesta a una solicitud de descarga, el atacante devuelve un flujo interminable de datos, causando daños directamente al cliente (por ejemplo, llenando un disco o RAM).
  • Ataca una respuesta lenta . El atacante responde a los clientes con un flujo de datos muy lento, lo que finalmente lleva al hecho de que el cliente no puede completar el proceso de actualización.
  • Ataques de exceso de dependencias . El atacante informa al cliente que la instalación del software requerido también requiere la instalación de software de terceros ( hola, mail.ru - aprox. Por. ). Este software de terceros puede provenir de una fuente confiable, pero, sin embargo, tiene vulnerabilidades conocidas que un atacante podría aprovechar.
  • Ataques mixtos combinados . El atacante devuelve al cliente una instantánea del repositorio que contiene archivos que nunca existieron en la misma revisión al mismo tiempo. Esto puede conducir a la instalación de versiones obsoletas de dependencias y otras consecuencias más complejas.
  • Instalar otro software . El atacante devuelve un archivo de confianza al cliente, que simplemente no es lo que el cliente quería instalar.
  • Espejos maliciosos que impiden las actualizaciones . Un atacante controla uno de los espejos del repositorio y puede usarlo para evitar que los clientes reciban actualizaciones de otros espejos no infectados.
  • Vulnerabilidades de compromiso clave . Un atacante que puede comprometer una sola clave en el sistema (o varias claves, cuyo número no supera el umbral especificado), puede comprometer a los clientes. Estos ataques pueden ocurrir tanto en el caso de confiar en una sola clave en línea (por ejemplo, cuando se protegen las actualizaciones solo con cifrado SSL) como en el caso de una única clave fuera de línea (para la mayoría de los sistemas de actualización de software que usan claves para firmar).

Principios de seguridad


Para garantizar que el sistema esté protegido de todos los ataques descritos anteriormente, la arquitectura y la implementación del Marco de actualización (TUF) se basa en varios conceptos básicos. Los detalles de cómo TUF transmite la información descrita anteriormente se pueden encontrar en la documentación de metadatos .


Confianza


Confiar en los archivos descargados en realidad significa asumir que los archivos fueron proporcionados por una parte sin soluciones arquitectónicas vulnerables. Los dos aspectos a menudo evasivos de la confianza en un sistema de actualización de software son:


  • La confianza no debe ser otorgada para siempre. La confianza debe ser revocada si no se actualiza.
  • La confianza no debe darse por igual a todos los participantes. Este tipo de confianza compartida significa que solo puede confiar en aquellos archivos de miembros cuya provisión por parte de este miembro está especificada por el rol raíz.

Reducción de riesgo clave (resistencia al compromiso)


Las firmas criptográficas son un componente esencial de la seguridad en los sistemas de actualización de software. La seguridad de las claves utilizadas en estas firmas afecta directamente la seguridad de los clientes que protege el sistema. En lugar de creer ingenuamente que las claves privadas nunca pueden verse comprometidas, los sistemas seguros de actualización de software deben prever cómo proteger a los clientes de la posibilidad de comprometer estas claves. Este es el principio básico de la resistencia al compromiso.


La seguridad de los clientes cuando se compromete una clave incluye:


  • Reemplazo y recuperación rápida y segura de llaves.
  • Mínima confianza en las claves con un alto riesgo de compromiso. Las claves que se almacenan en línea o se usan en sistemas de automatización no deben representar una amenaza instantánea para los clientes en caso de compromiso.
  • Uso de múltiples claves y firmas de umbral / quórum.

Integridad


Garantizar la integridad en Update Framework (TUF) se aplica no solo a los archivos individuales, sino también al repositorio en su conjunto. Es bastante obvio que los clientes deben verificar que los archivos individuales sean correctos. Ya no es tan obvio, pero sigue siendo muy importante para los clientes asegurarse de que la auditoría del repositorio en su conjunto sea correcta. Por ejemplo, si una fuente confiable proporciona dos archivos, el sistema de actualización de software debería ver las últimas versiones de ambos archivos (no solo uno), y solo aquellas versiones de estos dos archivos que existen en el repositorio a la vez.


Relevancia


Dado que las actualizaciones de software a menudo corrigen vulnerabilidades, es importante que los sistemas de actualización de software obtengan las últimas versiones disponibles. Un atacante puede intentar forzar al cliente a instalar versiones obsoletas del software o simplemente convencerlo de que no hay nuevas actualizaciones disponibles.


Asegurar relevancia significa:


  • Nunca acepte archivos anteriores a los ya instalados.
  • Identificar posibles problemas con la recepción de actualizaciones.

Vale la pena señalar que si un atacante responde a las solicitudes de los clientes, no siempre es posible realizar una actualización exitosa. Sin embargo, el cliente debe poder determinar la probabilidad de actualizaciones que no puede recibir.


Implementación de seguridad


Además de una arquitectura segura, TUF también funciona contra las vulnerabilidades de implementación, incluidas las vulnerabilidades comunes a los sistemas de actualización de software. En algunos casos, la inclusión de información adicional en los metadatos de actualización se utiliza para esto. Por ejemplo, saber el tamaño esperado del archivo descargado le permite a TUF limitar la cantidad de datos descargados. Como resultado, TUF está protegido contra el ataque de datos infinito discutido anteriormente.

Source: https://habr.com/ru/post/464171/


All Articles