BRPI0501650B1 - Method for applying a software patch to multiple instances of an executable module and computer readable storage memory - Google Patents

Method for applying a software patch to multiple instances of an executable module and computer readable storage memory Download PDF

Info

Publication number
BRPI0501650B1
BRPI0501650B1 BRPI0501650B1 BR PI0501650 B1 BRPI0501650 B1 BR PI0501650B1 BR PI0501650 B1 BRPI0501650 B1 BR PI0501650B1
Authority
BR
Brazil
Prior art keywords
executable module
instance
received
software patch
module
Prior art date
Application number
Other languages
Portuguese (pt)
Publication date

Links

Description

Relatório Descritivo da Patente de Invenção para "MÉTODO PARA APLICAR UM PATCH DE SOFTWARE A MÚLTIPLAS INSTÂNCIAS DE UM MÓDULO EXECUTÁVEL E MEMÓRIA DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR".Patent Descriptive Report for "METHOD FOR APPLYING A SOFTWARE PATCH TO MULTIPLE INSTRUCTIONS OF AN EXECUTABLE MODULE AND COMPUTER-READY STORAGE MEMORY".

Campo da Invenção [001] A presente invenção é direcionada ao campo de atualização da operação de programas de computador instalados.Field of the Invention The present invention is directed to the update field of the operation of installed computer programs.

Fundamentos da Invenção [002] A correção é o processo de modificar programas já instalados, incluindo programas de aplicação, programas utilitários, sistemas operacionais e componentes de sistemas operacionais* acionado-res de dispositivo, etc. Correção pode ser útil para modificar programas para uma variedade de propósitos, incluindo a correção de um erro de programação, redução ou eliminação de risco de segurança, ou aperfeiçoamento da lógica usada pelo programa modificado, A correção é tipicamente iniciada pela companhia ou outra organização que originalmente supriu o programa a ser corrigido.Background of the Invention [002] Patching is the process of modifying already installed programs, including application programs, utility programs, operating systems, and device driver * operating system components, etc. Patching can be useful for modifying programs for a variety of purposes, including correcting a programming error, reducing or eliminating a security risk, or improving the logic used by the modified program. Patching is typically initiated by the company or other organization. originally supplied the program to be fixed.

[003] Programas instalados são predominantemente compostos de módulos de código executável. Como um exemplo, muitos programas projetados para executar no sistema operacional WINDOWS XP da Microsoft Corp, de Redmond, Washington são predominantemente compostos de módulos de código executável chamados “DLLs”. Uma aproximação convencional popular à correção é identificar, entre os módulos de código executável fazendo o programa instalado a ser corrigido, o módulo de código executável contendo o código do programa que um deseja modificar com uma correção; criando uma nova versão do módulo de código executável identificado na qual a modificação desejada é feita; e distribuindo a nova versão do módulo de código executável identificado, junto com um programa instalador, para usuários que podem desejar aplicar a correção. Cada usuário determina se de- seja aplicar a correção, e se sim, executa o programa instalador, que substitui a versão original do módulo de código executável identificado pela nova versão do módulo de código executável identificado.[003] Installed programs are predominantly made up of executable code modules. As an example, many programs designed to run on Microsoft Corp.'s WINDOWS XP operating system from Redmond, Washington are predominantly made up of executable code modules called “DLLs”. A popular conventional approach to the patch is to identify, among executable code modules making the installed program to be patched, the executable code module containing the program code that one wishes to modify with a patch; creating a new version of the identified executable code module in which the desired modification is made; and distributing the new version of the identified executable code module, along with an installer program, to users who may wish to apply the fix. Each user determines whether to apply the fix, and if so, runs the installer program, which replaces the original version of the identified executable code module with the new version of the identified executable code module.

[004] Aproximações convencionais à correção têm um número de desvantagens significantes. Essas desvantagens freqüentemente aumentam a carga associada às correções de recebimento e de aplicação. Em alguns casos, essa carga aumentada retarda a aplicação de algumas correções por alguns usuários, e mesmo impede a aplicação de algumas correções por alguns usuários. Tal retardo e impedimento na aplicação de correções podem em alguns casos ter sérias conseqüências negativas para usuários, especialmente para correções projetadas para reduzir ou eliminar um risco de segurança.Conventional approaches to correction have a number of significant disadvantages. These disadvantages often increase the burden associated with receive and apply fixes. In some cases, this increased load delays some users from applying some fixes, and even prevents some users from applying some fixes. Such delays and impediments to patching can in some cases have serious negative consequences for users, especially for patches designed to reduce or eliminate a security risk.

[005] Uma desvantagem de aproximações convencionais para correção está relacionada a casos comuns nos quais múltiplas correções devem ser criadas e distribuídas para efetuar uma única modificação a um único programa. Em alguns casos, o programa a ser corrigido tem diversos “sabores” diferentes de um módulo de código executável particular, tal como um sabor diferente para cada sistema operacional ou versão de sistema operacional no qual o programa é projetado para executar, e/ou cada versão de linguagem natural do programa. Onde o módulo de código executável identificado é um tal módulo de código executável, a criação da correção e o processo de distribuição descritos acima devem ser repetidos para cada sabor do módulo de código executável identificado. O usuário deve então selecionar e aplicar a correção para o sabor apropriado do módulo de código executável identificado. Selecionando através do amplo número resultante de correções e selecionando o conjunto apropriado de correções para aplicação em cada sistema de computador de usuário pode ser muito incômodo, tanto que essa condição é algumas vezes chamada de “inferno de correções”. Em alguns casos, um administrador deve manter uma base de dados da invenção identificando o conjunto de versões de módulo executável instaladas em cada sistema alvo, que é usado para selecionar correções convencionais apropriadas para cada sistema alvo.[005] A disadvantage of conventional correction approaches is related to common cases in which multiple corrections must be created and distributed to make a single modification to a single program. In some cases, the program to be patched has several different "flavors" of a particular executable code module, such as a different flavor for each operating system or operating system version on which the program is designed to run, and / or each natural language version of the program. Where the identified executable code module is such an executable code module, the patch creation and distribution process described above must be repeated for each flavor of the identified executable code module. The user must then select and apply the correction for the appropriate flavor of the identified executable code module. Selecting from the resulting large number of patches and selecting the appropriate set of patches to apply to each user computer system can be very cumbersome, so much so that this condition is sometimes referred to as the “hell of patches”. In some cases, an administrator must maintain a database of the invention identifying the set of executable module versions installed on each target system, which is used to select appropriate conventional fixes for each target system.

[006] Uma outra desvantagem de aproximações convencionais para correção está relacionada ao amplo tamanho das correções distribuídas. Não é incomum para módulos de código executável terem um tamanho medido em megabytes, que por outro lado levam uma única correção a ter um tamanho comparável, tornando-a incômoda de distribuir e armazenar, ou até mesmo impossível de distribuir e armazenar, para alguns usuários. Esse problema pode ser multiplicado para correções que têm múltiplos sabores. Adicionalmente, porque cada correção convencional tipicamente inclui um inteiro módulo executável substituto, aplicando correções convencionais pode contribuir para o problema de modificação de código.Another disadvantage of conventional approaches to correction is related to the large size of distributed corrections. It is not uncommon for executable code modules to be sized in megabytes, which in turn cause a single fix to be of comparable size, making it uncomfortable to distribute and store, or even impossible to distribute and store, for some users. . This problem can be multiplied for corrections that have multiple flavors. Additionally, because each conventional fix typically includes an integer surrogate executable module, applying conventional fixes can contribute to the code modification problem.

[007] Uma desvantagem adicional de aproximações convencionais para correção está relacionada a uma necessidade de alguns usuários de testar correções antes de aplicá-las a sistemas de computador de produção. Em alguns casos, instalando uma correção em um sistema de computador pode ter resultados adversos, tais como a nova versão do módulo de código executável identificado contido na correção introduz um novo erro de programação, ou onde ele causa uma nova interação imprevisível com um outro programa rodando no sistema de computador contra o qual ele é aplicado. Conseqüentemente, freqüentemente antes de aplicar uma correção contra um sistema de produção cujos dados e operação são importantes para sustentar, o usuário primeiro aplica a correção contra um sistema de teste para avaliar se a correção é segura para aplicar ao sistema de produção. Tal teste separado de correções adiciona à carga associada com a correção. Adicionalmente, onde uma correção convencional cria um problema - tal como um problema de compatibilidade de aplicação ou uma nova vulnerabilidade explorada - em um tempo substancialmente depois de uma correção ser aplicada, pode ser difícil traçar tais problemas de volta à correção.[007] An additional disadvantage of conventional correction approaches is that some users need to test corrections before applying them to production computer systems. In some cases, installing a patch on a computer system can have adverse results, such as the new version of the identified executable code module contained in the patch introducing a new programming error, or where it causes unpredictable new interaction with another program. running on the computer system against which it is applied. Consequently, often before applying a correction against a production system whose data and operation are important to sustain, the user first applies the correction against a test system to assess whether the correction is safe to apply to the production system. Such a separate patch test adds to the load associated with the patch. Additionally, where a conventional fix creates a problem - such as an application compatibility issue or a newly exploited vulnerability - at a time substantially after a fix is applied, it may be difficult to trace such issues back to the fix.

[008] Uma desvantagem adicional de aproximações convencionais à correção está relacionada à operação do instalador incluído na correção. Freqüentemente, de modo a substituir um módulo de código executável que é parte do programa de execução, o instalador deve primeiro terminar a execução desse programa. Também, em alguns casos, tal substituição pode causar interrupções substanciais no uso do sistema de computador corrigido.[008] An additional disadvantage of conventional fix approaches is related to the installer operation included in the fix. Often, in order to replace an executable code module that is part of the runtime program, the installer must first finish running that program. Also, in some cases, such replacement may cause substantial interruptions in the use of the patched computer system.

