DETECCIÓN Y CORRECCIÓN AUTOMÁTICA DE PROGRAMAS DE ARCHIVOS VULNERABLES
Campo del Invento La presente descripción se refiere de manera general a la corrección de programas de archivos, y más particularmente, a una forma automática, completa, confiable y libre de regresión para proporcionar parches de seguridad a archivos de programas binarios vulnerables en ambientes de computación distribuidos, heterogéneos. Antecedentes del Invento El desarrollo de softwares es un proceso en curso mediante el cual un producto de software que será liberado inicialmente al público, puede ser actualizado en forma continua mediante revisiones por parte del desarrollador/vendedor del software. Las revisiones de los softwares normalmente son costeadas por el vendedor del software, en lo que denominan "paquete de servicios", las cuales pueden ser descargadas u ordenadas al vendedor para la instalación en la computadora de un usuario. Los paquetes de servicios normalmente contienen programas de corrección (por ejemplo, para un sistema de operación, programa de aplicación, etc), que reparan los problemas (es decir, "errores") encontrados en el código del programa después de la liberación inicial del producto o después de la liberación del último paquete de servicios.
Además de contener correcciones para los errores del programa, los paquetes de servicios también pueden contener parches de seguridad desarrollados en forma específica para reparar vulnerabilidades encontradas en los archivos del programa. Las vulnerabilidades del programa descubiertas después que el producto del software ha sido liberado, pueden poner en riesgo de un ataque significativo por parte de piratas y viruses que se encuentran a nivel mundial. Por consiguiente, una vez que se ha descubierto una vulnerabilidad, es de gran importancia la distribución e instalación rápida y amplia de parches de seguridad para computadoras que tienen un software vulnerable. Teóricamente, puede ser efectivo el uso de paquetes de servicios para lograr una pronta y amplia distribución de parches de seguridad. Por ejemplo, cuando un vendedor de softwares descubre una vulnerabilidad y posteriormente desarrolla " v; un parche de seguridad, el parche puede ser colocado en el últimd paquete de servicios en un sitio Web del vendedor para que los usuarios lo descarguen e instalen inmediatamente. Esto podría frustar a una gran parte de los piratas y viruses que pretenden explotar la vulnerabilidad descubierta. Sin embargo, los administradores del sistema y otros usuarios del producto de software, con frecuencia se enfrentan a diversos inconvenientes y/o dificultades relacionados con el acceso e instalación de parches de seguridad. Estas dificultades normalmente dan como resultado una distribución significativamente inferior de dichos parches, a la que pretende el vendedor que desarrolla el parche. El resultado es que las vulnerabilidades en muchas computadoras a nivel mundial se dejan sin corregir, exponiendo dichas computadoras a un riesgo significativo. Una dificultad con el acceso e instalación de parches de seguridad, es que los métodos normales para detectar si una computadora está corriendo un software con una vulnerabilidad conocida, requieren el uso e inclusión activa de la computadora. Por ejemplo, los métodos actualmente disponibles pueden determinar que versiones de los productos de software en particular que se encuentran en una computadora necesitan se actualizados (por ejemplo, con un parche de seguridad). Sin embargo, únicamente los productos de software que están corriendo en forma activa en la computadora se incluyen en esta determinación. No se consideran los sistemas y aplicaciones de operación secundarios que no están corriendo en forma activa en una computadora y por lo tanto, pueden tener una vulnerabilidad de seguridad que transcurre sin aviso y sin probabilidad de corrección. Para los productos que corren en forma activa en una computadora, un usuario puede revisar una lista de actualizaciones disponibles y seleccionar las actualizaciones para instalación. Algunas actualizaciones pueden ser actualizaciones críticas diseñadas para proteger a una computadora de vulnerabilidades de seguridad conocidas. Algunas actualizaciones requieren que un usuario reinicie la computadora antes de que se termine la instalación. Además, el usuario debe seleccionar en forma activa las actualizaciones e instalarlas. Por estas y otras razones, los métodos actuales para accesar e instalar parches de seguridad son menos efectivos. Otra dificultad en accesar e instalar parches de seguridad, es saber si una computadora necesita o no un parche de seguridad. Algunas ocasiones es difícil que los usuarios conozcan si sus computadoras están corriendo el software que es vulnerable. Además, los métodos actuales para detectar si una computadora está corriendo el software con una vulnerabilidad conocida, pueden no tener la capacidad de detectar ciertas configuraciones de un producto de software conocidas por ser vulnerables. Por ejemplo, las versiones compartidas de algunos productos de software pueden distribuirse como parte de otros productos, por lo tanto, aunque una versión compartida de un producto pueda contener la misma vulnerabilidad que la versión completa del producto, la versión compartida puede no ser reconocida como un producto que necesita una actualización de un parche de seguridad. Por lo tanto, las versiones compartidas de productos de software que se conocen por tener vulnerabilidades de seguridad, con frecuencia transcurren sin corrección. Otros problemas con respecto al acceso o instalación de parches de seguridad, se refieren al método de "paquete de servicios" convencional, a través del cual se suministran dichos parches. La descarga e instalación de paquetes de servicios es Tn proceso tardado y manual que muchos administradores de sistemas simplemente no tienen tiempo de llevar a cabo. Por consiguiente, incluso cuando los administradores pretenden instalar parches de seguridad, el tiempo entre la liberación de un parche de seguridad y su instalación en un sistema determinado puede ser de semanas, meses o años. Por lo tanto, el riesgo de ataque a través de una vulnerabilidad de seguridad puede no disminuir en dichos sistemas, hasta después de que el vendedor del software ha emitido un parche de seguridad. Además, los administradores de sistemas con frecuencia eligen no descargar e instalar paquetes de servicios que contienen parches de seguridad, incluso aunque comprenden los importantes riesgos de seguridad. La razón de esto es que la instalación de un paquete de servicios proporciona el riesgo de regresiones del sistema que pueden introducir cambios no deseados en el comportamiento del mismo. Los administradores, con frecuencia dedican gran tiempo y esfuerzo a corregir un sistema para que funcione como se desea. Sin embargo, tal como se mencionó anteriormente, los paquetes de servicios representan una evolución de una versión previa de un producto de software que incluye las actualizaciones más recientes para una base de código del producto (es decir, el alcance de los cambios no está restringido únicamente a los parches de seguridad). Además, de introducir comportamientos nuevos y proyectados en un sistema, Fas actualizaciones de códigos recientes en üñ paquete de servicios, pueden introducir errores no conocidos en un sistema que pueden originar que el sistema se comporte en forma inesperada, lo cual a su vez puede crear problemas significativos para un administrador de sistemas. Por lo tanto, con frecuencia los sistemas no están actualizados con parches de seguridad importantes proyectados para corregir archivos de programas vulnerables, debido a que los administradores no desean correr el riesgo de regresiones. Por consiguiente, existe la necesidad de una forma para implementar la corrección de vulnerabilidades de seguridad en archivos de programas en una forma automática, completa, confiable y libre de regresiones. Sumario del Invento En la presente invención se describe la creación de parches de seguridad automáticos, completos, confiables y libres de regresiones para archivos de programas binarios. De acuerdo con una implementación, se recibe una firma binaria de una vulnerabilidad y un parche de seguridad. Se identifica un archivo binario vulnerable en una computadora con base en la firma binaria de una vulnerabilidad. El archivo binario vulnerable en la computadora se actualiza con el parche de seguridad. De acuerdo con otra implementación, se recibe una firma binaria que identifica una vulnerabilidad de seguridad en un archivo binario. También se recibe un parche de seguridad configurado para corregir la vulnerabilidad de seguridad. La firma binaria y el parche de seguridad se distribuyen a una pluralidad de servidores. De acuerdo con otra implementación, se recibe una firma binaria desde un servidor y se utiliza para buscar archivos binarios. Se envía una solicitud de parche de seguridad al servidor, si se encuentra la firma binaria en un archivo binario. Posteriormente el archivo binario se actualiza con el parche de seguridad. Breve Descripción de los Dibujos Se utilizan los mismos números de referencia a lo largo de los dibujos, para indicar componentes y características similares.
La figura 1, ilustra un ambiente de red de ejemplo adecuado para ¡mplementar la detección y corrección automática de vulnerabilidades de seguridad en archivos binarios. La figura 2, ilustra una modalidad de ejemplo de un servidor de distribución, un servidor de parche-exploración y una computadora cliente adecuada para ¡mplementar la detección y corrección automática de vulnerabilidades de seguridad en archivos binarios. La figura 3, ilustra otra modalidad de ejemplo de un servidor de distribución, un servidor de parche-exploración y una computadora cliente adecuada para ¡mplementar la detección y corrección automática de vulnerabilidades de seguridad en archivos binarios. Las figuras de la 4 a la 6, ilustran diagramas de bloque de métodos de ejemplo para implementar la detección y corrección automática de vulnerabilidades de seguridad en archivos binarios.
La figura 7, ilustra un ambiente de computación de ejemplo adecuado para implementar un servidor de distribución, un servidor de parche-exploración y una computadora cliente. Descripción Detallada del Invento Revisión general La descripción que se encuentra a continuación se dirige a sistemas y métodos que permiten la creación de parches para vulnerabilidades de seguridad en archivos binarios. La detección y corrección de archivos binarios vulnerables es automática, completa, confiable, y libre de regresiones a través de redes en una escala sin límite. Estas ventajas pueden considerarse en varias formas, incluyendo por ejemplo, el apalancamiento de la infraestructura antivirus actual que se despliega ampliamente a través de la Internet. Una divergencia de parches de seguridad de los paquetes de servicio convencionales, proporciona la posibilidad de producir correcciones de vulnerabilidades de seguridad en archivos binarios libres de regresión. El descubrimiento confiable de archivos binarios vulnerables
(por ejemplo, en sistemas de operación, programas de aplicación, etc) se logra a través del uso de firmas binarias que han estado asociadas con vulnerabilidades de seguridad. Las firmas binarias asociadas con vulnerabilidades de seguridad en archivos binarios, junto con parches de seguridad desarrollados para corregir las vulnerabilidades de seguridad, se cargan a un servidor de distribución central. El servidor de distribución está configurado para distribuir las firmas binarias y parches de seguridad en una base amplia a través de diversas redes, tales como la Internet. El uso de un servidor de distribución central para actualizar los servidores de la red (por ejemplo, a través de la Internet), proporciona una cobertura de parche completa y automática en una escala sin límite. Los servidores de la red que reciben dichas actualizaciones, pueden explorar las computadoras cliente dentro de las redes subordinas para localizar archivos vulnerables de acuerdo con firmas binarias, y posteriormente actualizar las computadoras que se hayan encontrado con archivos vulnerables de seguridad, utilizando los parches de seguridad correspondientes que corregirán los archivos vulnerables. Los servidores de la red también pueden comunicarse con computadores cliente para transferir a las computadoras firmas binarias y parches de seguridad, de modo que la exploración y actualización pueda llevarse a cabo a través de las propias computadoras. También pueden existir múltiples niveles depositados en redes subordinadas. Ambiente de Ejemplo La figura 1, ilustra un ambiente de red de ejemplo 100, adecuado para implementar la detección y corrección automática de vulnerabilidades de seguridad en archivos binarios. En el ambiente de red de ejemplo 100, se acopla un servidor de distribución central 102 a múltiples servidores de exploración/parche 104 a través de una red 106(a). El servidor de exploración/parche 104 se acopla normalmente a través de una red 106(b) a una pluralidad de computadoras cliente 108(1 )-108(n). Se pretende que la red 106 represente cualquier variedad de topologías y tipos de red convencionales (incluyendo redes ópticas, cableadas y/o inalámbricas), empleando cualquier variedad de protocolos de red convencionales (incluyendo protocolos públicos y/o privados). La red 106 puede incluir, por ejemplo, la Internet, así como posiblemente al menos parte de una o más redes de área local (LANs) y/o redes de área amplia (WANs). Las redes 106(a) y 106(b) pueden ser la misma red que la Internet, o pueden ser redes aisladas entre si, tal como la Internet y una LAN corporativa. El servidor de distribución 102 y los servidores de exploración/parche 104 normalmente se implementan en la forma de servidores Web estándar, y cada uno pueden tener cualquiera de una variedad de aparatos de cómputo convencionales, incluyendo PCs de escritorio, computadoras de bolsillo o portátiles, estaciones de trabajo, computadoras de unidad central, aparatos de Internet, combinaciones de los mismos, etc. Uno o más de los servidores 102 y 104 pueden ser los mismos tipos de aparatos, o como alternativa, diferentes tipos de aparatos. Un ambiente de cómputo de ejemplo para implementar un servidor de distribución 102 y un servidor de exploración/parche 104 se describe con mayor detalle más adelante con referencia a la figura 7. Las computadoras cliente 108 funcionan en una relación típica de cliente/servidor con un servidor 104, en donde múltiples clientes 108 realizan solicitudes a un servidor 104 que atiende las solicitudes. Las computadoras cliente 108 pueden ser cualquiera de una variedad de aparatos de cómputo convencionales, incluyendo PCs de escritorio, computadoras de bolsillo o portátiles, estaciones de trabajo, computadoras de unidad central, consolas de juegos, PCs de bolsillo, teléfonos celulares, u otros aparatos de comunicación inalámbrica, asistentes digitales personales (PDAs), combinaciones de los mismos, etc. Una o más de las computadoras cliente 108 pueden ser el mismo tipo de aparatos, o como alternativa, diferentes tipos de aparatos. Un ambiente de cómputo de ejemplo para implementar una computadora cliente 108, se describe con mayor detalle más adelante con referencia a la figura 7. En general, la detección y corrección automática y completa de archivos binarios vulnerables en computadoras cliente 108, se logra a través de actualizaciones elaboradas a través del servidor de distribución 102 que incluyen firmas binarias para identificar archivos binarios vulnerables y parches de seguridad configurados para corregir archivos vulnerables. Tal como se describirá con mayor detalle más adelante con respecto a las siguientes modalidades de ejemplo, las firmas binarias y parches de seguridad se distribuyen a los servidores de exploración/parches 104, los cuales a su vez, ya sea que exploran en forma activa y actualizan archivos binarios vulnerables en computadoras cliente 108, o procesan las firmas binarias y parches de seguridad a las computadoras cliente 108, de modo que las computadoras cliente 108 pueden llevar a cabo la exploración y corrección de archivos binarios vulnerables. Modalidades de Ejemplo La figura 2, ilustra una modalidad de ejemplo de un servidor de distribución 102, un servidor de exploración-parche 104 y una computadora cliente 108 adecuada para implementar la detección y corrección automático de vulnerabilidades de seguridad en archivos binarios. El servidor de distribución 102 incluye un módulo de distribución 200 y una base de datos 202 para recibir y mantener firmas binarias y parches de seguridad. La base de datos 202 puede actualizarse con firmas binarias y parches de seguridad en una variedad de formas, incluyendo, por ejemplo, a través de un medio de almacenamiento portátil (no mostrado, pero que se puede observar en la figura 7) o a través de un aparato de cómputo (no mostrado) acoplado al servidor 102 y configurado para cargar firmas binarias y parches de seguridad a la base de datos 202. Un escenario típico en el cual una base de datos 202 puede actualizarse, comienza con una investigación del producto de software (por ejemplo un sistema de operación, programa de aplicación, etc) iniciada por el desarrollador del producto de software. Por ejemplo, un desarrollador puede contratar una firma de consultoría de seguridad para intentar encontrar vulnerabilidades de seguridad en un producto de software recientemente liberado. Si se descubre una vulnerabilidad de seguridad en un producto de software a través de piratería informáticad o de otros medios, se puede identificar un patrón de bit exacto de la función vulnerable dentro del producto. El patrón de bit representa una firma binaria de la sección vulnerable en el archivo binario, el cual es un componente de un producto de software. Una vez que se descubre una vulnerabilidad de seguridad y se analiza, se puede desarrollar una corrección que eliminará la vulnerabilidad. Dichas correcciones se denominan parches de seguridad y representan módulos de código revisados recopilados en binarios ejecutables. Los parches de seguridad se pueden instalar en computadoras que se identifican a través de la firma binaria, conforme está corriendo el software que tiene la vulnerabilidad de seguridad. La instalación del parche de seguridad corregirá la vulnerabilidad de seguridad. El servidor de distribución 102 habilita a los vendedores del producto de software y a otros a cargar firmas binarias de archivos binarios vulnerables junto con los parches de seguridad diseñados para corregir los archivos binarios vulnerables en la base de datos 202 para distribución.
El módulo de distribución 200 está configurado para distribuir a diversos servidores de exploración-parche 104 a través de una red 106, firmas binarias y parches de seguridad a partir de bases de datos 202. El módulo de distribución 200 normalmente funciona en forma automática para distribuir firmas binarias y parches de seguridad desde la base de datos 202, siempre que la base de datos 202 esté actualizada con firmas y parches adicionales. La distribución automática se puede lograr en una variedad de formas, que incluyen, por ejemplo, la comunicación del módulo de distribución 200 a los servidores de exploración-parche 104, que indica que las firmas binarias y parches de seguridad actualizados están disponibles y se esperan solicitudes para enviar las firmas binarias y parches de seguridad, o mediante el envío en forma automática de firmas binarias y parches de seguridad actualizados a los servidores de exploración-parche 104 configurados para aceptar las actualizaciones. En la modalidad de la figura 2, un servidor de exploración-parche 104 incluye un módulo de exploración-parche 204 y una base de datos 206 para recibir y mantener firmas binarias y parches de seguridad. La base de datos 206, se actualiza normalmente en forma automática con nuevas firmas binarias y parches de seguridad a través de comunicaciones entre un módulo de exploración-parche 204 y el módulo de distribución 200 que se encuentra en el servidor de distribución 102. Además de actualizar la base de datos 206 con firmas binarias y parches de seguridad, el módulo de exploración-parche 204 está configurado para accesar la computadora cliente 108 y explorar archivos binarios 208 para firmas binarias. La exploración de archivos binarios 208 puede incluir la búsqueda de una firma binaria en archivos binarios presentes en cualquier forma de medios que se encuentran en, o que son accesibles a través de, la computadora cliente 108. Los archivos binarios 208, normalmente incluyen un código recopilado, legible en computadora/procesador tal como un sistema de operación o un archivo de programa de aplicación. Sin embargo, se debe observar que los archivos binarios 208 pueden ser cualquier forma de información binaria, incluyendo instrucciones legibles en computadora/procesador, estructuras de datos, módulos de programa y otros datos de la computadora cliente 108. Tal como se observará más adelante en la descripción que se refiere al ambiente de computadora de ejemplo de la figura 7, dichos medios que se encuentran en la computadora cliente 108 pueden incluir cualesquiera medios disponibles que sean accesibles mediante la computadora cliente 108 tal como medios volátiles y no volátiles, así como medios removibles y no removibles. Dichos medios legibles en computadora/procesador pueden incluir memoria volátil, tal como memoria de acceso aleatorio (RAM) y/o memoria no volátil, tal como memoria únicamente de lectura (ROM). Los medios legibles en computadora/procesador también pueden incluir otros medios de almacenamiento en computadora removibles/no removibles, volátiles/no volátiles, tales como por ejemplo, una unidad de disco duro para leer y escribir en un medio magnético no removible, no volátil, una unidad de disco magnético para leer y escribir en un disco magnético removible, no volátil (por ejemplo, un "disco flexible") una unidad de disco óptico para leer y/o escribir en un disco óptico removible, no volátil, tal como CD-ROM, DVD-ROM, u otros medios ópticos, otros dispositivos de almacenamiento magnético, tarjetas de memoria flash, memoria únicamente de lectura programable eléctricamente borrable (EEPROM), almacenamiento adherido a la red, y similares. Todos los medios legibles en computadora/procesador que proporcionan almacenamiento tanto volátil como no volátil de cualquier forma de archivos binarios 208, incluyendo instrucciones legibles en computadora/procesador, estructuras de datos, módulos de programa y otros datos de la computadora cliente 108, son accesibles para la exploración mediante el servidor de exploración-parche 104 a través de un módulo de exploración-parche 204. El módulo de exploración-parche 204 busca de este modo archivos binarios 208 en la computadora cliente 108, para determinar si se encuentra una firma binaria que identifica una vulnerabilidad de seguridad en cualquier información binaria localizada en una computadora cliente 108. Si el patrón de bits de la firma binaria se encuentra en un archivo binario 208, el módulo de exploración-parche 204 opera para corregir la vulnerabilidad de seguridad en el archivo binario 208, instalando un parche de seguridad correspondiente en la computadora cliente 108. La instalación de un parche de seguridad en la computadora cliente 108, sobre escribe o elimina de otra forma el archivo binario o una parte del archivo binario que contiene la vulnerabilidad de seguridad. La figura 3, ilustra otra modalidad de ejemplo de un servidor de distribución 102, un servidor de exploración-parche 104 y una computadora cliente 108 adecuada para implementar la corrección de vulnerabilidades de seguridad en archivos binarios. En general, en la modalidad de la figura 3, las firmas binarias y parches de seguridad se bajan, o redistribuyen desde el servidor 104 hasta la computadora cliente 108, y la exploración de archivos vulnerables de seguridad y la corrección de archivos vulnerables de seguridad se lleva a cabo mediante la computadora cliente 108, en lugar de mediante el servidor de parches de seguridad 104. En la modalidad de la figura 3, el servidor de distribución 102 está configurado en la misma forma que se describió anteriormente con respecto a la modalidad de la figura 2. Por lo tanto, la base de datos 202 puede ser actualizada para incluir firmas binarias recientemente descubiertas que identifican vulnerabilidades de seguridad en archivos binarios. La base de datos 202 también puede ser actualizada con parches de seguridad correspondientes que han sido desarrollados para corregir dichas vulnerabilidades de seguridad.
El servidor de exploración-parche 102 de la figura 3, está configurado en cierto modo de la misma forma que la descrita anteriormente con respecto a la figura 2. Por lo tanto, el servidor de exploración-parche 102 de la figura 3 incluye una base de datos 206 para recibir y mantener firmas binarias y parches de seguridad. La base de datos 206 normalmente se actualiza en forma automática con firmas binarias y parches de seguridad nuevos mediante comunicaciones entre el servidor de exploración-parche 104 y el servidor de distribución 102. Sin embargo, la comunicación entre el servidor de exploración-parche 104 y el servidor de distribución 102 se lleva a cabo a través de un módulo de redistribución 300, en lugar de un módulo de exploración-parche 204, tal como se describe con respecto a la modalidad de la figura 2. El módulo de redistribución 300, además de actualizar la base de datos 206 con firmas binarias y parches de seguridad, está configurado para comunicarse con el módulo de exploración-: parche 302 en la computadora cliente 108 y transferir una firma binaria a la computadora cliente 108. El módulo de exploración-parche 302, está configurado para recibir la firma binaria y explorar archivos binarios 208 para determinar si la firma binaria se encuentra en cualquier información binaria localizada en la computadora cliente 108. Por lo tanto, el módulo de exploración-parche 302 de la figura 3, funciona en una forma similar al módulo de exploración-parche 204 descrito anteriormente con referencia a la figura 2. Si el patrón de bits de la firma binaria se encuentra en un archivo binario 208 en la computadora cliente 108, el módulo de exploración-parche 302 envía una solicitud al módulo de redistribución 300 que se encuentra en el servidor 102. La solicitud es que el módulo de redistribución 300 envíe el parche de seguridad correspondiente con la firma binaria bajada a la computadora cliente 108. El módulo de redistribución 300 responde a la solicitud, enviando el parche de seguridad adecuado a la computadora cliente 108. El módulo de exploración-parche 302 recibe el parche de seguridad y opera para corregir la vulnerabilidad de seguridad en el archivo binario 208, instalando el parche de seguridad en la computadora cliente 108. Tal como en la modalidad de la figura 2, la instalación de un parche de seguridad en la computadora cliente 108 sobreescribe o elimina de otra forma el archivo binario o una parte del archivo binario que contiene la vulnerabilidad de seguridad descubierta. Métodos de Ejemplo Los métodos de ejemplo para implementar la detección y corrección automática de vulnerabilidades de seguridad en archivos binarios, se describirá a continuación con referencia principalmente a los diagramas de flujo de las figuras de la 4 a la 6. Los métodos aplican generalmente para las modalidades de ejemplo descritas anteriormente con respecto a las figuras de la 1 a la 3. Los elementos de los métodos descritos pueden llevarse a cabo a través de cualesquiera medios adecuados, que incluyen por ejemplo, bloques de lógica de hardware en un ASIC o mediante la ejecución de instrucciones legibles en un procesador definidas en un medio legible en un procesador. Un "medio legible en un procesador", tal como se utiliza en la presente invención, puede ser cualquier medio que pueda contener, almacenar, comunicar, propagar o transportar instrucciones para ser utilizadas por o ejecutarse mediante un procesador. Un medio legible en un procesador, puede ser, sin limitación, un sistema, aparato, dispositivo o medio de propagación electrónico, magnético, óptico, electromagnético, infrarrojo o semiconductor. Los ejemplos más específicos de un medio legible en un procesador, incluyen entre otros, una conexión eléctrica (electrónica) que tienen uno o más cables, un disquete de computadora portátil (magnético), una memoria de acceso aleatorio (RAM) (magnética), una memoria únicamente de lectura (ROM) (magnética), una memoria únicamente de lectura programable borrable (EPROM o memoria Flash) una fibra óptica (óptica), un disco compacto de reescritura (CD-RW) (óptico) y una memoria únicamente de lectura de disco compacto portátil (CDROM) (óptico). La figura 4 muestra un método de ejemplo 400 para implementar la detección y corrección automática de vulnerabilidades de seguridad en archivos binarios. Los archivos binarios normalmente se localizan o almacenan en una computadora cliente que esta siendo servida por una computadora servidor, aunque también pueden localizarse en la propia computadora servidor, o cualquier otro aparato de cómputo accesible mediante la computadora servidor. En el bloque 402 del método 400, se recibe una firma binaria. La firma binaria es un patrón de bit que ha estado asociado con una vulnerabilidad de seguridad en un archivo binario en particular, tal como un programa de aplicación ejecutable o un sistema de operación que corre en una computadora cliente. La firma binaria se recibe desde un servidor de distribución central 102 a través de un servidor subordinado 104. En el bloque 404, se recibe un parche de seguridad. El parche de seguridad normalmente es un código ejecutable recopilado que ha sido desarrollado como una corrección para vulnerabilidad de seguridad del archivo binario en particular. El parche de seguridad también se recibe del servidor de distribución central 102 a través del servidor subordinado 104. En el bloque 406, se identifica un archivo binario vulnerable con base en la firma binaria. La identificación del archivo binario vulnerable normalmente se logra explorando la información binaria almacenada en diversos medios de una computadora, tal como una computadora cliente 108, y posteriormente comparando el patrón(s) en la firma binaria con la información binaria encontrada en el medio. La identificación puede ocurrir en diversas formas, que incluyen, por ejemplo, mediante la exploración y comparación por parte del servidor 104 de toda la información binaria presente en la computadora cliente. La identificación de un archivo binario vulnerable también puede lograrse teniendo el servidor 104 la firma binaria bajada a la computadora cliente, de modo que la computadora cliente pueda llevar a cabo la exploración y comparación. En el bloque 408 del método 400, se utiliza el parche de seguridad para actualizar el archivo binario vulnerable. La actualización puede lograrse en diversas formas, que incluyen por ejemplo, a través de la instalación por parte del servidor 104 del parche de seguridad en la computadora cliente 108. Si la computadora cliente 108 ha llevado a cabo la exploración y ha identificado el archivo binario vulnerable, la computadora cliente 108 puede solicitar que el servidor 104 envíe el parche de seguridad a la computadora 108, en cuyo caso la computadora 108 puede instalar el parche de seguridad para corregir el archivo binario vulnerable. La figura 5 muestra otro método de ejemplo 500 para implementar la detección y corrección automática de vulnerabilidades de seguridad en archivos binarios. El método 500 ilustra en forma general la distribución de firmas binarias de vulnerabilidades de seguridad y los parches de seguridad desarrollados para corregir dichas vulnerabilidades de seguridad. En el bloque 502 del método 500, se recibe una firma binaria que identifica una vulnerabilidad de seguridad de un archivo binario.
La firma binaria normalmente se carga a un servidor de distribución 102, en la forma de un patrón de bits recientemente descubierto que identifica una vulnerabilidad en un archivo binario de un producto de software que puede ser distribuido ampliamente a través de muchas computadoras que se encuentran en una red, tal como la Internet. La carga, se logra normalmente desde una computadora acoplada al servidor de distribución 102 o desde un medio de almacenamiento portátil insertado en el servidor de distribución 102. En el bloque 504, se recibe un parche de seguridad configurado para corregir la vulnerabilidad de seguridad, mediante el servidor de distribución 102 en una forma similar a la firma binaria. En el bloque 506, la firma binaria y el parche de seguridad son distribuidos a una pluralidad de servidores subordinados 104 desde el servidor de distribución 102. Esta distribución ocurre en forma automática y se puede lograr en diversas formas. Por ejemplo, al recibir una firma binaria y un parche de seguridad cargados, el servidor de distribución 102 puede enviar en forma automática la firma binaria y el parche de seguridad a través de la red a todos los servidores subordinados 104 configurados para recibir las firmas binarias y parches de seguridad actualizados. El servidor de distribución 102, también debe enviar un aviso a los servidores 104 que indica que se ha descubierto una vulnerabilidad de seguridad y que está disponible un parche de seguridad para corregir la vulnerabilidad. Posteriormente los servidores subordinados 104 pueden solicitar que el servidor de distribución 102 envíe la firma binaria que identifica la vulnerabilidad de seguridad y el parche de seguridad. Al recibir una solicitud, el servidor de distribución 102 puede enviar la firma binaria y el parche de seguridad para solicitarlos a los servidores 102. La figura 6, muestra otro método de ejemplo 600 para implementar una detección y corrección automática de vulnerabilidades de seguridad en archivos binarios. En el bloque 602 del método 600, una computadora cliente 108 recibe una firma binaria desde un servidor 104. La firma binaria está asociada con una vulnerabilidad de seguridad en un archivo binario que puede estar presente en la computadora cliente 108. En el bloque 604, la computadora cliente 108 explora toda la información binaria actualmente disponible para ésta y compara el patrón(s) en la firma binaria con la información binaria. La información binaria explorada mediante la computadora cliente 108, normalmente está en la forma de instrucciones legibles y/o ejecutables en computadora/procesador, estructuras de datos, módulos de programa y otros datos útiles para la computadora cliente 108 y puede residir en medios de almacenamiento, tanto volátiles como no volátiles de diversos tipos. En el bloque 606, si la computadora cliente 108 encuentra un archivo binario que contiene la firma binaria, envía una solicitud al servidor 104 para que se tranfiera el parche de seguridad. En el bloque 608, la computadora cliente 108 recibe el parche de seguridad, y en el bloque 610, la computadora cliente 108 instala el parche de seguridad con el objeto de corregir la vulnerabilidad de seguridad en el archivo binario que contiene la información binaria que coincide con el patrón(s) que se encuentra en la firma binaria. Aunque se han descrito uno o más métodos por medio de diagramas de flujo y texto asociado con los bloques de los diagramas de flujo, quedará entendido que los bloques no tienen que realizarse necesariamente en el orden en el cual se presentaron, y que se pueden obtener ventajas similares en un orden alternativo. Además, los métodos no son exclusivos y se pueden llevar a cabo solos, o en combinación con otros. Computadora de Ejemplo La figura 7, ilustra un ambiente de cómputo de ejemplo adecuado para implementar un servidor de distribución 102, un servidor de exploración-parche 104 y una computadora cliente 108, tal como se describió anteriormente con referencia a las figuras de la 1 a la 3. Aunque en la figura 7 se muestra una configuración específica, el servidor de distribución 108, el servidor de exploración-parche 104 y la computadora cliente 108 puede implementarse en otras configuraciones de cómputo. El ambiente de cómputo 700 incluye un sistema de cómputo para propósitos generales en la forma de una computadora 702. Los componentes de la computadora 702 pueden incluir, pero no se limitan a, uno o más procesadores o unidades de procesamiento 704, una memoria del sistema 706 y un bus del sistema 708 que acopla diversos componentes del sistema incluyendo el procesador 704 a la memoria del sistema 706. El bus del sistema 708, representa uno o más de cualesquiera de diversos tipos de estructuras de bus, incluyéndo un bus de memoria o controlador de memoria, un bus periférico, un puerto de gráficos acelerado y un procesador o bus local que utiliza cualquiera de una variedad de arquitecturas de bus. Un ejemplo de un bus del sistema 708, podría ser un bus de Interconexión de Componentes Periféricos (PCI), también conocido como bus Mezzanine. La computadora 702 normalmente incluye una variedad de medios legibles en computadora. Dichos medios pueden ser cualquier medio disponible que sea accesible mediante la computadora 702 e incluye medios tanto volátiles como no volátiles, medios removibles y no removibles. La memoria del sistema 706 incluye medios legibles en computadora en la forma de memoria volátil, tal como memoria de acceso aleatorio (RAM) 710 y/o memoria no volátil, tal como memoria únicamente de lectura (ROM) 712. En la ROM 712, se almacena un sistema de entrada/salida básico (BIOS) 714, que contiene rutinas básicas que ayudan a la transferencia de información entre elementos dentro de la computadora 702, tal como durante el inicio. La RAM 710 normalmente contiene módulos de datos y/o programas que son inmediatamente accesibles para y/o que se operan mediante la unidad de procesamiento 704. La computadora 702 también puede incluir otros medios de almacenamiento en computadora removibles/no removibles, volátiles/no volátiles. A manera de ejemplo, la figura 7 ilustra una unidad de disco duro 716 para leer y escribir en un medio magnético no removible, no volátil (no mostrado), una unidad de disco magnético 718 para leer y escribir en un disco magnético removible, no volátil 720 (por ejemplo, un "disco flexible") y una unidad de disco óptico 722 para leer y escribir en un disco óptico removible, no volátil 724, tal como un CD-ROM, DVD-ROM, u otros medios ópticos. La unidad de disco duro 716, la unidad de disco magnético 718 y la unidad de disco óptico 722 están conectadas cada una al bus del sistema 708 a través de una o más interfases de medios de datos 726. Como alternativa, la unidad de disco duro 716, la unidad de disco magnético 718 y la unidad de disco óptico 722 pueden estar conectadas al bus del sistema 708 a través de una interfase SCSI (no mostrada). Las unidades de disco y sus medios legibles en computadora asociados proporcionan almacenamiento no volátil de las instrucciones legibles en computadora, estructuras de datos, módulos de programa y otros datos de la computadora 702. Aunque el ejemplo ilustra un disco duro 716, un disco magnético removible 720 y un disco óptico removible 724, se puede apreciar que también se pueden utilizar otros tipos de medios legibles en computadora para impiementar el sistema y ambiente de cómputo de ejemplo, los cuales pueden almacenar datos que son accesibles mediante una computadora, tal como cintas magnéticas u otros dispositivos de almacenamiento magnético, tarjetas de memoria flash, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento óptico, memorias de acceso aleatorio (RAM), memorias únicamente de lectura (ROM), memoria únicamente de lectura programable eléctricamente borrable (EEPROM) y similares. Se puede almacenar cualquier número de módulos del programa en el disco duro 716, en el disco magnético 720, en el disco óptico 724, en la ROM 712 y/o RAM 710, incluyendo a manera de ejemplo, un sistema de operación 26, uno o más programas de aplicación 728, otros módulos del programa 730 y datos del programa 732. Cada uno de dichos sistemas de operación 726, uno o más programas de aplicación 728, otros módulos de programa 730 y datos del programa 723 (o alguna combinación de los mismos) pueden incluir una modalidad de un esquema de almacenamiento en memoria instantánea para la información de acceso a la red del usuario. La computadora 702 puede incluir una variedad de medios legibles en computadora/procesador identificados como medios de comunicación. Los medios de comunicación normalmente representan instrucciones legibles en computadora, estructuras de datos, módulos de programas y otros datos que se encuentran en una señal de datos modulada, tal como una onda transportadora u otro mecanismo de transporte e incluye medios de suministro de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características ajustadas o cargadas de tal forma que se codifique la información en la señal. A manera de ejemplo, y no de limitación, los medios de comunicación incluyen medios cableados, tales como red cableada o conexión cableada-directa y medios inalámbricos tales como medios acústicos, RF, infrarrojos y otros medios inalámbricos. Las combinaciones de cualesquiera de los anteriores, también están incluidas dentro del alcance del medio legible en computadora. Un usuario puede ingresar comandos e información en el sistema de computadora 702 a través de aparatos de ingreso tales como un teclado 734 y un aparato de señalización (por ejemplo, un "ratón"). Otros aparatos de ingreso 738 (no mostrados en forma específica) puede incluir un micrófono, joystick, almohadilla de juego, disco satelital, puerto de serie, escáner y/o similares. Estos y otros aparatos de ingreso están conectados a la unidad de procesamiento 704 mediante interfases de entrada/salida 714 que están acopladas al bus del sistema 708, pero pueden estar conectadas mediante otras estructuras de interfase y de bus, tal como un puerto paralelo, puerto de juegos o bus de serie universal (USB). También se puede conectar al bus del sistema 708 a través de una interfase, tal como un adaptador de video 744, un monitor 742 u otro tipo de aparato de despliegue. Además del monitor 742, otros aparatos periféricos de salida pueden incluir componentes tales como altavoces (no mostrados) y una impresora 746 la cual puede estar conectada a la computadora 702 a través de las interfases de entrada/salida 740. La computadora 702 puede operar en una ambiente en red utilizando conexiones lógicas hacia una o más computadoras remotas, tales como un aparato de cómputo remoto 748. A manera de ejemplo, el aparato de cómputo remoto 748 puede ser una computadora personal, computadora portátil, un servidor, un enrutador, una computadora en red, un aparato para escudriñar u otro nodo de red común, y similares. El aparato de cómputo remoto 748 se ilustra como una computadora portátil que puede incluir muchos o todos los elementos y características descritos en la presente invención, con relación al sistema de cómputo 702. La conexiones lógicas entre la computadora 702 y la computadora remota 748 se ilustran en la forma de una red de área local (LAN) 750 y una red de área amplia (WAN) 752. Tales ambientes de red son comunes en lugares como oficinas, redes de cómputo a nivel empresarial, intranets y la Internet. Cuando se implementan en un ambiente de red LAN, la computadora 702 se conecta a una red local 750 a través de una interfase de red o adaptador 754. Cuando se implementa en un ambiente de red WAN, la computadora 702 normalmente incluye un módem 756 u otros medios para establecer comunicaciones a través de la red amplia 752. El módem 756, el cual puede ser interno o externo a la computadora 702, puede conectarse al bus del sistema 708 a través de las interfases de entrada/salida 740 u otros mecanismos adecuados. Se podrá apreciar que las conexiones de red ilustradas son de ejemplo y que se pueden emplear otros medios para establecer enlaces de comunicación entre las computadoras 702 y 748. En un ambiente en red, tal como el que se ilustra con el ambiente de cómputo 700, los módulos de programa ilustrados con relación a la computadora 702 o parte de los mismos, se pueden almacenar en un dispositivo de almacenamiento de memoria remota. A manera de ejemplo, los programas de aplicación remota 758 residen en un dispositivo de memoria de la computadora remota 748. Para propósitos de ilustración, en la presente invención se ilustran los programas de aplicación y otros componentes del programa ejecutables, tales como el sistema de operación en la forma de bloques independientes, aunque se reconoce que dichos programas y componentes residen en diferentes tiempos en diferentes componentes de almacenamiento del sistema de cómputo 702, y son ejecutados a través del procesador(s) de datos de la computadora. Conclusión Aunque la presente invención ha sido descrita en un lenguaje específico de las características estructurales y/o acciones metodológicas, quedará entendido que la misma se define en las reivindicaciones adjuntas, y no está limitada necesariamente a las características o acciones específicas descritas. Más bien, las características y acciones específicas se describen como formas de ejemplo para implementar la invención reclamada.