[009] Uma outra desvantagem de aproximações convencionais à correção envolve tentar à correção um módulo executável para o qual um “conserto privado”, também chamado um “conserto rápido (“hot fix”)”, tem anteriormente sido emitido a um subconjunto apropriado dos clientes para esse módulo executável. Em tais casos, por causa de dificuldades encontradas na distribuição de correções convencionais que substituem novas versões diferentes do módulo de código executável dependendo de cada usuário dependendo se o usuário aplicou o conserto quente, é típico que ao invés de distribuir uma única correção convencional que substitui uma nova versão única do módulo executável sem dizer respeito a se o usuário aplicou o conserto rápido. Se essa nova versão incorpora o conserto rápido, a correção impõe o conserto rápido em clientes que não pretendem recebê-lo. Se, por outro lado, essa nova versão não incorpora o conserto rápido, desprovê os clientes que pretendem receber o conserto rápido do conserto rápido.Another disadvantage of conventional approaches to correction involves attempting to correct an executable module for which a "private fix", also called a "hot fix", has previously been issued to an appropriate subset of the patches. clients for this executable module. In such cases, because of difficulties encountered in distributing conventional fixes that replace different new versions of the executable code module depending on each user depending on whether the user has applied the hot fix, it is typical that instead of distributing a single conventional fix that replaces a new single version of the executable module without regard to whether the user applied the quick fix. If this new version incorporates quick fix, the fix imposes quick fix on customers who do not intend to receive it. If, on the other hand, this new version does not incorporate quick fix, it neglects customers who want to get quick fix from quick fix.

[0010] Uma outra desvantagem de aproximações convencionais para correção envolve o fato de que os instaladores para produtos de software que contam com um módulo executável particular, tal como uma biblioteca de ligações dinâmica particular, freqüentemente “esconde” esse módulo executável armazenando-o em uma localização não-padrão no sistema de arquivos do sistema de computador alvo. Conseqüentemente, é algumas vezes difícil ou impossível determinar se um sistema alvo particular contém uma cópia de um módulo executável a ser corrigido, e, se sim, onde ela reside no sistema de arquivos do sistema de computador alvo. Também, alguns produtos de software mantêm um “catálogo” de versões de módulo executável que foram instalados por seus instaladores. Um produto de software pode contar com a correção de uma indicação no catálogo da versão de um módulo executável particular. Tal confiança é destruída onde uma correção convencional substitui a versão do módulo executável identificado no catálogo com uma nova versão do módulo executável sem atualizar o catálogo.Another disadvantage of conventional patching approaches involves the fact that installers for software products that have a particular executable module, such as a particular dynamic link library, often “hide” that executable module by storing it in a non-default location in the target computer system file system. Consequently, it is sometimes difficult or impossible to determine if a particular target system contains a copy of an executable module to be patched, and if so, where it resides in the target computer system file system. Also, some software products maintain a "catalog" of executable module versions that were installed by their installers. A software product may rely on the correction of an indication in the version catalog of a particular executable module. Such trust is destroyed where a conventional fix replaces the executable module version identified in the catalog with a new executable module version without updating the catalog.

[0011] Uma outra desvantagem de aproximações convencionais para correção nasce do fato de que elas são impossíveis de aplicar antes que o módulo executável a ser corrigido é instalado no sistema de computador alvo. Como um resultado, se o módulo executável a ser corrigido é instalado no sistema de computador alvo depois que uma correção convencional para esse módulo executável é recebida, não é razoável que a correção será aplicada ao módulo executável.Another disadvantage of conventional fix approaches is that they are impossible to apply before the executable module to be fixed is installed on the target computer system. As a result, if the executable module to be patched is installed on the target computer system after a conventional fix for that executable module is received, it is unreasonable that the patch will be applied to the executable module.

[0012] Uma outra desvantagem de aproximações convencionais para correção é que elas tipicamente podem somente ser aplicadas por um usuário conectado ao sistema de computador alvo usando uma conta administrativa tendo permissões de modificação liberais. Conec-tando-se a uma conta administrativa para esse propósito pode tornar o sistema de computador alvo vulnerável a vírus presentes no sistema de computador alvo procurando modificar aspectos do sistema de computador alvo e solicitando permissões liberais para fazer isso.Another disadvantage of conventional correction approaches is that they can typically only be applied by a user logged on to the target computer system using an administrative account having liberal modification permissions. Connecting to an administrative account for this purpose can make the target computer system vulnerable to viruses present in the target computer system by seeking to modify aspects of the target computer system and requesting liberal permissions to do so.

[0013] Uma outra desvantagem de aproximações convencionais para correção é que correções convencionais podem ser difíceis ou impossíveis de desabilitar, solicitando etapas tais como revertendo a substituição de um módulo executável, ou revertendo uma ou mais modificações ao registro de sistema, [0014] Conseq üentemente, uma nova aproximação para correção que supera alguma ou todas as desvantagens de aproximações convencionais para correção discutidas acima ter ia utilidade signífi cante. BreveDescriclodosDesenhos [0015] A Figura 1 ilustra um exemplo de um ambiente de sistema de computação adequado no qual o recurso pode ser implementado.Another disadvantage of conventional fix approaches is that conventional fixes can be difficult or impossible to disable by requesting steps such as reverting the replacement of an executable module, or reverting one or more modifications to the system registry. [0014] Therefore, a new correction approach that overcomes some or all of the disadvantages of conventional correction approaches discussed above would have significant utility. BriefDescriptosDrawings Figure 1 illustrates an example of a suitable computing system environment in which the feature can be deployed.

[0016] A Figura 2 é um diagrama de fluxo de dados que mostra uma troca típica de dados entre sistemas de computação de acordo com o recurso.[0016] Figure 2 is a data flow diagram showing a typical data exchange between computing systems according to the feature.

[0017] A Figura 3 é um diagrama de fluxo que mostra etapas tipicamente executadas pelo recurso de modo a receber e processar uma nova correção.Figure 3 is a flow chart showing steps typically performed by the feature to receive and process a new correction.

[0018] A Figura 4 é um diagrama de estrutura de dados que mostra uma tabela de correções de exemplo típica daquelas usadas pelo recurso.Figure 4 is a data structure diagram showing a typical example fix table of those used by the feature.

[0019] A Figura 5 é um diagrama de fluxo que mostra etapas tipicamente executadas pelo recurso de modo a atualizar as instruções de configuração para uma correção particular.[0019] Figure 5 is a flow chart showing steps typically performed by the feature to update configuration instructions for a particular fix.

[0020] A Figura 6 é um diagrama de fluxo que mostra etapas tipicamente executadas pelo recurso de executar a validação do parâmetro especificada por uma correção.[0020] Figure 6 is a flow chart showing steps typically performed by the feature of performing parameter validation specified by a correction.

Descrição Detalhada da Invenção [0021] Um recurso de software para corrigir código de programa de computador instalado (“o recurso”) é fornecido. Em algumas modalidades, o recurso adiciona teste de parâmetros e resultado de teste lidando com funções instaladas. Em outras modalidades, o recurso adiciona vários outros tipos de funcionalidade para funções instaladas, em alguns casos em posições arbitrárias nos fluxos de execução de funções instaladas.Detailed Description of the Invention A software feature for correcting installed computer program code ("the feature") is provided. In some embodiments, the feature adds parameter testing and test results dealing with installed functions. In other embodiments, the feature adds several other types of functionality to installed functions, in some cases at arbitrary positions in the installed function execution streams.

[0022] Em algumas modalidades, para cada correção, o recurso distribui para cada sistema de computação a ser corrigido - por exemplo, cada “sistema de computador alvo” - a especificação de um ponto no qual executar um teste, a identificação do teste para executar, e como agir em resposta a um ou mais resultados de teste diferentes. Em algumas modalidades, o recurso fornece um conjunto padrão de validação de parâmetro e outros testes cujo uso pode ser especificado nas correções. Por exemplo, uma correção pode especificar que, para uma função particular, se um parâmetro particular da função não tem um certo valor, a convocação da função deve falhar antes que a sua execução substantiva comece. Uma outra correção pode especificar que, para uma função particular, se um parâmetro particular tem um comprimento excedendo um comprimento máximo especificado, o parâmetro deve ser truncado ao comprimento máximo especificado antes que a execução da função seja permitida a proceder. Muitas proezas de segurança contam com levar funções a serem chamadas com valores de parâmetro que, enquanto eles não foram bloqueados na versão original de um código de função, leva a função a criar ou tirar vantagem de uma condição insegura. Em muitos casos, tais proezas podem ser impedidas usando tais correções para impedir a função de executar com tais valores de parâmetro. Em algumas modalidades, as correções especificam o teste de valores outros além dos parâmetros de função, tais como valores lidos a partir de um arquivo ou inseridos pelo usuário.In some embodiments, for each correction, the resource distributes to each computing system to be corrected - for example, each "target computer system" - the specification of a point at which to perform a test, the identification of the test to perform, and how to act in response to one or more different test results. In some embodiments, the feature provides a standard set of parameter validation and other tests that can be specified in corrections. For example, a correction might specify that, for a particular function, if a particular function parameter does not have a certain value, the function call must fail before its substantive execution begins. Another fix may specify that for a particular function, if a particular parameter has a length exceeding a specified maximum length, the parameter must be truncated to the specified maximum length before execution of the function is allowed to proceed. Many security prowess rely on getting functions to be called with parameter values that, while they were not locked in the original version of a function code, causes the function to create or take advantage of an unsafe condition. In many cases, such exploits can be prevented by using such corrections to prevent the function from executing with such parameter values. In some embodiments, corrections specify the testing of values other than function parameters, such as values read from a file or entered by the user.

[0023] Em algumas modalidades, um agente de correção automatizado automaticamente recebe cada correção, a valida, e a armazena em uma tabela de correções para possível aplicação. Em algu- mas modalidades, cada correção é aplicada a quaisquer instantes do módulo executável a ser corrigido que já foram carregados no sistema de computador alvo quando a correção é recebida. Essa aproximação é relacionada aqui como “correção rápida”, e habilita as correções a se tornarem efetivas imediatamente mediante serem recebidas, e não exige o recurso a ser capaz de determinar onde o módulo executável a ser corrigido é armazenado no disco. Em algumas modalidades, cada correção recebida é aplicada à imagem do disco do módulo executável a ser corrigido, tal que, quando a imagem de disco é carregada em tempos futuros, a imagem de disco carregada inclui a correção. Essa aproximação é relacionada aqui como “correção a frio”, e permite correções a serem persistentes através de múltiplas sessões. Em algumas modalidades, o recurso executa ambas a correção rápida e a correção a frio. Em algumas modalidades, cada correção é aplicada ao módulo executável para ser corrigido cada vez que o módulo executável a ser corrigido é carregado pelo carregador do sistema operacional. Essa aproximação é relacionada aqui como “correção de tempo de carga”. Em algumas modalidades, cada correção é aplicada ao módulo executável a ser corrigido cada vez que a função a ser corrigida é convocada. Essa aproximação é relacionada aqui como “correção de interceptação de chamado”. Correção de tempo de carga e correção de interceptação de chamado ambos (1) não exigem o recurso de serem capazes de determinar onde o módulo executável a ser corrigido está armazenado no disco, (2) facilitam prontamente a reversibilidade de uma correção particular, e (3) não exigem modificação da imagem de disco do módulo executável.In some embodiments, an automated remediation agent automatically receives each correction, validates it, and stores it in a correction table for possible application. In some embodiments, each patch is applied to any instances of the executable module to be patched that have already been loaded on the target computer system when the patch is received. This approach is referred to here as "quick fix", and enables fixes to become effective immediately upon receipt, and does not require the feature to be able to determine where the executable module to be patched is stored on disk. In some embodiments, each received patch is applied to the executable module disk image to be patched, such that when the disk image is loaded at future times, the loaded disk image includes the patch. This approach is referred to here as “cold correction”, and allows corrections to be persistent across multiple sessions. In some modes, the feature performs both quick fix and cold fix. In some embodiments, each patch is applied to the executable module to be patched each time the executable module to be patched is loaded by the operating system loader. This approximation is referred to here as “charge time correction”. In some embodiments, each correction is applied to the executable module to be corrected each time the function to be corrected is called. This approach is referred to here as “call intercept correction”. Load time correction and call trap correction both (1) do not require the ability to determine where the executable module to be patched is stored on disk, (2) readily facilitate the reversibility of a particular patch, and ( 3) Do not require modification of the executable module disk image.

[0024] Em algumas modalidades, o recurso permite um usuário ou administrador configurar a operação de correções que foram aplicadas. Como exemplos, tal configuração pode incluir, para uma correção aplicada particular: se o teste especificado pela correção é execu- tado quando a execução atinge o ponto especificado para a correção; se o tratamento do resultado do teste especificado pela correção é executado ou ignorado; e/ou se a performance do teste e/ou seu resultado é acessado, exibido em mensagem de aviso, etc. Nessas modalidades, o recurso permite às correções serem testadas em sistemas de computador de produção por inicialmente habilitando o acesso e de-sabilitando o tratamento do resultado. Nessas modalidades, o recurso adicionalmente permite operação da correção a ser acessada em um “modo verboso” depois de habilitar seu tratamento de resultado para auxiliar na identificação de instantes nos quais a correção está criando um problema, tal como um problema de compatibilidade de aplicação ou outro problema IT. Essas modalidades também permitem a uma correção ser rapidamente desabilitada depois de ser aplicada se é descoberto que a correção está criando problemas. Algumas modalidades do recurso também permitem à correção ser rapidamente desabilitada por simplesmente apagar a correção do conjunto de correções recebido e armazenado no sistema de computador alvo.In some embodiments, the feature allows a user or administrator to configure the operation of patches that have been applied. As an example, such a setting may include, for a particular applied correction: if the test specified by the correction is performed when the execution reaches the specified point for the correction; whether handling of the test result specified by the correction is performed or ignored; and / or whether the performance of the test and / or its result is accessed, displayed in a warning message, etc. In these modalities, the feature allows corrections to be tested on production computer systems by initially enabling access and disabling the handling of the result. In these embodiments, the feature additionally allows patch operation to be accessed in a “verbose” mode after enabling its result handling to assist in identifying instances in which the patch is creating a problem, such as an application compatibility issue or another IT problem. These modalities also allow a fix to be quickly disabled after it is applied if the fix is found to be creating problems. Some modes of the feature also allow the fix to be quickly disabled by simply deleting the fix from the received patch set and stored on the target computer system.

[0025] Em algumas modalidades, o recurso usa uma aproximação de correção de “dados acionados”, no qual as correções não contêm código, mas nem dados, tal como um pequeno texto legível por humanos ou documento XML, que especifica um ponto no qual executar um teste, a identificação do teste para executar, e como agir em resposta a um ou mais resultados de teste diferentes. Em tais modalidades, um agente de correção recebe correções de dados acionados, e adiciona os testes e o tratamento de teste especificados pelas correções. Em algumas modalidades, o recurso usa uma aproximação de correção de “código acionado”, e que cada correção contém um curto programa a ser adicionado ao módulo executável a ser corrigido que ele mesmo executa o teste chamando as funções de teste do parâmetro padrão do recurso, e que ele mesmo executa o tratamento do teste.In some embodiments, the feature uses a “triggered data” correction approximation, where corrections contain no code but no data, such as a small human-readable text or XML document, which specifies a point at which perform a test, identify the test to perform, and how to act in response to one or more different test results. In such embodiments, a remediation agent receives triggered data corrections, and adds the tests and test handling specified by the corrections. In some embodiments, the feature uses a “code fired” correction approximation, and each correction contains a short program to be added to the executable module to be corrected that it performs the test itself by calling the default function parameters test functions. , and that he himself performs the test treatment.

Usando correção de dados acionados ou correção de código acionado, é algumas vezes possível endereçar todos os sabores de um módulo executável a ser corrigido com uma única correção.Using triggered data correction or triggered code correction, it is sometimes possible to address all flavors of an executable module to be corrected with a single correction.

[0026] Em algumas modalidades, o recurso assina cada correção para demonstrar ambos que (1) a correção é de uma fonte aprovada, e (2) o conteúdo da correção não tem sido modificada desde a hora em que a correção foi criada pela fonte aprovada.In some embodiments, the feature signs each correction to demonstrate both that (1) the correction is from an approved source, and (2) the content of the correction has not been modified since the time the correction was created by the source. approved.

[0027] Em algumas modalidades, o recurso distribui cada correção a todo sistema de computador alvo, e um agente de correção no sistema de computador alvo determina automaticamente quais correções ou para serem aplicadas no sistema de computador alvo, e como eles estão para serem aplicados, baseados nas características do sistema de computador alvo. Isso ajuda usuários e administradores de muitas das cargas convencional mente associadas às correções de seleção e de aplicação, e a carga de manter uma base de dados da invenção corrente e acurada. Por exemplo, essas características podem incluir qual versão do módulo executável a ser corrigido está instalada no sistema de computador alvo. Nessas modalidades, o recurso pode superar o tipo de problemas tipicamente causados por consertos rápidos, por distribuir correções que especificam manuseio diferente para sabores consertados rapidamente e não rapidamente de um módulo executável particular, obviando qualquer necessidade de ou sacrificar um conserto rápido para um módulo executável particular ou tornar o conserto rápido ubíquo quando corrigindo esse módulo executável.In some embodiments, the feature distributes each patch to every target computer system, and a patch agent on the target computer system automatically determines which patches to apply to the target computer system, and how they are to be applied. , based on the characteristics of the target computer system. This helps users and administrators of many of the loads conventionally associated with selection and application corrections, and the burden of maintaining a current and accurate database of the invention. For example, these features may include which version of the executable module to be patched is installed on the target computer system. In such embodiments, the feature can overcome the kind of problems typically caused by quick fixes by distributing fixes that specify different handling for quick and not quickly fixed flavors of a particular executable module, obviating any need to or sacrificing quick fix for an executable module. particular or make the quick fix ubiquitous when correcting this executable module.

[0028] Em algumas modalidades, o agente de correção armazena cada correção recebida no sistema alvo, sem dizer respeito a se o módulo executável a ser corrigido por uma correção particular está instalado no sistema alvo quando a correção é recebida. Porque o recurso em muitos casos aplica correções em resposta ao carregamento de um módulo executável a ser corrigido ou a convocação de uma função a ser corrigida, o recurso pode aplicar uma correção a um módulo executável que foi instalado no sistema alvo depois que a correção foi recebida no sistema alvo. Também, as correções podem sobreviver à desinstalação e subseqüente reinstalação do módulo executável a ser corrigido.In some embodiments, the patch agent stores each patch received on the target system, without regard to whether the executable module to be patched by a particular patch is installed on the target system when the patch is received. Because the feature in many cases applies patches in response to loading an executable module to be patched or calling a function to be patched, the feature can apply a patch to an executable module that was installed on the target system after the patch was patched. received on the target system. Also, patches can survive the uninstall and subsequent reinstallation of the executable module to be patched.

[0029] Em algumas modalidades, o agente de correção é implementado em um serviço de sistema operacional. Nessas modalidades, o recurso concorda com o agente de correção quaisquer permissões solicitadas para aplicar uma correção. Essas modalidades reduzem o risco de segurança tipicamente imposto quando correções convencionais são aplicadas, à medida que elas obviam qualquer necessidade para um usuário conectar-se ao sistema de computador alvo usando uma conta administrativa tendo amplas permissões de modificação, e através disso dão a quaisquer vírus presentes no sistema de computador alvo uma grande oportunidade de modificar aspectos sensíveis do sistema de computador alvo.In some embodiments, the patching agent is deployed to an operating system service. In these modalities, the feature agrees with the remediation agent for any permissions requested to apply a remediation. These modalities reduce the security risk typically imposed when conventional fixes are applied, as they obviate any need for a user to connect to the target computer system using an administrative account having broad modify permissions, and thereby give any viruses. Present in the target computer system a great opportunity to modify sensitive aspects of the target computer system.

[0030] As correções usadas pelo recurso são tipicamente relativamente pequenas, e então impõem solicitações de recurso modestas para transmissão e armazenamento. Também, porque as correções usadas pelo recurso tendem a modificar o comportamento do software corrigido em um número menor de modos bem definidos, o recurso ajuda a reduzir o problema de modificação de código.The fixes used by the feature are typically relatively small, and thus impose modest feature requests for transmission and storage. Also, because the fixes used by the feature tend to modify the behavior of patched software in a smaller number of well-defined modes, the feature helps reduce the code modification problem.

[0031] A Figura 1 ilustra um exemplo de um ambiente de sistema de computação adequado 100 no qual o recurso pode ser implementado. O ambiente de sistema de computação 100 é somente um exemplo de um ambiente de computação adequado e não pretende sugerir qualquer limitação como ao escopo do uso ou funcionalidade do recurso. Nem deveria o ambiente de computação 100 ser interpretado como tendo qualquer dependência ou exigência em relação a qualquer um ou combinação de componentes ilustrados no ambiente operacional exemplar 100.[0031] Figure 1 illustrates an example of a suitable computing system environment 100 in which the feature can be deployed. The computing system environment 100 is only an example of a suitable computing environment and is not intended to suggest any limitations as to the scope of feature use or functionality. Nor should computing environment 100 be construed as having any dependency or requirement on any or all of the components illustrated in the exemplary operating environment 100.

[0032] O recurso é operacional com numerosos outros ambientes de sistema de computação ou configurações de propósito geral ou de propósito especial. Exemplos de bem conhecidos sistemas de computação, ambientes e/ou configurações que podem ser adequados para uso com o recurso incluem, mas não estão limitados a: computadores pessoais, computadores servidores, dispositivos portáteis ou laptop, dispositivos de placa de dados (“tablet”), sistemas multiprocessadores, sistemas baseados em microprocessador, dispositivos de conexão à internet via TV, eletrônicos de consumo programável, PCs de rede, minicomputadores, computadores de grande capacidade (“mainfra-me”), ambientes de computação distribuídos que incluem qualquer um dos sistemas ou dispositivos acima, e seus similares.[0032] The feature is operational with numerous other computer system environments or general purpose or special purpose configurations. Examples of well-known computing systems, environments and / or configurations that may be suitable for use with the feature include, but are not limited to: personal computers, server computers, portable or laptop devices, tablet devices. ), multiprocessor systems, microprocessor based systems, TV internet connection devices, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of above systems or devices, and the like.

[0033] O recurso pode ser descrito no contexto geral de instruções executáveis por computador, tais como módulos de programa, sendo executados por um computador. Geralmente, módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados, e assim por diante, que desempenham tarefas particulares ou implementam tipos de dados abstratos particulares. O recurso pode também ser praticado em ambientes de computação distribuídos onde tarefas são desempenhadas por dispositivos de processamento remoto que são ligados através de uma rede de comunicações. Em um ambiente de computação distribuído, os módulos de programa podem estar localizados em meios de armazenamento por computador local e/ou remoto incluindo dispositivos de armazenamento de memória.The feature can be described in the general context of computer executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so on, which perform particular tasks or implement particular abstract data types. The feature can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are connected through a communications network. In a distributed computing environment, program modules may be located on local and / or remote computer storage media including memory storage devices.

[0034] Em relação à Figura 1, um sistema exemplar para implementação do recurso inclui um dispositivo de computação de propósito geral na forma de um computador 110. Componentes do computador 110 podem incluir, mas não estão limitados a, uma unidade de processamento 120, uma memória de sistema 130, e um barramento de sistema 121 que acopla vários componentes de sistema incluindo a memória de sistema à unidade de processamento 120. O barramento de sistema 121 pode ser qualquer dos vários tipos de estruturas de barramento incluindo um barramento de memória ou controlador de memória, um barramento periférico, e um barramento local usando qualquer de uma variedade de arquiteturas de barramento. A título de exemplo, e não limitação, tais arquiteturas incluem barramento de Arquitetura de Padrão Industrial (ISA), barramento de Arquitetura de Micro Canal (MCA), barramento ISA aperfeiçoado (EISA), barramento local de Associação de Padrões de Vídeo Eletrônicos VESA, e barramento de Componente Periférico Interconectado (PCI) também conhecido como barramento Mezzanine.Referring to Figure 1, an exemplary system for implementing the feature includes a general purpose computing device in the form of a computer 110. Computer components 110 may include, but are not limited to, a processing unit 120, a system memory 130, and a system bus 121 that couples various system components including system memory to the processing unit 120. The system bus 121 can be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industrial Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA bus (EISA), VESA Electronic Video Standards Association local bus, and Interconnected Peripheral Component (PCI) bus also known as Mezzanine bus.

[0035] O computador 110 tipicamente inclui uma variedade de meios legíveis por computador. Os meios legíveis por computador podem ser qualquer meio disponível que pode ser acessado pelo computador 110 e incluem ambos os meios voláteis e não voláteis, meios removíveis e não removíveis. A título de exemplo, e não limitação, os meio legíveis por computador podem compreender meios de armazenamento por computador e meios de comunicação. Meios de armazenamento por computador incluem meios voláteis e não voláteis, removíveis e não removíveis implementados em qualquer método ou tecnologia para armazenamento de informação assim como instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados. Os meios de armazenamento por computador incluem, mas não estão limitados a, RAM, ROM, EEPROM, memória rápida ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento de disco óptico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que pode ser usado para armazenar a informação desejada e o qual pode ser aces- sado pelo computador 110. Os meios de comunicação incorporam tipicamente instruções legíveis por computador, estruturas de dados, módulos de programas ou outros dados em um sinal modulado de dados assim como uma onda portadora ou outro mecanismo de transporte e incluem qualquer meio de entrega de informação. O termo “sinal modulado de dados” significa um sinal que tem uma ou mais de suas características ajustadas ou alteradas de tal maneira a codificar informação no sinal. A título de exemplo, e não limitação, os meios de comunicação incluem meios com fio assim como uma rede por fio ou conexão direta por fio, e meios sem fio assim como acústicos, RF, infravermelhos e outros meios sem fio. Combinações de que quaisquer dos acima, devem também ser incluídas no escopo dos meios legíveis por computador.Computer 110 typically includes a variety of computer readable media. Computer readable media may be any available media accessible by computer 110 and include both volatile and non-volatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile, non-volatile, removable and non-removable media implemented in any method or technology for storing information as well as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, fast memory or other memory technology, CD-ROM, digital versatile discs (DVD) or other optical disc storage, magnetic cassettes, magnetic tape. , magnetic disk storage or other magnetic storage devices, or any other means that may be used to store the desired information and which may be accessed by the computer 110. The media typically incorporates computer readable instructions, data structures data, program modules or other data in a modulated data signal as well as a carrier wave or other transport mechanism and include any means of delivering information. The term "modulated data signal" means a signal that has one or more of its characteristics adjusted or altered in such a way as to encode information in the signal. By way of example, and not limitation, the media includes wired media as well as a wired network or direct wired connection, and wireless as well as acoustic, RF, infrared and other wireless media. Combinations of which any of the above should also be included within the scope of computer readable media.

[0036] A memória de sistema 130 inclui os meios de armazenamento por computador na forma de memória volátil e/ou não volátil assim como memória somente de leitura (ROM) 131 e memória de acesso aleatório (RAM) 132. Um sistema básico de entrada/saída 133 (BIOS), contendo as rotinas básicas que ajudam a transferir informação entre elementos no computador 110, tal como durante a inicialização, é tipicamente armazenada na ROM 131. A RAM 132 tipicamente contém dados e/ou módulos de programa que são imediatamente acessíveis para e/ou presentemente serem operados pela unidade de processamento 120. A título de exemplo, e não limitação, a Figura 1 ilustra o sistema operacional 134, programas de aplicação 135, outros módulos de programa 136 e dados de programa 137.System memory 130 includes computer storage media in the form of volatile and / or non-volatile memory as well as read-only memory (ROM) 131 and random access memory (RAM) 132. A basic input system Output 133 (BIOS), containing the basic routines that help transfer information between elements in computer 110, such as during startup, is typically stored in ROM 131. RAM 132 typically contains data and / or program modules that are immediately accessible for and / or presently to be operated by processing unit 120. By way of example, and not limitation, Figure 1 illustrates operating system 134, application programs 135, other program modules 136, and program data 137.

[0037] O computador 110 pode também incluir outros meios remo-víveis/não removíveis, voláteis/não voláteis de armazenamento por computador. Somente a título de exemplo, a Figura 1 ilustra o acionador de disco rígido 141 que lê ou escreve em meios magnéticos não removíveis e não voláteis, um acionador de disco magnético 151 que lê ou escreve em um disco magnético 152, removível, não volátil, e um acionador de disco óptico 155 que lê ou escreve em um disco óptico removível não volátil 156 tal como um CD ROM ou outros meios ópticos. Outros meios de armazenamento por computador removíveis/não removíveis, volá-teis/não voláteis que podem ser usados no ambiente operacional exemplar incluem, mas não estão limitados a, fitas cassete magnéticas, cartões de memória rápida, discos digitais versáteis, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido, e seus similares. O acionador de disco rígido 141 é tipicamente conectado ao barramento de sistema 121 através de uma interface de memória não removível tal como a interface 140, e o acionador de disco magnético 151 e o acionador de disco óptico 155 são tipicamente conectados ao barramento de sistema 121 por uma interface de memória removível, tal como a interface 150.Computer 110 may also include other removable / non-removable, volatile / non-volatile computer storage media. By way of example only, Figure 1 illustrates hard disk drive 141 that reads or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 151 that reads or writes to a removable, nonvolatile magnetic disk 152, and an optical disk drive 155 that reads or writes to a nonvolatile removable optical disk 156 such as a CD ROM or other optical medium. Other removable / non-removable, volatile / non-volatile computer storage media that may be used in the exemplary operating environment include, but are not limited to, magnetic cassette tapes, fast memory cards, versatile digital discs, digital video tape. , Solid state RAM, solid state ROM, and the like. Hard disk drive 141 is typically connected to system bus 121 via a non-removable memory interface such as interface 140, and magnetic disk drive 151 and optical disk drive 155 are typically connected to system bus 121. by a removable memory interface, such as interface 150.

[0038] Os acionadores e seus meios de armazenamento por computadores associados, discutidos acima e ilustrados na Figura 1, fornecem o armazenamento de instruções legíveis por computador, estruturas de dados, módulos de programa e outros dados para o computador 110. Na Figura 1, por exemplo, o acionador de disco rígido 141 é ilustrado como um sistema operacional de armazenamento 144, programas de aplicação 145, outros módulos de programa 146 e dados de programa 147. Note que esses componentes podem ser tanto iguais quanto diferentes do sistema operacional 134, programas de aplicação 135, outros módulos de programa 136, e dados de programa 137. O sistema operacional 144, programas de aplicação 145, outros módulos de programa 146, e dados de programas 147 são dados números diferentes aqui para ilustrar que, no mínimo, eles são cópias diferentes. Um usuário pode inserir comandos e informações no computador 110 através de dispositivos de entrada tais como, uma placa de dados, ou um digitalizador eletrônico 164, um microfone 163, um teclado 162 e um dispositivo de apontamento 161, comumente referido como um mouse, trackball ou mesa sensível ao toque. Outros dispositivos de entrada não mostrados na Figura 1 podem incluir uma alavanca de direção, game pad, antena de satélite, digitalizador, ou seus similares. Esses e outros dispositivos de entrada são freqüentemente conectados à unidade de processamento 120 através de uma interface de entrada 160 que é acoplada ao barramento de sistema, mas pode ser conectada por outra interface e estruturas de barramento, tal como uma porta paralela, porta de jogos ou um barramento serial universal (USB). Um monitor 191 ou outro tipo de dispositivo de exibição é também conectado ao barramento de sistema 121 através de uma interface, assim como uma interface de vídeo 190. O monitor 191 pode também ser integrado a um painel com tela sensível ao toque ou seus similares. Note que o monitor e/ou painel com tela sensível ao toque pode ser fisicamente acoplado a uma habitação na qual o dispositivo de computação 110 é incorporado, tal como em um computador pessoal do tipo placa de dados. Em adição, computadores tais como o dispositivo de computação 110 podem também incluir outros dispositivos de saída periférica tais como auto-falantes 195 e impressora 196, que podem ser conectados através de uma interface periférica de saída 194 ou seus similares.The drives and their associated computer storage media, discussed above and illustrated in Figure 1, provide for the storage of computer readable instructions, data structures, program modules, and other data for computer 110. In Figure 1, for example, hard disk drive 141 is illustrated as a storage operating system 144, application programs 145, other program modules 146, and program data 147. Note that these components may be both equal and different from operating system 134, application programs 135, other program modules 136, and program data 137. Operating system 144, application programs 145, other program modules 146, and program data 147 are given different numbers here to illustrate that at a minimum, They are different copies. A user may enter commands and information into computer 110 through input devices such as a data card, or electronic digitizer 164, a microphone 163, a keyboard 162, and a pointing device 161, commonly referred to as a mouse, trackball. or touch table. Other input devices not shown in Figure 1 may include a steering lever, game pad, satellite antenna, digitizer, or the like. These and other input devices are often connected to processing unit 120 via an input interface 160 which is coupled to the system bus, but may be connected by other interface and bus structures such as a parallel port, game port. or a universal serial bus (USB). A monitor 191 or other type of display device is also connected to system bus 121 via an interface as well as a video interface 190. Monitor 191 may also be integrated with a touch screen panel or the like. Note that the touchscreen monitor and / or panel may be physically attached to a housing in which the computing device 110 is incorporated, such as a data card type personal computer. In addition, computers such as computing device 110 may also include other peripheral output devices such as speakers 195 and printer 196, which may be connected via a peripheral output interface 194 or the like.

[0039] O computador 110 pode operar em um ambiente de rede usando conexões lógicas para um ou mais computadores remotos, tal como o dispositivo remoto 180. O dispositivo remoto 180 pode ser um computador pessoal, um servidor, um roteador, um PC de rede, um dispositivo par ou outro nó de rede comum, e tipicamente inclui muitos ou todos os elementos descritos em relação ao computador 110, embora somente um dispositivo de armazenamento de memória 181 tem sido ilustrado na Figura 1. As conexões lógicas descritas na Figura 1 incluem uma rede de área local (LAN) 171 e uma rede de área ampla (WAN) 173, mas podem também incluir outras redes. Tais ambientes de rede são comuns em escritórios, redes de computador de empresa ampla, intranets e a Internet. Por exemplo, no recurso presente, o sistema de computador 110 pode compreender mecanismo de fonte a partir do qual dados estão sendo migrados, e o computador remoto 180 pode compreender o mecanismo de destino.Note entretanto que os mecanismos de fonte e destino necessitam não ser conectados por uma rede ou quaisquer outros dispositivos, mas ao invés disso, os dados podem ser migrados via quaisquer meios capazes de ser escritos pela plataforma de fonte e lidos pela plataforma ou plataformas de destino.Computer 110 can operate in a network environment using logical connections to one or more remote computers, such as remote device 180. Remote device 180 can be a personal computer, a server, a router, a network PC , an even device or other common network node, and typically includes many or all of the elements described with respect to computer 110, although only one memory storage device 181 has been illustrated in Figure 1. The logical connections described in Figure 1 include a local area network (LAN) 171 and a wide area network (WAN) 173, but may also include other networks. Such network environments are common in offices, large enterprise computer networks, intranets, and the Internet. For example, in the present resource, computer system 110 may comprise source mechanism from which data is being migrated, and remote computer 180 may comprise destination mechanism. Note however that source and destination mechanisms need not be connected by a network or any other devices, but instead data can be migrated via any means capable of being written by the source platform and read by the target platform or platforms.

[0040] Quando usado um ambiente de rede LAN, o computador 110 é conectado à LAN 171 através de uma interface de rede ou adaptador 170. Quando usado um ambiente de rede WAN, o computador 110 tipicamente inclui um modem 172 ou outros dispositivos para estabelecer comunicações pela WAN 173, tal como a Internet. O modem 172, o qual pode ser interno ou externo, pode ser conectado ao bar-ramento de sistema 121 através da interface de entrada de usuário 160 ou outro mecanismo apropriado. Em um ambiente de rede, os módulos de programa representados em relação ao computador 110, ou partes do mesmo, podem ser armazenados no dispositivo de armazenamento de memória remota. A título de exemplo, e não limitação, a Figura 1 ilustra programas de aplicação remota 185 como residindo no dispositivo de memória 181. Será apreciado que as conexões de rede mostradas são exemplares e outros dispositivos para estabelecer uma ligação de comunicações entre os computadores podem ser usados.When using a LAN network environment, computer 110 is connected to LAN 171 via a network interface or adapter 170. When using a WAN network environment, computer 110 typically includes a modem 172 or other devices to establish WAN 173, such as the Internet. Modem 172, which may be internal or external, may be connected to system bus 121 via user input interface 160 or another appropriate mechanism. In a networked environment, program modules represented with respect to computer 110, or parts thereof, may be stored in the remote memory storage device. By way of example, and not limitation, Figure 1 illustrates remote application programs 185 as residing in memory device 181. It will be appreciated that the network connections shown are exemplary and other devices for establishing a communications link between computers may be provided. used.

[0041] Enquanto várias funcionalidades e dados são mostrados na Figura 1 como residindo em sistemas de computador particulares que são arranjados de um modo particular, aqueles versados na técnica apreciarão que tais funcionalidades e dados podem ser distribuídos de várias formas através de sistemas de computador em arranjos diferentes. Enquanto sistemas de computador configurados como descrito acima são tipicamente usados para suportar a operação do recurso, um dos versados na técnica apreciará que o recurso pode ser implementado usando dispositivos de vários tipos e configurações, e tendo vários componentes.While various features and data are shown in Figure 1 as residing in particular computer systems that are arranged in a particular manner, those skilled in the art will appreciate that such features and data may be distributed in various ways through computer systems in particular. Different arrangements. While computer systems configured as described above are typically used to support feature operation, one of skill in the art will appreciate that the feature may be implemented using devices of various types and configurations, and having various components.

[0042] A Figura 2 é um diagrama de fluxo de dados que mostra uma troca típica de dados entre sistemas de computador de acordo com o recurso. Os sistemas de computador mostrados na Figura 2 (sistemas de computador 210, 220, 221, 222, 230, 231, e 232) tipicamente têm alguns ou todos os componentes mostrados e discutidos em conjunto com a Figura 1. No servidor de distribuição de correção, o recurso gera uma ou mais correções. Essas correções 201 são enviadas de um servidor de distribuição de correção a um ou mais servidores de administração, tal como servidores de administração 220 e 230. Cada servidor de administração, por outro lado, envia as correções a um ou mais sistemas de computador alvo, tal como os sistemas de computador alvo 221, 222, 231, e 232. Em algumas modalidades (não mostradas), o servidor de distribuição de correção envia correções diretamente a um ou mais sistemas de computador alvo, ou via uma rota mais indireta do que através de um único servidor de administração. Correções recebidas em um sistema de computador alvo são processadas em um sistema de computador alvo como descrito em maiores detalhes abaixo. Um servidor de administração pode também enviar comandos de configuração de correção 202 a um ou mais sistemas de computador alvo, que aplicam os comandos de configuração de correção para re-configurar a operação de correções particulares. Como é discutido em maiores detalhes abaixo, uma correção pode ser completamente desabilitada; se uma correção não está desabilitada, notificação de sua operação e seu tratamento de resultado de teste pode cada um ser independentemente habilitado ou desabilitado. Quando a notificação de sua operação é habilitada, as notificações podem ser exibidas ou armazenadas localmente no sistema de computador alvo, ou podem ser enviadas como notificações 203 para um servidor de administração apropriado.Figure 2 is a data flow diagram showing a typical data exchange between computer systems according to the feature. The computer systems shown in Figure 2 (computer systems 210, 220, 221, 222, 230, 231, and 232) typically have some or all of the components shown and discussed in conjunction with Figure 1. On the patch distribution server. , the feature generates one or more corrections. These patches 201 are sent from a patch distribution server to one or more administration servers, such as administration servers 220 and 230. Each administration server, on the other hand, sends the patches to one or more target computer systems, such as target computer systems 221, 222, 231, and 232. In some embodiments (not shown), the patch distribution server sends patches directly to one or more target computer systems, or via a more indirect route than through a single administration server. Corrections received on a target computer system are processed on a target computer system as described in more detail below. An administration server may also send patch configuration commands 202 to one or more target computer systems, which apply patch configuration commands to reconfigure the operation of particular patches. As discussed in more detail below, a fix can be completely disabled; If a fix is not disabled, notification of its operation and its test result handling can each be independently enabled or disabled. When notification of your operation is enabled, notifications can be viewed or stored locally on the target computer system, or can be sent as notifications to an appropriate administration server.

[0043] A Figura 3 é um diagrama de fluxo que mostra etapas tipicamente executadas pelo recurso de modo a receber e processar uma nova correção. Na etapa 301, o recurso recebe uma correção. A correção recebida na etapa 301 pode ser ou uma correção de dados acionados ou uma correção de código acionado. Uma correção exemplar de dados acionados é mostrada na Tabela 1 abaixo. 1 <Softpatch Patch=“Q382429”> 2 <AffectedApplication AffectedExe=“sqlservr.exe”> 3 <AffectedVersion Version=“9.*”> 4 <AffectedModules Name=“SQLSORT.DLL”> 5 <Version“8.0.*,9.*”> 6 <Function Name=“SsrpEnumCore” Address= “0x0802E76B” 7 Param=“2” Paramtype=“LPSTR”> 8 <Filter MaxByteLength=“60” /> 9 <Resolution ActionType=“BOOL” Action= “FALSE” /> 10 </Function> 11 </Version> 12 <Version“10.*, ll.*”> 13 <Function Name=“SsrpEnumCore” Address= “0x0802D283” 14 Param=“2” Paramtype=“LPSTR”> 15 <Filter MaxByteLength=“128”/> 16 <Resolution ActionType=“BOOL” Action= “FALSE” /> 17 </Function> 18 </Version> 19 </AfFectedModules> 20 </AffectedVersion> 21 </AffectedApplication> 22 23 <Signature Hash=“MD5” Signature=“C509-64AA-9161-8C52- 24 9F6D-BF5A-AEF2-ECEl-0038-34Dl”/> 25 </Softpatch> TABELA 1 [0044] A linha 1 contém um único identificador para a correção. A linha 2 identifica a aplicação afetada pela correção. A linha 3 identifica a versão da aplicação afetada pela correção. A linha 4 o módulo executável afetado pela correção. A linha 5 identifica duas versões do módulo executável afetado - versões 8.O.* e 9* - para o qual as direções de correção são fornecidas. As linhas 6-10 contêm direções de correção para essas duas versões do módulo executável. As linhas 6-7 identificam a função a ser corrigida, seu endereço no módulo executável, seu parâmetro a ser testado pela correção, e o tipo do parâmetro a ser testado. A linha 8 indica que o parâmetro identificado nas linhas 6-7 deveria ser testado para determinar se seu comprimento excede 60 bytes. A linha 9 indica que a convocação da função deveria falhar se o teste tiver sucesso. A linha 12 identifica mais duas versões do módulo executável afetado - versões 10.* e 11.* - para o qual as direções de correção são fornecidas. As linhas 13-17 contêm direções de correção para essas duas versões do módulo executável. As linhas 13-14 identificam a função a ser corrigida, seu endereço no módulo executável, seu parâmetro a ser testado pela correção, e o tipo do parâmetro a ser testado. Pode ser visto que o endereço da função a ser corrigida no módulo executável identificado nas linhas 13-14 para as versões 10.* e 11.* é diferente do endereço da função a ser corrigida identificado nas linhas 6-7 para as versões 8.O.* e 9.*. A linha 15 indica que o parâmetro identificado nas linhas 13-14 deveria ser testado para determinar se o comprimento excede 128 bytes. A linha 16 indica que a convocação da função deveria falhar se o teste tiver sucesso. A correção pode especificar uma variedade de tipos de ação de tratamento de resultado, incluindo a falha da convocação da função corrigida, levantando uma exceção, terminando o processo na qual o módulo executável corrigido está sendo executado, ou corrigindo o valor ofensivo (tal como por truncando uma série muito longa). As linhas 23-25 contêm uma assinatura para a correção que ambas identificam a fonte da correção e verifica que a correção não foi alterada desde que deixou sua fonte.[0043] Figure 3 is a flow chart showing steps typically performed by the feature to receive and process a new correction. At step 301, the feature receives a fix. The correction received in step 301 can be either a triggered data correction or a triggered code correction. An exemplary correction of triggered data is shown in Table 1 below. 1 <Softpatch Patch = “Q382429”> 2 <AffectedApplication AffectedExe = “sqlservr.exe”> 3 <AffectedVersion Version = “9. *”> 4 <AffectedModules Name = “SQLSORT.DLL”> 5 <Version “8.0. *, 9. * ”> 6 <Function Name =“ SsrpEnumCore ”Address =“ 0x0802E76B ”7 Param =“ 2 ”Paramtype =“ LPSTR ”> 8 <Filter MaxByteLength =“ 60 ”/> 9 <Resolution ActionType =“ BOOL ”Action = “FALSE” /> 10 </Function> 11 </Version> 12 <Version “10. *, ll. *”> 13 <Function Name = “SsrpEnumCore” Address = “0x0802D283” 14 Param = “2” Paramtype = “ LPSTR ”> 15 <Filter MaxByteLength =“ 128 ”/> 16 <Resolution ActionType =“ BOOL ”Action =“ FALSE ”/> 17 </Function> 18 </Version> 19 </AfFectedModules> 20 </AffectedVersion> 21 < / AffectedApplication> 22 23 <Signature Hash = “MD5” Signature = “C509-64AA-9161-8C52-24 9F6D-BF5A-AEF2-ECEl-0038-34Dl” /> 25 </Softpatch> TABLE 1 [0044] The Line 1 contains a unique identifier for the correction. Line 2 identifies the application affected by the patch. Line 3 identifies the version of the application affected by the fix. Line 4 is the executable module affected by the fix. Line 5 identifies two versions of the affected executable module - versions 8.O. * and 9 * - for which correction directions are provided. Lines 6-10 contain correction directions for these two versions of the executable module. Lines 6-7 identify the function to be corrected, its address in the executable module, its parameter to be tested by the correction, and the type of parameter to be tested. Line 8 indicates that the parameter identified on lines 6-7 should be tested to determine if its length exceeds 60 bytes. Line 9 indicates that the function call should fail if the test succeeds. Line 12 identifies two more versions of the affected executable module - versions 10. * and 11. * - for which correction directions are provided. Lines 13-17 contain correction directions for these two versions of the executable module. Lines 13-14 identify the function to be corrected, its address in the executable module, its parameter to be tested by the correction, and the type of parameter to be tested. It can be seen that the address of the function to be corrected in the executable module identified on lines 13-14 for versions 10. * and 11. * is different from the address of the function to be corrected identified on lines 6-7 for versions 8. O. * and 9. *. Line 15 indicates that the parameter identified on lines 13-14 should be tested to determine if the length exceeds 128 bytes. Line 16 indicates that calling the function should fail if the test succeeds. The remediation can specify a variety of result-handling action types, including corrected function call failure, raising an exception, terminating the process in which the corrected executable module is running, or correcting the offending value (such as by truncating a very long series). Lines 23-25 contain a signature for the patch that both identifies the source of the patch and verifies that the patch has not changed since it left its source.

[0045] A tabela 2 abaixo contém uma versão de código acionado da correção mostrada na Tabela 1 acima. 1 00411A7E push 3Ch 2 00411A80 mov eax,dword ptr [str] 3 00411A83 push eax 4 00411A84 call ValidateStringLength (411082h) 5 00411A89 add esp,8 6 00411A8C movzx ecx,al 7 00411A8F test ecx,ecx 8 00411A91 je 411A9Ah 9 00411A93 jmp foo+2 (411 AD2h) 10 00411A9A xor eax,eax 11 00411A9C ret TABELA 2 [0046] As linhas 1-3 empurram parâmetros para a função de teste na pilha. A linha 4 chama a função de teste. As linhas 5-8 ramificam o código de retorno para a função de teste. Se a função de teste tiver sucesso, a linha 9 pula de volta para começar a execução do corpo da função corrigida. Se a função de teste falhar, as linhas 10-11 empurram um código de resultado de falha na pilha e retorna da função corrigida para cor da função corrigida. Para legibilidade, a Tabela 2 omite certos detalhes presentes em algumas correções de códigos acionados, incluindo uma assinatura verificável, instruções que testam para os valores correntes dos sinalizadores de configuração de correção, e instruções re-alocadas a partir do começo do código para a função corrigida.Table 2 below contains a triggered code version of the fix shown in Table 1 above. 1 00411A7E push 3Ch 2 00411A80 mov eax, dword ptr [str] 3 00411A83 push eax 4 00411A84 call ValidateStringLength (411082h) 5 00411A89 add esp, 8 7 00411A8F test ecx, jx 8 0011A foo + 2 (411 AD2h) 10 00411A9A xor eax, eax 11 00411A9C ret TABLE 2 [0046] Lines 1-3 push parameters to the test function on the stack. Line 4 calls the test function. Lines 5-8 branch the return code to the test function. If the test function succeeds, line 9 skips back to begin execution of the corrected function body. If the test function fails, lines 10-11 push a stack failure result code and return from the corrected function to color of the corrected function. For readability, Table 2 omits certain details present in some triggered code fixes, including a verifiable signature, instructions that test for the current values of the patch configuration flags, and instructions reallocated from the beginning of the code to the function. corrected.

[0047] Em algumas modalidades, correções de ambos os tipos podem conter informação adicional, incluindo, para cada uma ou mias versões do módulo executável a ser corrigido, uma assinatura de arquivo que pode ser usada para validar que uma instância particular do módulo executável é uma cópia apropriada dessa versão. Tal assina- tura de arquivo pode ser, por exemplo, um tamanho ou soma de verificação para a versão de módulo executável inteiro, ou o código esperado para ocorrer em um ponto particular no módulo executável, tal como a deslocamento na qual o módulo executável está para ser corrigido.In some embodiments, fixes of both types may contain additional information, including, for each or more versions of the executable module to be patched, a file signature that can be used to validate that a particular instance of the executable module is an appropriate copy of this version. Such a file signature can be, for example, a size or checksum for the entire executable module version, or code expected to occur at a particular point in the executable module, such as the offset at which the executable module is to be corrected.

[0048] Na etapa 302, se a correção é assinada com uma assinatura válida, então o recurso continua na etapa 303, também o recurso continua na etapa 301 para receber a próxima correção. Na etapa 303, o recurso adiciona a correção a uma tabela de correções local. Na etapa 304, o recurso inicializa a configuração inicial da correção, tal como através de enviá-la a uma configuração padrão.At step 302, if the fix is signed with a valid signature, then the feature continues at step 303, also the feature continues at step 301 to receive the next fix. At step 303, the feature adds the fix to a local fix table. At step 304, the feature initializes the initial patch configuration, such as by sending it to a default configuration.

[0049] A Figura 4 é um diagrama de estrutura de dados que mostra uma tabela de correções exemplar daquelas usadas pelo recurso. A tabela de correção 400 contém linhas, tal como linhas 401 e 402, cada uma dividida nas seguintes colunas: uma coluna identificadora de correção 411, contendo o identificador de correção extraído da correção; uma coluna de módulo executável 412, contendo informação identificando o módulo executável a ser corrigido, tal como seu nome; uma coluna de versões de módulo executável 413 identificando todas as versões do módulo executável identificado na coluna 412 para o qual a correção aplica; uma coluna de performance de teste habilitada 414, contendo o valor de configuração corrente para se o teste especificado pela correção deveria ser executado cada vez que a função corrigida é chamada; uma coluna de notificação de performance de teste habilitada 415, contendo o valor de configuração corrente para se uma notificação deveria ser gerada cada vez que o teste de correção é executado; uma coluna de notificação de resultado de teste habilitada 416, contendo o valor de configuração corrente para se a notificação deveria ser gerada cada vez que o teste de correção tiver sucesso; uma coluna de tratamento de resultado de teste habilitado 417, con- tendo o valor de configuração corrente para se o tratamento de resultado de correção deveria ser implementado quando o teste de correção falha; e uma coluna de correção 418 que contém um indicador para a própria correção, especificando um teste e tratamento de resultado de teste a serem executados cada vez que o teste falhar. Em algumas modalidades, ao invés de conter um indicador para a correção como mostrado, a coluna de correção 418 contém cada correção diretamente. Uma tabela de correção particular pode conter ou apontar para correções de vários tipos, tal como todas as correções de código acionado, todas as correções de dados acionados, ou uma combinação de correções de código acionado e de correções de dados acionados.Figure 4 is a data structure diagram showing an exemplary patch table of those used by the feature. Correction table 400 contains rows, such as rows 401 and 402, each divided into the following columns: a correction identifier column 411, containing the correction identifier extracted from the correction; an executable module column 412 containing information identifying the executable module to be corrected, such as its name; a column of executable module versions 413 identifying all versions of the executable module identified in column 412 to which the fix applies; an enabled test performance column 414 containing the current configuration value for whether the test specified by the correction should be performed each time the corrected function is called; an enabled test performance notification column 415 containing the current configuration value for whether a notification should be generated each time the patch test is run; an enabled test result notification column 416 containing the current configuration value for whether notification should be generated each time the correction test succeeds; an enabled test result treatment column 417, containing the current configuration value for whether correction result treatment should be implemented when the correction test fails; and a correction column 418 that contains an indicator for the correction itself, specifying a test and test result treatment to be performed each time the test fails. In some embodiments, instead of containing an indicator for the correction as shown, the correction column 418 contains each correction directly. A particular patch table can contain or point to patches of various types, such as all triggered code fixes, all triggered data fixes, or a combination of triggered code fixes and triggered data fixes.

[0050] Na etapa 305, uma vez que o recurso adicionou a correção recebida à tabela de correção e inicializou suas configurações, a correção está disponível para ser automaticamente aplicada pelo recurso para o módulo executável. Na etapa 305, o recurso pode utilizar uma variedade de aproximações para aplicar a correção, incluindo aquelas descritas na aplicação incorporada por referência, bem como interceptação de chamado de função de tempo real, e/ou reescrever o código de (1) módulos executáveis já carregados, (2) uma ou mais imagens de disco do módulo executável, ou (3) instâncias de módulos executáveis carregados pelo carregador de sistema operacional. Depois da etapa 305, o recurso continua na etapa 301 para receber a próxima correção.In step 305, once the feature has added the received fix to the fix table and initialized its settings, the fix is available to be automatically applied by the feature to the executable module. At step 305, the feature can use a variety of approximations to apply the fix, including those described in the embedded application by reference, as well as real-time function call interception, and / or rewrite code from (1) executable modules already loaded, (2) one or more executable module disk images, or (3) instances of executable modules loaded by the operating system loader. After step 305, the feature continues at step 301 to receive the next fix.

[0051] A Figura 5 é um diagrama de fluxo que mostra etapas tipicamente executadas pelo recurso de modo a atualizar instruções de configuração para uma correção particular. Na etapa 501, o recurso recebe instruções de configuração para uma correção particular, tal como a partir de um administrador. Em algumas modalidades, tais instruções de configuração podem ser geradas por administradores usando políticas de grupo. Na etapa 502, o recurso atualiza a correção que é configurada na tabela de correção de acordo com as instruções recebidas. Depois da etapa 502, o recurso continua na etapa 501 para receber as próximas instruções de configuração.[0051] Figure 5 is a flowchart showing steps typically performed by the feature to update configuration instructions for a particular fix. At step 501, the feature receives configuration instructions for a particular fix, such as from an administrator. In some embodiments, such configuration instructions may be generated by administrators using group policies. At step 502, the feature updates the correction that is set in the correction table according to the instructions received. After step 502, the feature continues at step 501 to receive the next setup instructions.

[0052] A Figura 6 é um diagrama de fluxo que mostra etapas tipicamente executadas pelo recurso para executar a validação de parâmetro especificado pela correção. Na etapa 601, uma função corrigida é chamada. Na etapa 602, se o teste é habilitado para a correção que afeta a função chamada, então o recurso continua na etapa 603, também o recurso continua na etapa 601 para processar o próximo chamado para uma função corrigida. Na etapa 603, se a notificação de performance de teste está habilitada para a correção, então o recurso continua na etapa 604, também o recurso continua na etapa 605. Na etapa 604, o recurso gera uma notificação de que o teste foi executado. As etapas 604, 608, e 610 podem envolver exibição e armazenamento de uma indicação no sistema de computador alvo de que o teste foi satisfeito, e/ou transmissão de tal indicação para um sistema de computador remoto para exibir ou conectando lá.[0052] Figure 6 is a flow diagram showing steps typically performed by the feature to perform parameter validation specified by the correction. At step 601, a corrected function is called. At step 602, if the test is enabled for the correction that affects the called function, then the feature continues at step 603, also the feature continues at step 601 to process the next call for a corrected function. At step 603, if test performance notification is enabled for remediation, then the feature continues at step 604, so the feature continues at step 605. At step 604, the feature generates a notification that the test has run. Steps 604, 608, and 610 may involve displaying and storing an indication on the target computer system that the test has been met, and / or transmitting such an indication to a remote computer system for viewing or connecting there.

[0053] Na etapa 605, o recurso executa o teste de validação especificado pela correção. Em algumas modalidades, a etapa 605 envolve o chamado de uma de um grupo de rotinas padrão utilizadas pelo recurso para teste. Na etapa 606, se o teste executado na etapa 605 é satisfeito, então o recurso continua na etapa 601, também o recurso continua na etapa 607. Na etapa 607, se a notificação de resultado de teste está habilitada para a correção, então o recurso continua na etapa 608, também o recurso continua na etapa 609. Na etapa 608, o recurso gera uma notificação de que o teste não foi satisfeito. Na etapa 609, se o tratamento de resultado de teste é habilitado para a correção, então o recurso continua na etapa 610, também o recurso continua na etapa 601. Na etapa 601, o recurso executa o tratamento de resultado de teste especificado pela correção. Depois da etapa 601, o recurso continua na etapa 601.At step 605, the feature runs the validation test specified by the fix. In some embodiments, step 605 involves calling one of a group of standard routines used by the test facility. At step 606, if the test performed at step 605 is satisfied, then the feature continues at step 601, also the feature continues at step 607. At step 607, if test result notification is enabled for correction, then the feature continues at step 608, the feature also continues at step 609. At step 608, the feature generates a notification that the test has not been met. At step 609, if test result handling is enabled for the fix, then the feature continues at step 610, so the feature continues at step 601. At step 601, the feature performs the test result handling specified by the fix. After step 601, the feature continues at step 601.

[0054] Será apreciado por aqueles versados na técnica que o recurso descrito acima pode ser diretamente adaptado ou estendido de várias maneiras. Por exemplo, o recurso pode ser usado para aplicar uma variedade de diferentes tipos de correções de uma variedade de formas em uma variedade de localizações em módulos executáveis de uma variedade de tipos para uma variedade de propósitos. Além disso, enquanto correções são descritas aqui como contendo testes de validação de valor que indicam um problema quando eles falham, o recurso pode também ser implementado usando testes de invalidade de valor que indicam um problema quando eles têm sucesso. Em algumas modalidades, cada teste é acompanhado por uma indicação de se seu sucesso ou falha indica um problema. Enquanto a descrição precedente faz referência a modalidades preferidas, o escopo da invenção é definido unicamente pelas reivindicações que seguem e os elementos citados ali.It will be appreciated by those skilled in the art that the feature described above can be directly adapted or extended in various ways. For example, the feature can be used to apply a variety of different patch types in a variety of ways to a variety of executable module locations of a variety of types for a variety of purposes. In addition, while fixes are described here as containing value validation tests that indicate a problem when they fail, the feature can also be implemented using value invalidity tests that indicate a problem when they succeed. In some modalities, each test is accompanied by an indication of whether its success or failure indicates a problem. While the foregoing description refers to preferred embodiments, the scope of the invention is defined solely by the following claims and the elements cited therein.

REIVINDICAÇÕES

Claims (26)

1. Método em um sistema de computação tendo um processador, uma memória não volátil e uma memória volátil, o método para aplicar um patch de software a múltiplas instâncias de um módulo executável compreendendo: usar um agente de patching automatizado; receber o patch de software; em resposta à receber o patch de software, sem intervenção do usuário: caracterizado pelo fato de que ainda compreende: detectar, pelo sistema de computação, um primeiro carregamento que transferiu uma primeira instância de um módulo executável ao qual o patch de software recebido pertence a partir da memória não volátil para a memória volátil; em resposta à detecção do primeiro carregamento, aplicar, pelo sistema de computação, o patch de software recebido na primeira instância do módulo executável na memória volátil para modificar uma porção da primeira instância do módulo executável, de modo que o comportamento da primeira instância do módulo executável seja modificado; detectar, pelo sistema de computação, um segundo carregamento que transferiu uma segunda instância do módulo executável a partir da memória não volátil para a memória volátil; e em resposta à detecção do segundo carregamento, aplicar, pelo sistema de computação, o patch de software recebido na segunda instância do módulo executável na memória volátil para modificar uma porção da segunda instância do módulo executável, de modo que o comportamento da segunda instância do módulo executável seja modificado.Method in a computer system having a processor, nonvolatile memory and volatile memory, the method of applying a software patch to multiple instances of an executable module comprising: using an automated patching agent; receive the software patch; in response to receiving the software patch without user intervention: characterized by the fact that it further comprises: detecting, by the computing system, a first load that has transferred a first instance of an executable module to which the received software patch belongs to from nonvolatile memory to volatile memory; In response to first load detection, the computer system applies the software patch received on the first instance of the executable module to volatile memory to modify a portion of the first instance of the executable module, so that the behavior of the first instance of the module executable is modified; detect, by the computing system, a second load that has transferred a second instance of the executable module from nonvolatile memory to volatile memory; and in response to detection of the second load, the computer system applies the software patch received on the second instance of the executable module to volatile memory to modify a portion of the second instance of the executable module, so that the behavior of the second instance of the executable module. executable module to be modified. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o módulo executável é um módulo independentemente executável.Method according to claim 1, characterized in that the executable module is an independently executable module. 3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o módulo executável é uma biblioteca.Method according to claim 1, characterized in that the executable module is a library. 4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o módulo executável é um script.Method according to claim 1, characterized in that the executable module is a script. 5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o módulo executável é um módulo de código gerenciado.Method according to claim 1, characterized in that the executable module is a managed code module. 6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dois patches de software são recebidos pertencendo ao mesmo módulo executável, e ambos os patches de software recebidos são aplicados para modificar o comportamento da primeira do módulo executável.Method according to claim 1, characterized in that the two software patches are received belonging to the same executable module, and both received software patches are applied to modify the behavior of the first executable module. 7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que os dois patches recebidos pertencem a diferentes localizações na primeira instância do módulo executável.Method according to claim 6, characterized in that the two patches received belong to different locations in the first instance of the executable module. 8. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que os dois patches recebidos pertencem às mesmas localizações na primeira instância do módulo executável.Method according to claim 6, characterized in that the two patches received belong to the same locations in the first instance of the executable module. 9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que os patches recebidos são aplicados de modo que ambas as modificações de comportamento especificadas pelos patches são exibidas pela primeira instância corrigida do módulo executável.Method according to claim 8, characterized in that the patches received are applied such that both behavior modifications specified by the patches are displayed by the first corrected instance of the executable module. 10. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que os patches recebidos são aplicados de modo que somente a modificação de comportamento de uma dominante das dois patches de software recebidos é exibida pela primeira instância do módulo executável.Method according to claim 8, characterized in that the received patches are applied such that only the behavior modification of a dominant of the two received software patches is displayed by the first instance of the executable module. 11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que o patch de software dominante recebido contém uma indicação explícita de que é para dominar um ou mais patches de software.Method according to claim 10, characterized in that the received dominant software patch contains an explicit indication that it is to master one or more software patches. 12. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira instância do módulo executável exibe o comportamento modificado em um tempo depois que o patch de software recebido é aplicado.Method according to claim 1, characterized in that the first instance of the executable module exhibits the modified behavior at a time after the received software patch is applied. 13. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende usar o agente de patch automatizado, aplicando o patch de software recebido em uma imagem de disco para o módulo executável.Method according to claim 1, characterized in that it further comprises using the automated patching agent by applying the software patch received on a disk image to the executable module. 14. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira instância do módulo executável à qual o patch de software pertence é identificada dentre uma pluralidade de instâncias do módulo executável ao qual o patch de software pertence, e em que o patch de software recebido é aplicado usando informação de instância específica do módulo para a primeira instância do módulo executável contida no patch recebido.Method according to claim 1, characterized in that the first instance of the executable module to which the software patch belongs is identified from a plurality of instances of the executable module to which the software patch belongs, and in which The received software patch is applied using module specific instance information for the first instance of the executable module contained in the received patch. 15. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que a pluralidade de instâncias do módulo executável é, cada uma, uma versão diferente do mesmo módulo executável.A method according to claim 14, characterized in that the plurality of instances of the executable module is each a different version of the same executable module. 16. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que a informação de instância específica do módulo para a primeira instância do módulo executável contida no patch recebido especifica um deslocamento dentro da primeira instância do módulo executável identificado no qual modifica o comportamento da primeira instância do módulo executável.Method according to claim 14, characterized in that the module-specific instance information for the first executable module instance contained in the received patch specifies an offset within the first identified executable module instance in which it modifies the behavior. of the first instance of the executable module. 17. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que a informação de instância específica do módu- Io para a primeira instância do módulo executável contida no patch recebido ainda especifica o conteúdo da primeira instância do módulo executável que é esperado para aparecer em um deslocamento especificado antes do patch de software recebido ser aplicado.Method according to claim 16, characterized in that the module-specific instance information for the first instance of the executable module contained in the received patch still specifies the contents of the first instance of the executable module that is expected to occur. appear at a specified offset before the received software patch is applied. 18. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o patch de software recebido contem código especificando como modificar o comportamento da primeira instância do módulo executável.Method according to claim 1, characterized in that the received software patch contains code specifying how to modify the behavior of the first instance of the executable module. 19. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o patch de software recebido contem dados especificando como modificar o comportamento da primeira instância do módulo executável.Method according to claim 1, characterized in that the received software patch contains data specifying how to modify the behavior of the first instance of the executable module. 20. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o patch de software recebido especifica modificar o comportamento da primeira instância do módulo executável para adicionar um teste e lógica de tratamento de resultados de teste para uma parte designada da primeira instância do módulo executável.Method according to claim 1, characterized in that the received software patch specifies to modify the behavior of the first instance of the executable module to add a test and test result handling logic to a designated part of the first instance. of the executable module. 21. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o patch de software recebido especifica modificar o comportamento da primeira instância do módulo executável para adicionar funcionalidade da validação de parâmetro a uma função designada dentro da primeira instância do módulo executável.Method according to claim 1, characterized in that the received software patch specifies to modify the behavior of the first instance of the executable module to add parameter validation functionality to a function assigned within the first instance of the executable module. 22. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o patch de software recebido especifica modificar o comportamento da primeira instância do módulo executável para adicionar funcionalidade da validação de parâmetro a uma função designada dentro da primeira instância do módulo executável ao identificar uma função de validação de parâmetro padrão que é para ser chamada como parte da execução da função designada.Method according to claim 1, characterized in that the received software patch specifies to modify the behavior of the first instance of the executable module to add parameter validation functionality to a function assigned within the first instance of the executable module to identify a default parameter validation function that is to be called as part of the execution of the assigned function. 23. Método, de acordo com a reivindicação 1, caracteriza- do pelo fato de que o comportamento modificado da primeira instância do módulo executável pode ser habilitado ou desabilitado usando uma interface de configuração de patch.Method according to claim 1, characterized in that the modified behavior of the first instance of the executable module can be enabled or disabled using a patch configuration interface. 24. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o acesso do comportamento modificado da primeira instância do módulo executável pode ser habilitado ou desabilitado usando uma interface de configuração de patch.Method according to claim 1, characterized in that access to the modified behavior of the first instance of the executable module can be enabled or disabled using a patch configuration interface. 25. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o patch de software é recebido ao permitir o patch de software a ser copiado para uma localização predeterminada, e em que a identificação e a aplicação são executadas automaticamente em resposta ao patch de software sendo copiada para a localização pré-determinada.A method according to claim 1, characterized in that the software patch is received by allowing the software patch to be copied to a predetermined location, and wherein the identification and application are performed automatically in response to the software patch being copied to the predetermined location. 26. Memória de armazenamento legível por computador cujo conteúdo faz um sistema de computação sistema de computação tendo uma memória não volátil e uma memória volátil para executar um método para aplicar um patch de software a uma instância de módulo executável correntemente carregado, compreendendo: usar um agente de patching automatizado; receber o patch de software; em resposta à receber o patch de software, detectar, pelo sistema de computação, um primeiro carregamento que transferiu uma primeira instância de um módulo executável ao qual o patch de software recebido pertence a partir da memória não volátil para a memória volátil; caracterizada pelo fato de que ainda compreende: em resposta à detecção do primeiro carregamento, aplicar, pelo sistema de computação, o patch de software recebido na primeira instância do módulo executável na memória volátil para modificar uma porção da primeira instância do módulo executável, de modo que o comportamento da primeira instância do módulo executável seja modificado; detectar, pelo sistema de computação, um segundo carregamento que transferiu uma segunda instância do módulo executável a partir da memória não volátil para a memória volátil; e em resposta à detecção do segundo carregamento, aplicar, pelo sistema de computação, o patch de software recebido na segunda instância do módulo executável na memória volátil para modificar uma porção da segunda instância do módulo executável, de modo que o comportamento da segunda instância do módulo executável seja modificado.26. Computer readable storage memory whose contents make a computing system a computing system having nonvolatile memory and volatile memory for performing a method of applying a software patch to a currently loaded executable module instance, comprising: using a automated patching agent; receive the software patch; in response to receiving the software patch, detecting by the computer system a first load that has transferred a first instance of an executable module to which the received software patch belongs from nonvolatile memory to volatile memory; characterized by the fact that it further comprises: in response to first load detection, the computer system applies the software patch received on the first instance of the executable module to volatile memory to modify a portion of the first instance of the executable module so as to that the behavior of the first instance of the executable module be modified; detect, by the computing system, a second load that has transferred a second instance of the executable module from nonvolatile memory to volatile memory; and in response to detection of the second load, the computer system applies the software patch received on the second instance of the executable module to volatile memory to modify a portion of the second instance of the executable module, so that the behavior of the second instance of the executable module. executable module to be modified.

Family

ID=

Similar Documents

Publication Publication Date Title
US9092301B2 (en) Efficient patching
US7559058B2 (en) Efficient patching
US7890946B2 (en) Efficient patching
US10871955B2 (en) System and method for providing firmware data updates
US8286238B2 (en) Method and apparatus for run-time in-memory patching of code from a service processor
US20100088740A1 (en) Methods for performing secure on-line testing without pre-installation of a secure browser
ZA200503110B (en) Efficient patching
US20230359741A1 (en) Trusted boot method and apparatus, electronic device, and readable storage medium
US20190163458A1 (en) Managing Removal and Modification of Installed Programs on a Computer Device
US11704412B2 (en) Methods and systems for distribution and integration of threat indicators for information handling systems
BRPI0501650B1 (en) Method for applying a software patch to multiple instances of an executable module and computer readable storage memory
WO2020013810A1 (en) Storing new settings for write-protected systems on non-write-protected storage
CA2505280A1 (en) Efficient patching
Banerjee et al. Oracle Database Administrator's Reference, 11g Release 1 (11.1) for Linux and UNIX-Based Operating Systems B32009-10